掰一掰GitHub上優秀的大資料專案

行者武松發表於2017-07-03

VMware CEO Pat Gelsinger曾說:

 資料科學是未來,大資料分析則是開啟未來之門的鑰匙

企業正在迅速用新技術武裝自己以便從大資料專案中獲益。各行業對大資料分析人才的需求也迫使我們升級自己的技能以便尋找更好的職業發展。

跳槽之前最好先搞清楚一個崗位會接觸到的專案型別,這樣你才能掌握所有需要的技能,工作的效率也會更高。

下面我們儘量列出了一些流行的開源大資料專案。根據它們各自的授權協議,你或許可以在個人或者商業專案中使用這些專案的原始碼。寫作本文的目的也就是為大家介紹一些解決大資料相關問題可能會用到的工具。

20160126020726658.png

  1.Apache Mahout

我 們可以使用Apache
Mahout來快速建立高效擴充套件性又好的機器學習應用。Mahout結合了諸如H2O演算法、Scala、Spark和Hadoop
MapReduce等模組,為開發人員提供了一個構建可擴充套件演算法的環境。現在最新的版本是去年11月6日釋出的0.11.1版本。

Apache
Mahout支援一個叫做Samsara的數學環境,使用者可以在Samsara中使用它提供的常見演算法來開發自己的數學解決方案。Samsara對於線性

代數、資料結構和統計操作都有著很好的支援,而且可以通過Scala的Mahout擴充套件或Mahout庫來進行定製。Samara對很多常見演算法都進行了

重寫因此速度上有一定的提升。這裡我們能列出的一些演算法包括:樸素貝葉斯分類器、矩陣分解、協同過濾以及神經網路。新加入的相似性分析還可以通過分析使用者
的點選來實現共現推薦演算法。

Apache Mahout GitHub地址:https://github.com/apache/mahout

2.Apache Spark

Apache
Spark是一個為實時大資料分析所設計的開源資料處理引擎。目前Spark的大使用者有雅虎、騰訊和百度,使用Spark處理的資料在PB級別,叢集節點
數目也超過8000。Apache Spark是GitHub上最大的資料處理專案之一,有超過750名開發人員都曾對專案做出過貢獻。

與Hadoop MapReduce相比Apache
Spark在記憶體中的執行速度快100倍,在硬碟中執行速度的差距也在10倍以上。Spark能夠達到這樣的速度靠的是DAG引擎和記憶體內計算效能的提
升。開發語言可以使用Java、Python、Scala和R,此外Spark還提供了差不多100種集合操作符以便開發人員構建並行應用。

20160126020730681.png

圖:Spark生態系統

Apache Spark為機器學習、Spark
Streaming和GraphX提供了眾多強大的庫,其中也包括為DataFrame和SQL所設計的庫。開發人員可以用這些標準庫來提升應用的效能和
開發效率。Spark可以執行於很多環境中,如獨立的叢集、Hadoop YARN、EC2和Apache Mesos。Apache
Spark也能從Hive、HBase、Tachyon、Cassandra和HDFS等資料來源讀取資料。

Apache Spark GitHub地址:https://github.com/apache/spark

3.Apache Storm

Apache
Storm的設計針對的是流式資料,不過對於大資料的實時分析它也是很可靠的計算系統。它同樣是一個開源專案而且開發人員可以使用所有的主流高階語言。
Apache Storm主要用於以下應用:線上機器學習、連續計算、實時分析、ETL、分散式RPC。Apache
Storm有配置方便、可用性高、容錯性好及擴充套件性好等諸多優點,處理速度也極快,每個節點每秒可以處理數百萬個tuple。

目前最新的Apache Storm是去年11月5日釋出的0.9.6版。

Storm
叢集中有三種節點:Nimbus、Zookeeper和Supervisor。Nimbus與Hadoop的JobTracker類似,主要用於運算的上
傳、程式碼的分發和計算的監測。Zookeeper節點的作用是Storm叢集的協調,Supervisor節點則是實現對worker的控制。

Apache Storm GitHub地址https://github.com/apache/storm/

4.NTLK(自然語言處理工具箱)

NTLK是用於開發Python自然語言相關應用的一個工具包。它自帶用於斷句、分類、標記、詞幹提取、語義推理和語法分析的庫,此外還有一個較為活躍的社群。對於語言學的實證研究、人工智慧、認知科學、機器學習和資訊提取來說都是強大的工具,當然你得用Python。

自動補全是NTLK可能的用處之一。輸入部分文字,藉助NTLK可以推測可能的完整句子,現在很多搜尋引擎都有這個功能。其他可能的應用還包括文字歸類、地址分析和智慧語音命令等。

NTLK GitHub地址:https://github.com/nltk/nltk

5.mLoss

mLoss是機器學習開源軟體的英文縮寫,它將很多開源軟體集合到了同一個平臺。mLoss所收集的開源專案都經過審閱並附有對專案的簡短介紹。mLoss本身並不是一個軟體而是一個支援機器學習應用開源的網站。

mLoss網站上列出的開源軟體有各自專案不同的48種授權協議,作者數量高達1100人。mLoss是到目前為止最大的機器學習軟體庫,共支援107種資料型別,所涉及的作業系統有26個,使用的程式語言也有51種。

mLoss網站上列出的軟體中較為流行的有:

dlib
ml:機器學習演算法的C++庫R-Cran-Caret:分類和迴歸訓練庫Shogun:為SVM所設計的機器學習工具箱,適用於Python、Matlab、Octave和RArmadillo:一個線性代數C++庫MLPY:以NumPy和SciPY為基礎構建的Python機器學習庫MyMediaLite:一個推薦器演算法庫mLoss網站:http://mloss.org/

6.Julia

Julia是為技術計算所設計的一門動態高階語言。雖然它的語法和其他技術計算環境的語法差不多,但Julia現在的使用範圍還比較窄。Julia支援分散式平行計算還有著完備的高精度數學函式庫。

JuliaStats是一個機器學習和統計工具的合集,目的是幫助Julia使用者建立可擴充套件且高效的應用。下面列出了JuliaStats中包括的一些程式:

StatsBase:從名字我們就能看出StatsBase提供的是統計學相關的基本功能,比如描述統計、統計動差、樣本函式、計數、排序、互相關、自相關以及加權統計等。DataArrays:
一個允許資料為空的陣列型別,對重複資料的計算進行了優化。DataFrames:
表資料型別,提供包括索引、合併以及公式等操作。Distribution:用於計算分佈的庫,功能包括一元分佈、多元分佈、概率密度函式、累積分佈函式以及最大似然估計。Multivariate

Stats:為多元統計分析所設計,功能包括降維、線性迴歸、線性判別分析以及多維標度。MLBase:包括資料預處理、模型選擇以及交叉驗證等機器學習演算法。Clustering:包括聚類分析所用到的演算法如k-means、k-medoids以及多種評估方法。

這裡我們只列出了一部分資料分析和機器學習相關的庫,其他庫包括假設檢驗、核密度估計、非負矩陣分解NMF、廣義線性模型GLM、馬爾科夫鏈蒙特卡洛方法MCMC以及時序分析等。所有庫的原始碼都可以在GitHub上找到。

Julia GitHub地址:https://github.com/JuliaStats

7.Scikit-Learn

Scikit-Learn是為機器學習所設計的開源Python庫。它基於SciPy、NumPy和Matplotlib開發,稱得上是一款資料分析和資料探勘的利器。Scikit-Learn的授權協議允許個人和商業使用者使用。

Scikit-Learn主要用於:

聚類:識別資料中的不同類別。演算法包括最鄰近搜尋、支援向量機和隨機森林,可以用於影像識別和垃圾郵件識別等應用。迴歸:用於連續變數的預測。演算法包括嶺迴歸、支援向量迴歸、套索迴歸等。應用包括股票價格、天氣以及電力負載的預測。降維:用於減少隨機變數的個數。演算法包括主成分分析、特徵選擇、喬里斯基分解和矩陣分解。資料處理:特徵提取與資料預處理功能可以將原始資料轉換成有利於機器學習應用處理的格式。

Scikit-Learn GitHub地址:https://github.com/scikit-learn/scikit-learn

本文中我們列出的這些GitHub專案應用頗為流行,而且這些工具和軟體已經被用於解決實際中的大資料問題,希望本文能夠對大家的大資料分析之路有所啟發。

本文轉自d1net(轉載)


相關文章