本文簡介:資料科學家的常用工具與基本思路,資料分析師和資料科學家使用的工具綜合概述,包括開源的技術平臺相關工具、挖掘分析處理工具、其它常見工具等幾百種,幾十個大類,部分網址。為資料科學教育和知識分享,提高資料科學人員素質。

3417eb9bbd901849d5af37資料科學融合了多門學科並且建立在這些學科的理論和技術之上,包括數學、概率模型、統計學、機器學習、資料倉儲、視覺化等。在實際應用中,資料科學包括資料的收集、清洗、分析、視覺化以及資料應用整個迭代過程,最終幫助組織制定正確的發展決策資料科學的從業者稱為資料科學家。資料科學家有其獨特的基本思路與常用工具,秦隴紀全面梳理資料分析師和資料科學家使用的工具包,包括開源的技術平臺相關工具、挖掘分析處理工具、其它常見工具等幾百種,幾十個大類,部分網址,歡迎大家積極傳播!
資料科學家是有著開闊視野的複合型人才,他們既有堅實的資料科學基礎,如數學、統計學、計算機學等,又具備廣泛的業務知識和經驗資料科學家通過精深的技術和專業知識在某些科學學科領域解決複雜的資料問題,從而制定出適合不同決策人員的大資料計劃和策略。資料分析師和資料科學家使用的工具在網上的MOOC有提供,比如2016年2月1日約翰-霍普金斯大學Coursera資料科學專業化課程等網路課程。資料科學家的常用工具與基本思路,並對資料、相關問題和資料分析師和資料科學家使用的工具做了綜合概述。

資料科學家和大資料技術人員的工具包:A.大資料技術平臺相關2015最佳工具,B.開源大資料處理工具彙總,C.常見的資料探勘分析處理工具。

A.大資料技術平臺相關2015最佳工具

InfoWorld在分散式資料處理、流式資料分析、機器學習以及大規模資料分析領域精選出了2015年的開源工具獲獎者,下面我們來簡單介紹下這些獲獎的技術工具。

1. Spark

在Apache的大資料專案中,Spark是最火的一個,特別是像IBM這樣的重量級貢獻者的深入參與,使得Spark的發展和進步速度飛快。與Spark產生最甜蜜的火花點仍然是在機器學習領域。去年以來DataFrames API取代SchemaRDD API,類似於R和Pandas的發現,使資料訪問比原始RDD介面更簡單。Spark的新發展中也有新的為建立可重複的機器學習的工作流程,可擴充套件和可優化的支援各種儲存格式,更簡單的介面來訪問機器學習演算法,改進的叢集資源的監控和任務跟蹤。spark-packages.org網站上有超過100個第三方貢獻的連結庫擴充套件,增加了許多有用的功能。

2. Storm

Storm是Apache專案中的一個分散式計算框架專案,主要應用於流式資料實時處理領域。他基於低延時互動模式理念,以應對複雜的事件處理需求。和Spark不同,Storm可以進行單點隨機處理,而不僅僅是微批量任務,並且對記憶體的需求更低。在我的經驗中,他對於流式資料處理更有優勢,特別是當兩個資料來源之間的資料快速傳輸過程中,需要對資料進行快速處理的場景。Spark掩蓋了很多Storm的光芒,但其實Spark在很多流失資料處理的應用場景中並不適合。Storm經常和Apache Kafka一起配合使用。

3. H2O

H2O是一種分散式的記憶體處理引擎用於機器學習,它擁有一個令人印象深刻的陣列的演算法。早期版本僅僅支援R語言,3.0版本開始支援Python和Java語言,同時它也可以作為Spark在後端的執行引擎。使用H2O的最佳方式是把它作為R環境的一個大記憶體擴充套件,R環境並不直接作用於大的資料集,而是通過擴充套件通訊協議例如REST API與H2O叢集通訊,H2O來處理大量的資料工作。幾個有用的R擴充套件包,如ddply已經被打包,允許你在處理大規模資料集時,打破本地機器上記憶體容量的限制。你可以在EC2上執行H2O,或者Hadoop叢集/YARN叢集,或者Docker容器。用蘇打水(Spark+ H2O)你可以訪問在叢集上並行的訪問Spark RDDS,在資料幀被Spark處理後。再傳遞給一個H2O的機器學習演算法。

4. Apex

Apex是一個企業級的大資料動態處理平臺,即能夠支援即時的流式資料處理,也可以支援批量資料處理。它可以是一個YARN的原生程式,能夠支援大規模、可擴充套件、支援容錯方法的流式資料處理引擎。它原生的支援一般事件處理並保證資料一致性(精確一次處理、最少一次、最多一次)。以前DataTorrent公司開發的基於Apex的商業處理軟體,其程式碼、文件及架構設計顯示,Apex在支援DevOps方面能夠把應用開發清楚的分離,使用者程式碼通常不需要知道他在一個流媒體處理叢集中執行。Malhar是一個相關專案,提供超過300種常用的實現共同的業務邏輯的應用程式模板。Malhar的連結庫可以顯著的減少開發Apex應用程式的時間,並且提供了連線各種儲存、檔案系統、訊息系統、資料庫的聯結器和驅動程式。並且可以進行擴充套件或定製,以滿足個人業務的要求。所有的malhar元件都是Apache許可下使用。

5. Druid

Druid在今年二月轉為了商業友好的Apache許可證,是一個基於“事件流的混合引擎,能夠滿足OLAP解決方案。最初他主要應用於廣告市場的線上資料處理領域,德魯伊可以讓使用者基於時間序列資料做任意和互動的分析。一些關鍵的功能包括低延遲事件處理,快速聚合,近似和精確的計算。Druid的核心是一個使用專門的節點來處理每個部分的問題自定義的資料儲存。實時分析基於實時管理(JVM)節點來處理,最終資料會儲存在歷史節點中負責老的資料。代理節點直接查詢實時和歷史節點,給使用者一個完整的事件資訊。測試表明50萬事件資料能夠在一秒內處理完成,並且每秒處理能力可以達到100萬的峰值,Druid作為線上廣告處理、網路流量和其他的活動流的理想實時處理平臺。

6. Flink

Flink的核心是一個事件流資料流引擎。雖然表面上類似Spark,實際上Flink是採用不同的記憶體中處理方法的。首先,Flink從設計開始就作為一個流處理器。批處理只是一個具有開始和結束狀態的流式處理的特殊情況,Flink提供了API來應對不同的應用場景,無論是API(批處理)和資料流API。MapReduce的世界的開發者們在面對DataSet處理API時應該有賓至如歸的感覺,並且將應用程式移植到Flink非常容易。在許多方面,Flink和Spark一樣,其的簡潔性和一致性使他廣受歡迎。像Spark一樣,Flink是用Scala寫的。

7. Elasticsearch

Elasticsearch是基於Apache Lucene搜尋分散式檔案伺服器。它的核心,Elasticsearch基於JSON格式的近乎實時的構建了資料索引,能夠實現快速全文檢索功能。結合開源Kibana BI顯示工具,您可以建立令人印象深刻的資料視覺化介面。Elasticsearch易於設定和擴充套件,他能夠自動根據需要使用新的硬體來進行分片。他的查詢語法和SQL不太一樣,但它也是大家很熟悉的JSON。大多數使用者不會在那個級別進行資料互動。開發人員可以使用原生JSON-over-HTTP介面或常用的幾個開發語言進行互動,包括Ruby,Python,PHP,Perl,Java,JavaScript等。

8. SlamData

如果你正在尋找一個使用者友好的工具,能理解最新流行的NoSQL資料的視覺化工具,那麼你應該看一看SlamData。SlamData允許您用熟悉的SQL語法來進行JSON資料的巢狀查詢,不需要轉換或語法改造。該技術的主要特點之一是它的聯結器。從MongoDB,HBase,Cassandra和Apache的Spark,SlamData同大多數業界標準的外部資料來源可以方便的進行整合,並進行資料轉換和分析資料。你可能會問:“我不會有更好的資料池或資料倉儲工具嗎?請認清這是在NoSQL領域。

9. Drill

Drill是一種用於大型資料集的互動分析的分散式系統,由谷歌的Dremel催生。Drill專為巢狀資料的低延遲分析設計,它有一個明確的設計目標,靈活的擴充套件到10000臺伺服器來處理查詢記錄資料,並支援兆級別的資料記錄。巢狀的資料可以從各種資料來源獲得的(如HDFS,HBase,Amazon S3,和Blobs)和多種格式(包括JSON,Avro,和buffers),你不需要在讀取時指定一個模式(“讀時模式”)。Drill使用ANSI 2003 SQL的查詢語言為基礎,所以資料工程師是沒有學習壓力的,它允許你連線查詢資料並跨多個資料來源(例如,連線HBase表和在HDFS中的日誌)。最後,Drill提供了基於ODBC和JDBC介面以和你所喜歡的BI工具對接。

10. HBASE

HBase在今年的里程碑達到1.X版本並持續改善。像其他的非關係型的分散式資料儲存一樣,HBase的查詢結果反饋非常迅速,因此擅長的是經常用於後臺搜尋引擎,如易趣網,博科和雅虎等網站。作為一個穩定的、成熟的軟體產品,HBase新鮮的功能並不是經常出現,但這種穩定性往往是企業最關心的。最近的改進包括增加區域伺服器改進高可用性,滾動升級支援,和YARN的相容性提升。在他的特性更新方面包括掃描器更新,保證提高效能,使用HBase作為流媒體應用像Storm和Spark持久儲存的能力。HBase也可以通過Phoenix專案來支援SQL查詢,其SQL相容性在穩步提高。Phoenix最近增加了一個Spark聯結器,新增了自定義函式的功能。

11. Hive

隨著Hive過去多年的發展,逐步成熟,今年釋出了1.0正式版本,它用於基於SQL的資料倉儲領域。目前基金會主要集中在提升效能、可擴充套件性和SQL相容性。最新的1.2版本顯著的提升了ACID語意相容性、跨資料中心複製,以及以成本為基礎的優化器。Hive1.2也帶來了改進的SQL的相容性,使組織利用它更容易的把從現有的資料倉儲通過ETL工具進行轉移。在規劃中講主要改進:以記憶體快取為核心的速度改進 LLAP,Spark的機器學習庫的整合,提高SQL的前巢狀子查詢、中間型別支援等。

12. Kylin

Kylin是eBay開發的用於處理非常大量資料的OLAP分析系統,他使用標準的SQL語法,和很多資料分析產品很像。Kylin使用Hive和MR來構建立方體,Hive用作預連結,MR用作預聚合,HDFS用來儲存構建立方體時的中間檔案,HBase用來儲存立方體,HBase的coprocessor(協處理器)用來響應查詢。像大多數其他的分析應用一樣,Kylin支援多種訪問方法,包括JDBC,ODBC API進行程式設計訪問以及REST API介面。

13. CDAP

CDAP(Cask Data Access Platform)是一個在Hadoop之上執行的框架,抽象了建造和執行大資料應用的複雜性。CDAP圍繞兩個核心概念:資料和應用程式。CDAP資料集是資料的邏輯展現,無論底層儲存層是什麼樣的;CDAP提供實時資料流處理能力。應用程式使用CDAP服務來處理諸如分散式事務和服務發現等應用場景,避免程式開發者淹沒在Hadoop的底層細節中。CDAP自帶的資料攝取框架和一些預置的應用和一些通用的“包”,例如ETL和網站分析,支援測試,除錯和安全等。和大多數原商業(閉源)專案開源一樣,CDAP具有良好的文件,教程,和例子。

14. Ranger

安全一直是Hadoop的一個痛處。它不是說(像是經常報導)Hadoop是“不安全”或“不安全”。事實是,Hadoop有很多的安全功能,雖然這些安全功能都不太強大。我的意思是,每一個元件都有它自己的身份驗證和授權實施,這與其他的平臺沒有整合。2015年5月,Hortonworks收購XA /安全,隨後經過了改名後,我們有了Ranger。Ranger使得許多Hadoop的關鍵部件處在一個保護傘下,它允許你設定一個“策略”,把你的Hadoop安全繫結到到您現有的ACL基於活動目錄的身份驗證和授權體系下。Ranger給你一個地方管理Hadoop的訪問控制,通過一個漂亮的頁面來做管理、審計、加密。

15. Mesos

Mesos提供了高效、跨分散式應用程式和框架的資源隔離和共享,支援Hadoop、 MPI、Hypertable、Spark等。Mesos是Apache孵化器中的一個開源專案,使用ZooKeeper實現容錯複製,使用Linux Containers來隔離任務,支援多種資源計劃分配(記憶體和CPU)。提供Java、Python和C++ APIs來開發新的並行應用程式,提供基於Web的使用者介面來提檢視叢集狀態。Mesos應用程式(框架)為群集資源協調兩級排程機制,所以寫一個Mesos應用程式對程式設計師來說感覺不像是熟悉的體驗。雖然Mesos是新的專案,成長卻很快。

16. NiFi

Apache NiFi 0.2.0 釋出了,該專案目前還處於 Apache 基金會的孵化階段。Apache NiFi 是一個易於使用、功能強大而且可靠的資料處理和分發系統。Apache NiFi 是為資料流設計。它支援高度可配置的指示圖的資料路由、轉換和系統中介邏輯。Apache NiFi是由美國過國家安全域性(NSA)貢獻給Apache基金會的開源專案,其設計目標是自動化系統間的資料流。基於其工作流式的程式設計理念,NiFi非常易於使用,強大,可靠及高可配置。兩個最重要的特性是其強大的使用者介面及良好的資料回溯工具。NiFi的使用者介面允許使用者在瀏覽器中直觀的理解並與資料流舉行互動,更快速和安全的進行迭代。其資料回溯特性允許使用者檢視一個物件如何在系統間流轉,回放以及視覺化關鍵步驟之前之後發生的情況,包括大量複雜的圖式轉換,fork,join及其他操作等。另外,NiFi使用基於元件的擴充套件模型以為複雜的資料流快速增加功能,開箱即用的元件中處理檔案系統的包括FTP,SFTP及HTTP等,同樣也支援HDFS。NiFi獲得來來自業界的一致好評,包括Hortonworks CEO,Leverage CTO及Prescient Edge首席系統架構師等。

17. Kafka

在大資料領域,Kafka已經成為分散式釋出訂閱訊息的事實標準。它的設計允許代理支援成千上萬的客戶在資訊吞吐量告訴處理時,同時通過分散式提交日誌保持耐久性。Kafka是通過在HDFS系統上儲存單個日誌檔案,由於HDFS是一個分散式的儲存系統,使資料的冗餘拷貝,因此Kafka自身也是受到良好保護的。當消費者想讀訊息時,Kafka在中央日誌中查詢其偏移量併傳送它們。因為訊息沒有被立即刪除,增加消費者或重發歷史資訊不產生額外消耗。Kafka已經為能夠每秒傳送2百萬個訊息。儘管Kafka的版本號是sub-1.0,但是其實Kafka是一個成熟、穩定的產品,使用在一些世界上最大的叢集中。

18.OpenTSDB

opentsdb是建立在時間序列基礎上的HBase資料庫。它是專為分析從應用程式,移動裝置,網路裝置,和其他硬體裝置收集的資料。它自定義HBase架構用於儲存時間序列資料,被設計為支援快速聚合和最小的儲存空間需求。通過使用HBase作為底層儲存層,opentsdb很好的支援分佈與系統可靠性的特點。使用者不與HBase的直接互動;而資料寫入系統是通過時間序列的守護程式(TSD)來管理,它可以方便的擴充套件用於需要高速處理資料量的應用場景。有一些預製聯結器將資料釋出到opentsdb,並且支援從Ruby,Python以及其他語言的客戶端讀取資料。opentsdb並不擅長互動式圖形處理,但可以和第三方工具整合。如果你已經在使用HBase和想要一個簡單的方法來儲存事件資料,opentsdb也許正好適合你。

19. Jupyter

大家最喜歡的筆記應用程式都走了。jupyter是“IPython”剝離出來成為一個獨立的軟體包的語言無關的部分。雖然jupyter本身是用Python寫的,該系統是模組化的。現在你可以有一個和iPython一樣的介面,在膝上型電腦中方便共享程式碼,使得文件和資料視覺化。至少已經支援50個語言的核心,包括Lisp,R,F #,Perl,Ruby,Scala等。事實上即使IPython本身也只是一個jupyter Python模組。通過REPL(讀,評價,列印迴圈)語言核心通訊是通過協議,類似於nrepl或Slime。很高興看到這樣一個有用的軟體,得到了顯著的非營利組織資助,以進一步發展,如並行執行和多使用者筆記本應用。

20. Zeppelin

Zeppelin是一個Apache的孵化專案. 一個基於web的筆記本,支援互動式資料分析。你可以用SQL、Scala等做出資料驅動的、互動、協作的文件。(類似於ipython notebook,可以直接在瀏覽器中寫程式碼、筆記並共享)。一些基本的圖表已經包含在Zeppelin中。視覺化並不只限於SparkSQL查詢,後端的任何語言的輸出都可以被識別並視覺化。 Zeppelin 提供了一個 URL 用來僅僅展示結果,那個頁面不包括 Zeppelin 的選單和按鈕。這樣,你可以輕易地將其作為一個iframe整合到你的網站。Zeppelin還不成熟。我想把一個演示,但找不到一個簡單的方法來禁用“Shell”作為一個執行選項(在其他事情)。然而,它已經看起來的視覺效果比IPython筆記本應用更好,Apache Zeppelin (孵化中) 是 Apache2 許可軟體。提供100%的開源。

B.開源大資料處理工具彙總

一共81個,包括日誌收集系統/叢集管理/RPC等,下面是文件簡版:

類別 名稱 官網 備註
查詢引擎 Phoenix http://phoenix.incubator.apache.org/ Salesforce公司出品,Apache HBase之上的一個SQL中間層,完全使用Java編寫
Stinger http://hortonworks.com/labs/stinger/ 原叫Tez,下一代Hive,Hortonworks主導開發,執行在YARN上的DAG計算框架
http://tez.incubator.apache.org/
Presto http://prestodb.io/ Facebook開源
Shark http://shark.cs.berkeley.edu/ Spark上的SQL執行引擎
Pig http://pig.apache.org/ 基於Hadoop MapReduce的指令碼語言
Cloudera Impala http://www.cloudera.com/content/cloudera/en/products-and-services/cdh/impala.html 參照Google Dremel實現,能執行在HDFS或HBase上,使用C++開發
Apache Drill http://incubator.apache.org/drill/ 參照Google Dremel實現
Apache Tajo http://tajo.incubator.apache.org/ 一個執行在YARN上支援SQL的分散式資料倉儲
Hive http://hive.apache.org/ 基於Hadoop MapReduce的SQL查詢引擎
流式計算 Facebook Puma 實時資料流分析
Twitter Rainbird 分散式實時統計系統,如網站的點選統計
Yahoo S4 http://incubator.apache.org/s4/ Java開發的一個通用的、分散式的、可擴充套件的、分割槽容錯的、可插拔的無主架構的流式系統
Twitter Storm http://storm.incubator.apache.org/ 使用Java和Clojure實現
迭代計算 Apache Hama https://hama.apache.org/ 建立在Hadoop上基於BSP(Bulk Synchronous Parallel)的計算框架,模仿了Google的Pregel。
Apache Giraph https://giraph.apache.org/ 建立在Hadoop上的可伸縮的分散式迭代圖處理系統,靈感來自BSP(bulk synchronous parallel)和Google的Pregel
HaLoop https://code.google.com/p/haloop/ 迭代的MapReduce
Twister http://www.iterativemapreduce.org/ 迭代的MapReduce
離線計算 Hadoop MapReduce http://hadoop.apache.org/ 經典的大資料批處理系統
Berkeley Spark http://spark.incubator.apache.org/ 使用Scala語言實現,和MapReduce有較大的競爭關係,效能強於MapReduce
http://shark.cs.berkeley.edu/
DataTorrent http://www.datatorrent.com/ 基於Hadoop2.X構建的實時流式處理和分析平臺,每秒可以處理超過10億個實時事件
鍵值儲存 LevelDB https://code.google.com/p/leveldb/ Google開源的高效KV程式設計庫,注意它只是個庫
RocksDB http://rocksdb.org/ Facebook開源的,基於Google的LevelDB,但提高了擴充套件性可以執行在多核處理器上
HyperDex http://hyperdex.org/ 下一代KV儲存系統,支援strings、integers、floats、lists、maps和sets等豐富的資料型別
TokyoCabinet http://fallabs.com/tokyocabinet/ 日本人Mikio Hirabayashi(平林幹雄)開發的一款DBM資料庫,注意它只是個庫(大名鼎鼎的DBM資料庫qdbm就是Mikio Hirabayashi開發的),讀寫非常快
Voldemort http://www.project-voldemort.com/voldemort/ 一個分散式鍵值儲存系統,是Amazon Dynamo的一個開源克隆,LinkedIn開源
Amazon Dynamo https://github.com/dynamo/dynamo 亞馬遜的KV模式的儲存平臺,無主架構
Tair http://tair.taobao.org/ 淘寶出品的高效能、分散式、可擴充套件、高可靠的KV結構儲存系統,專為小檔案優化,並提供簡單易用的介面(類似Map),Tair支援Java和C版本的客戶端
Apache Accumulo https://accumulo.apache.org/ 一個可靠的、可伸縮的、高效能的排序分散式的KV儲存系統,參照Google Bigtable而設計,建立在Hadoop、Thrift和Zookeeper之上。
Redis http://redis.io/ 使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、單機版KV資料庫。從2010年3月15日起,Redis的開發工作由VMware主持
表格儲存 OceanBase http://alibaba.github.io/oceanbase/ 支援海量資料的高效能分散式資料庫系統,實現了數千億條記錄、數百TB資料上的跨行跨表事務
Amazon SimpleDB http://aws.amazon.com/cn/simpledb/ 一個可大規模伸縮、用 Erlang 編寫的高可用資料儲存
Vertica http://www.vertica.com/ 惠普2011收購Vertica,Vertica是傳統的關係型資料庫,基於列儲存,同時支援MPP,使用標準的SQL查詢,可以和Hadoop/MapReduce進行整合
Cassandra http://cassandra.apache.org/ Hadoop成員,Facebook於2008將Cassandra開源,基於O(1)DHT的完全P2P架構
HyperTable http://hypertable.org/ 搜尋引擎公司Zvents針對Bigtable的C++開源實現
FoundationDB https://foundationdb.com/ 支援ACID事務處理的NoSQL資料庫,提供非常好的效能、資料一致性和操作彈性
HBase http://hbase.apache.org/ Bigtable在Hadoop中的實現,最初是Powerset公司為了處理自然語言搜尋產生的海量資料而開展的專案
檔案儲存 CouchDB http://couchdb.apache.org/ 面向文件的資料儲存
MongoDB https://www.mongodb.org/ 文件資料庫
Tachyon http://tachyon-project.org/ 加州大學伯克利分校的AMPLab基於Hadoop的核心元件開發出一個更快的版本Tachyon,它從底層重構了Hadoop平臺。
https://github.com/amplab/tachyon
KFS http://code.google.com/p/kosmosfs/ GFS的C++開源版本
HDFS http://hadoop.apache.org/ GFS在Hadoop中的實現
資源管理 Twitter Mesos http://mesos.apache.org/ Google Borg的翻版
Hadoop Yarn http://hadoop.apache.org/ 類似於Mesos
日誌收集系統 Facebook Scribe https://github.com/facebook/scribe Facebook開源的日誌收集系統,能夠從各種日誌源上收集日誌,儲存到一箇中央儲存系統(可以是NFS,分散式檔案系統等)上,以便於進行集中統計分析處理,常與Hadoop結合使用,Scribe用於向HDFS中Push日誌
Cloudera Flume http://flume.apache.org/ Cloudera提供的日誌收集系統,支援對日誌的實時性收集
logstash http://www.logstash.net/ 日誌管理、分析和傳輸工具,可配合kibana、ElasticSearch組建成日誌查詢系統
kibana http://www.elasticsearch.org/overview/kibana/ 為日誌提供友好的Web查詢頁面
訊息系統 StormMQ http://stormmq.com/
ZeroMQ http://zeromq.org/ 很底層的高效能網路庫
RabbitMQ https://www.rabbitmq.com/ 在AMQP基礎上完整的,可複用的企業訊息系統
Apache ActiveMQ http://activemq.apache.org/ 能力強勁的開源訊息匯流排
Jafka http://kafka.apache.org/ 開源的、高效能的、跨語言分散式訊息系統,最早是由Apache孵化的Kafka(由LinkedIn捐助給Apache)克隆而來
Apache Kafka http://kafka.apache.org/ Linkedin於2010年12月份開源的分散式訊息系統,它主要用於處理活躍的流式資料,由Scala寫成
分散式服務 ZooKeeper http://zookeeper.apache.org/ 分散式鎖服務,PoxOS演算法的實現,對應Google的Chubby
RPC Apache Avro http://avro.apache.org/ Hadoop中的RPC
Facebook Thrift http://thrift.apache.org/ RPC,支援C++/Java/PHP等眾多語言
叢集管理 Nagios http://www.nagios.org/ 監視系統執行狀態和網路資訊的監視系統
Ganglia http://ganglia.sourceforge.net/ UC Berkeley發起的一個開源叢集監視專案,設計用於測量數以千計的節點。
Apache Ambari http://ambari.apache.org/ Hadoop成員,管理和監視Apache Hadoop叢集的開源框架
基礎設施 LevelDB http://code.google.com/p/leveldb/ Google頂級大牛開發的單機版鍵值資料庫,具有非常高的寫效能
SSTable 源於Google,orted String Table
RecordIO 源於Google
Flat Buffers https://github.com/google/flatbuffers 針對遊戲開發的,高效的跨平臺序列化庫,相比Proto Buffers開銷更小,因為Flat Buffers沒有解析過程
Protocol Buffers http://code.google.com/p/protobuf/ Google公司開發的一種資料描述語言,類似於XML能夠將結構化資料序列化,可用於資料儲存、通訊協議等方面。它不依賴於語言和平臺並且可擴充套件性極強。
Consistent Hashing 1997年由麻省理工學院提出,目標是為了解決因特網中的熱點(Hot spot)問題,初衷和CARP十分類似,基本解決了在P2P環境中最為關鍵的問題——如何在動態的網路拓撲中分佈儲存和路由。
Netty http://netty.io/ JBOSS提供的一個java開源框架,提供非同步的、事件驅動的網路應用程式框架,用以快速開發高效能、高可靠性的網路伺服器和客戶端程式。
BloomFilter 布隆過濾器,1970年由布隆提出,是一個很長的二進位制向量和一系列隨機對映函式,可以用於檢索一個元素是否在一個集合中,優點是空間效率和查詢時間都遠遠超過一般的演算法,缺點是有一定的誤識別率和刪除困難。
搜尋引擎 Nutch https://nutch.apache.org/ 開源Java 實現的搜尋引擎,誕生Hadoop的地方。
Lucene http://lucene.apache.org/ 一套資訊檢索工具包,但並不包含搜尋引擎系統,它包含了索引結構、讀寫索引工具、相關性工具、排序等功能。
SolrCloud 基於Solr和Zookeeper的分散式搜尋, Solr4.0 的核心元件之一,主要思想是使用 Zookeeper 作為叢集的配置資訊中心
Solr https://lucene.apache.org/solr/ Solr是基於Lucene的搜尋。
ElasticSearch http://www.elasticsearch.org/ 開源的(Apache2協議),分散式的,RESTful的,構建在Apache Lucene之上的的搜尋引擎。
http://www.elasticsearch.cn/
Sphinx http://sphinxsearch.com 一個基於SQL的全文檢索引擎,可結合MySQL、PostgreSQL做全文檢索,可提供比資料庫本身更專業的搜尋功能,單一索引可達1億條記錄,1000萬條記錄情況下的查詢速度為0.x秒(毫秒級)。
SenseiDB http://senseidb.com Linkin公司開發的一個開源分散式實時半結構化資料庫,在全文索引的基礎封裝了Browse Query Language (BQL,類似SQL)的查詢語法。
資料探勘 Mahout http://mahout.apache.org/ Hadoop成員,目標是建立一個可擴充套件的機器學習庫
Iaas OpenStack https://www.openstack.org/ 美國國家航空航天局和Rackspace合作研發的,以Apache許可證授權雲平臺管理的專案,它不是一個軟體。這個專案由幾個主要的元件組合起來完成一些具體的工作,旨在為公共及私有云的建設與管理提供軟體的開源專案。6個核心專案:Nova(計算,Compute),Swift(物件儲存,Object),Glance(映象,Image),Keystone(身份,Identity),Horizon(自助門戶,Dashboard),Quantum & Melange(網路&地址管理),另外還有若干社群專案,如Rackspace(負載均衡)、Rackspace(關係型資料庫)。
Docker http://www.docker.io/ 應用容器引擎,讓開發者可打包應用及依賴包到一個可移植的容器中,然後釋出到Linux機器上,也可實現虛擬化。
Kubernetes https://github.com/GoogleCloudPlatform/kubernetes/ Google開源的容器叢集管理系統
Imctfy https://github.com/google/Imctfy/ Google開源的Linux容器
監控管理 Dapper http://bigbully.github.io/Dapper-translation/ Google生產環境下的大規模分散式系統的跟蹤系統
Zipkin http://twitter.github.io/zipkin/ Twitter開源的參考Google Dapper而開發,使用Apache Cassandra做為資料儲存系統
https://github.com/twitter/zipkin/

C.常見的資料探勘分析處理工具

1、Dynelle Abeyta整理的資料科學家5種工具(2015-09-29):

dedup——dedup是一個Python庫,使用機器學習快速的對結構化資料進行重複資料刪除和實體解析。資料科學家發現他們經常需要使用SELECT DISTINCT * FROM my_messy_dataset;不幸的是,現實世界中的資料集往往更加複雜。無論你是去對多個資料來源進行彙總,還是簡單的資料收集,開始你都需要對重複資料的刪除做一個有意義的分析。如你所想,有取之不盡的方法可以用來合併資料和用之不竭的規則來定義你資料的等價意義。有相同地址的兩家餐館是屬於一個公司麼?名和姓都相同的兩條記錄就是同一個人麼?你很幸運,dedup可以讓你轉危為安!基於創新的電腦科學研究,dedup使用機器學習(更確切地說,應該是主動學習)去學習,通過合併人類的反饋對兩個可能的模稜兩可的記錄進行研究,並尋找究竟是什麼構成了兩者的“相似”。更方便的是,它有一個圖形使用者介面(GUI),任何人都可以使用它。

Theano——Theano是一個Python庫,你可以有效地定義、優化以及評估包含多維陣列的數學表示式。Theano的特點:

· 和Numpy緊密結合——在Theano編譯的函式中使用numpy.ndaaray。

· GPU的透明使用——在執行密集型資料計算時,相比於CPU,速度提升了140倍。(使用float32進行測試)

· 速度和穩定性優化——對log(1+x)得到正確的答案,即使x真的很小。

· C語言程式碼動態生成——加速評估表示式。

· 廣泛的單元測試和自我驗證——發現和診斷不同種類的錯誤。

StarCluster——StarCluster已經開始在Amazon的EC2雲伺服器中設計虛擬機器建立、配置和管理叢集的自動和簡化程式。StarCluster允許所有人在面向分散式和平行計算的應用和系統的雲伺服器中輕鬆的建立一個叢集計算環境。這允許你在無限制的資料上做互動程式。(貢獻者Alessandro Gagliardi,Galvanize資料科學指導者。)

graph-tool——在python網路和圖形分析庫與日俱增的情況下,圖形工具給了不少希望。儘管像NetworkX和Gephi這樣的工具在不斷成長的工具中仍然還有它們的一席之地,但是對於那些想要做大影像高階分析的人來說——無論是社會網路、道路網路、還是生物網路——這兩者往往會顯得力不從心。NetworkX一直是用於網路分析的最流行的Python工具,因為它有著豐富的API並且使用的門檻很低,但是一旦你開始處理更大的圖形,純python實現的弊端才真正開始凸顯。而Gephi是一個極好的互動式視覺化和開發新影像的圖形化工具,但是有一個麻煩的指令碼介面,使得它很難使用程式設計方式去控制。圖形工具嘗試從它前輩中吸取經驗教訓並給資料科學家最好的結果。它使用C++實現(可並行執行)並用Python來武裝,繫結了一個易於使用的API,同時獲得了超快的速度,而且不影響使用性。

Plotly——Plotly是一個面向R,Python,MATLAB,JavaScript和Excel的互動式圖形庫。Plotly也是一個用於分析和分享資料和影像的平臺。Plotly是如何與眾不同的呢?與Google Docs和GitHub一樣,你可以協調和控制你的資料;可以將檔案設定成公有的、私有的、祕密檔案或是分享的。如果你使用plotly的免費公共雲,離線Plotly,或是現場部署,下面的選項很多都是可以獲得的。在你的工作流中可以使用Plotly,這裡有三種可用方式:

為資料科學家整合其它工具。Plotly的R,Python和MATLAB的API可以讓你做互動、更新儀表皮膚和影像。Plotly整合了IPython Notebooks,NetworkX,Shiny,ggplot2,matplotlib,pandas,reporting tools和資料庫。例如,下面的圖是使用ggplot2製作的,然後嵌入到這個部落格中。將滑鼠懸停後看看資料變化,然後單擊拖動放大。

建立互動式地圖。Plotly的圖形庫建立在D3.js之上。對於地理資料,Plotly支援分級統計圖、散點圖、氣泡圖、分塊圖和線圖。你可以製作類似下面這樣的地圖,像R和Python一樣把它們嵌入到部落格,應用程式和儀表板。

建立全方位的視覺化。你可以為使用Plotly滿足任意的視覺化需求:地圖、2D、3D以及流圖。點選並移動你的滑鼠來旋轉這個圖,懸停並觀察資料變化,或切換放大。

2、6種開源資料探勘工具:百分之八十的資料是非結構化的,需要一個程式和方法來從中提取有用資訊,並且將其轉換為可理解、可用的結構化形式。資料探勘過程中有大量的工具可供使用,比如採用人工智慧、機器學習,以及其他技術等來提取資料。以下為您推薦六款開源大資料探勘工具:

1)WEKA——WEKA原生的非Java版本主要是為了分析農業領域資料而開發的。該工具基於Java版本,是非常複雜的,並且應用在許多不同的應用中,包括資料分析以及預測建模的視覺化和演算法。與 RapidMiner 相比優勢在於,它在 GNU 通用公共許可證下是免費的,因為使用者可以按照自己的喜好選擇自定義。WEKA 支援多種標準資料探勘任務,包括資料預處理、收集、分類、迴歸分析、視覺化和特徵選取。新增序列建模後,WEKA 將會變得更強大,但目前不包括在內。

2)RapidMiner——該工具是用Java語言編寫的,通過基於模板的框架提供先進的分析技術。該款工具最大的好處就是,使用者無需寫任何程式碼。它是作為一個服務提供,而不是一款本地軟體。值得一提的是,該工具在資料探勘工具榜上位列榜首。另外,除了資料探勘,RapidMiner 還提供如資料預處理和視覺化、預測分析和統計建模、評估和部署等功能。更厲害的是它還提供來自WEKA(一種智慧分析環境)和R指令碼的學習方案、模型和演算法。RapidMiner分佈在AGPL開源許可下,可以從 SourceForge上下載。SourceForge是一個開發者進行開發管理的集中式場所,大量開源專案在此落戶,其中就包括維基百科使用的 MediaWiki。

3)NLTK——當涉及到語言處理任務,沒有什麼可以打敗NLTK。NLTK提供了一個語言處理工具,包括資料探勘、機器學習、資料抓取、情感分析等各種語言處理任務。而您需要做的只是安裝NLTK,然後將一個包拖拽到您最喜愛的任務中,您就可以去做其他事了。因為它是用Python語言編寫的,你可以在上面建立應用,還可以自定義它的小任務。

4)Orange——Python之所以受歡迎,是因為它簡單易學並且功能強大。如果你是一個Python開發者,當涉及到需要找一個工作用的工具時,那麼沒有比Orange更合適的了。它是一個基於Python語言,功能強大的開源工具,並且對初學者和專家級的大神均適用。此外,你肯定會愛上這個工具的視覺化程式設計和 Python 指令碼。它不僅有機器學習的元件,還附加有生物資訊和文字挖掘,可以說是充滿了資料分析的各種功能。

5)KNIME——資料處理主要有三個部分:提取、轉換和載入。而這三者KNIME都可以做到。KNIME為您提供了一個圖形化的使用者介面,以便對資料節點進行處理。它是一個開源的資料分析、報告和綜合平臺,同時還通過其模組化資料的流水型概念,整合了各種機器學習的元件和資料探勘,並引起了商業智慧和財務資料分析的注意。KNIME是基於Eclipse,用Java編寫的,並且易於擴充套件和補充外掛。其附加功能可隨時新增,並且其大量的資料整合模組已包含在核心版本中。

6)R-Programming——如果我告訴你R專案,一個GNU專案,是由R(R-programming簡稱,以下統稱R)自身編寫的,你會怎麼想?它主要是由C語言和FORTRAN語言編寫的,並且很多模組都是由R編寫的,這是一款針對程式語言和軟體環境進行統計計算和製圖的免費軟體。R語言被廣泛應用於資料探勘,以及開發統計軟體和資料分析中。近年來,易用性和可擴充套件性也大大提高了 R 的知名度。除了資料,它還提供統計和製圖技術,包括線性和非線性建模,經典的統計測試,時間序列分析、分類、收集等等。

3、資料分析語言3種工具:隨著資料科學分析工具的發展,一方面成功解決了資料科學中的演算法失效、超大規模資料視覺化等一系列挑戰;另一方面各具特點和優缺點。例如Mahout具有優秀的大資料處理能力,不僅處理資料量大且速度快,但視覺化能力差。接下來選取R語言、RapidMiner、Mahout三種主流的資料科學分析工具,對其概述並以表格的形式對三者的主要特點進行了比較分析,工具基本情況如下。

1)R語言用於統計計算和作圖的程式語言和環境,採用命令列工作方式,在GNU協議下免費發行,其原始碼可供自由下載和使用。R網站CRAN上提供了大量的第三方程式包,內容涵蓋了經濟學、社會學、統計學、生物資訊學等諸多方面,這也是為什麼越來越多的各行各業的人員喜愛R的一個重要原因。針對傳統分析軟體的擴充套件性差以及Hadoop的分析功能薄弱的弱勢,研究人員致力於將R語言和Hadoop的整合。R作為開源的統計分析軟體,通過R與Hadoop的深度整合,把資料計算推向並行處理,使Hadoop獲得強大的深度分析能力。

2)RapidMiner原名Yale,是一種用於資料探勘、機器學習以及商業預測分析的開源計算環境。其既可以使用簡單的指令碼語言進行大規模程式操作,也可以通過JavaAPI或GUI模式進行操作。因為其具備GUI特性,所以對於資料探勘的初學者比較容易入門。RapidMiner6具有友好而強大的工具箱,提供快而穩定的分析,可以在短時間內設計好一個原型,使得資料探勘過程中的關鍵決策儘可能早地實現。幫助減少客戶流失、進行情感分析、預測性維護以及市場直銷等。

3)ApacheMahout起源於2008年,其主要目標是構建一個可伸縮的機器學習演算法的資源庫,它提供了一些經典的機器學習演算法,旨在幫助開發人員更加方便快捷地建立智慧應用程式。目前,Mahout的專案包括頻繁子項挖掘、分類、聚類、推薦引擎(協同過濾)。

4、資料探勘5種工具分別為:Intelligent Miner、SAS Enterpreise Miner 、SPSS Clementine、馬克威分析系統、GDM,下面將作部分介紹。

1)Intelligent Miner綜述:IBM的Exterprise Miner簡單易用,是理解資料探勘的好的開始。能處理大。資料量的挖掘,功能一般,可能僅滿足要求.沒有資料探索功能。與其他軟體介面差,只能用DB2,連線DB2以外的資料庫時,如Oracle, SAS, SPSS需 要安裝DataJoiner作為中間軟體。難以釋出。結果美觀,但同樣不好理解。

2)SAS Enterprise Miner綜述:SAS完仝以統計理論為基礎,功能強大,有完備的資料探索功能。但難以掌握,要求是高階統計分析專業人員.結果難以理解。價格也極其昂貴,而且是租賃模式。基本內容:支援SAS統計模組,使之具有傑出的力量和影響,它還通過大量資料探勘演算法增強了那些模組。SAS使用它的SEMMA方法學以提供一個能支援包括關聯、聚類、決策樹、神經元網路和統計迴歸在內的廣闊範圍的模型資料探勘工具。

3)SPSS(Statistical Product and Service Solutions)綜述:“統計產品與服務解決方案”軟體。最初軟體全稱為“社會科學統計軟體包”。但是隨著SPSS產品服務領域的擴大和服務深度的增加,SPSS公司已於2000年正式將英文全稱更改為“統計產品與服務解決方案”。用作多個領域和行業,是世界上應用最廣泛的專業統計軟體。

作者丨秦隴紀DataSimp