VMware CEO Pat Gelsinger曾說:
數據科學是未來,大數據分析則是打開未來之門的鑰匙
企業正在迅速用新技術武裝自己以便從大數據項目中獲益。各行業對大數據分析人才的需求也迫使我們升級自己的技能以便尋找更好的職業發展。
跳槽之前最好先搞清楚一個崗位會接觸到的項目類型,這樣你才能掌握所有需要的技能,工作的效率也會更高。
下面我們盡量列出了一些流行的開源大數據項目。根據它們各自的授權協議,你或許可以在個人或者商業項目中使用這些項目的源代碼。寫作本文的目的也就是為大家介紹一些解決大數據相關問題可能會用到的工具。
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種集合操作符以便開發人員構建并行應用。
圖: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項目應用頗為流行,而且這些工具和軟件已經被用于解決實際中的大數據問題,希望本文能夠對大家的大數據分析之路有所啟發。