標籤:

數據科學工具包(萬餘字介紹幾百種工具,經典收藏版!)

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

數據科學融合了多門學科並且建立在這些學科的理論和技術之上,包括數學、概率模型、統計學、機器學習、數據倉庫、可視化等。在實際應用中,數據科學包括數據的收集、清洗、分析、可視化以及數據應用整個迭代過程,最終幫助組織制定正確的發展決策數據科學的從業者稱為數據科學家。數據科學家有其獨特的基本思路與常用工具,秦隴紀全面梳理數據分析師和數據科學家使用的工具包,包括開源的技術平台相關工具、挖掘分析處理工具、其它常見工具等幾百種,幾十個大類,部分網址,歡迎大家積極傳播!

數據科學家是有著開闊視野的複合型人才,他們既有堅實的數據科學基礎,如數學、統計學、計算機學等,又具備廣泛的業務知識和經驗數據科學家通過精深的技術和專業知識在某些科學學科領域解決複雜的數據問題,從而制定出適合不同決策人員的大數據計劃和策略。數據分析師和數據科學家使用的工具在網上的MOOC有提供,比如2016年2月1日約翰-霍普金斯大學Coursera數據科學專業化課程等網路課程。數據科學家的常用工具與基本思路,並對數據、相關問題和數據分析師和數據科學家使用的工具做了綜合概述。

數據科學家和大數據技術人員的工具包:A.大數據技術平台相關2015最佳工具,B.開源大數據處理工具匯總,C.常見的數據挖掘分析處理工具。

◆ ◆ ◆

大數據技術平台相關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%的開源。

◆ ◆ ◆

開源大數據處理工具匯總

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

類別名稱官網備註查詢引擎PhoenixOverview | Apache PhoenixSalesforce公司出品,Apache HBase之上的一個SQL中間層,完全使用Java編寫StingerHortonworks: Open and Connected Data Platform Industry Solutions原叫Tez,下一代Hive,Hortonworks主導開發,運行在YARN上的DAG計算框架Welcome to Apache Tez?PrestoPresto | Distributed SQL Query Engine for Big DataFacebook開源SharkShark - SQL on SparkSpark上的SQL執行引擎PigWelcome to Apache Pig!基於Hadoop MapReduce的腳本語言Cloudera ImpalaApache Impala supported by Cloudera Enterprise參照Google Dremel實現,能運行在HDFS或HBase上,使用C++開發Apache DrillSchema-free SQL for Hadoop, NoSQL and Cloud Storage參照Google Dremel實現Apache TajoA Big Data Warehouse System on Hadoop -一個運行在YARN上支持SQL的分散式數據倉庫HiveApache Hive TM基於Hadoop MapReduce的SQL查詢引擎流式計算Facebook Puma

實時數據流分析Twitter Rainbird

分散式實時統計系統,如網站的點擊統計Yahoo S4Distributed Stream Computing PlatformJava開發的一個通用的、分散式的、可擴展的、分區容錯的、可插拔的無主架構的流式系統Twitter StormApache Storm使用Java和Clojure實現迭代計算Apache HamaBig Data and High-Performance Computing建立在Hadoop上基於BSP(Bulk Synchronous Parallel)的計算框架,模仿了Google的Pregel。Apache GiraphWelcome To Apache Giraph!建立在Hadoop上的可伸縮的分散式迭代圖處理系統,靈感來自BSP(bulk synchronous parallel)和Google的PregelHaLoopcode.google.com/p/haloo迭代的MapReduceTwisterIterative MapReduce迭代的MapReduce離線計算Hadoop MapReduceWelcome to Apache? Hadoop?!經典的大數據批處理系統Berkeley SparkApache Spark? - Lightning-Fast Cluster Computing使用Scala語言實現,和MapReduce有較大的競爭關係,性能強於MapReduceShark - SQL on Spark

DataTorrentDatatorrent Homepage基於Hadoop2.X構建的實時流式處理和分析平台,每秒可以處理超過10億個實時事件鍵值存儲LevelDBcode.google.com/p/levelGoogle開源的高效KV編程庫,注意它只是個庫RocksDBrocksdb.org/Facebook開源的,基於Google的LevelDB,但提高了擴展性可以運行在多核處理器上HyperDexhyperdex.org/下一代KV存儲系統,支持strings、integers、floats、lists、maps和sets等豐富的數據類型TokyoCabinetTokyo Cabinet: a modern implementation of DBM日本人Mikio Hirabayashi(平林干雄)開發的一款DBM資料庫,注意它只是個庫(大名鼎鼎的DBM資料庫qdbm就是Mikio Hirabayashi開發的),讀寫非常快VoldemortVoldemort一個分散式鍵值存儲系統,是Amazon Dynamo的一個開源克隆,LinkedIn開源Amazon Dynamodynamo/dynamo亞馬遜的KV模式的存儲平台,無主架構Tairtair淘寶出品的高性能、分散式、可擴展、高可靠的KV結構存儲系統,專為小文件優化,並提供簡單易用的介面(類似Map),Tair支持Java和C版本的客戶端Apache AccumuloApache Accumulo一個可靠的、可伸縮的、高性能的排序分散式的KV存儲系統,參照Google Bigtable而設計,建立在Hadoop、Thrift和Zookeeper之上。RedisRedis使用ANSI C語言編寫、支持網路、可基於內存亦可持久化的日誌型、單機版KV資料庫。從2010年3月15日起,Redis的開發工作由VMware主持表格存儲OceanBasealibaba.github.io/ocean支持海量數據的高性能分散式資料庫系統,實現了數千億條記錄、數百TB數據上的跨行跨表事務Amazon SimpleDBAmazon SimpleDB_NoSQL數據存儲服務-AWS雲服務一個可大規模伸縮、用 Erlang 編寫的高可用數據存儲VerticaBig Data SQL Analytics Platform, Data Warehouse Solutions惠普2011收購Vertica,Vertica是傳統的關係型資料庫,基於列存儲,同時支持MPP,使用標準的SQL查詢,可以和Hadoop/MapReduce進行集成CassandraApache CassandraHadoop成員,Facebook於2008將Cassandra開源,基於O(1)DHT的完全P2P架構HyperTableHypertable - Big Data. Big Performance搜索引擎公司Zvents針對Bigtable的C++開源實現FoundationDBfoundationdb.com/支持ACID事務處理的NoSQL資料庫,提供非常好的性能、數據一致性和操作彈性HBaseApache HBase - Apache HBase? HomeBigtable在Hadoop中的實現,最初是Powerset公司為了處理自然語言搜索產生的海量數據而開展的項目文件存儲CouchDBApache CouchDB面向文檔的數據存儲MongoDBMongoDB for GIANT Ideas文檔資料庫TachyonAlluxio - Open Source Memory Speed Virtual Distributed Storage加州大學伯克利分校的AMPLab基於Hadoop的核心組件開發出一個更快的版本Tachyon,它從底層重構了Hadoop平台。Alluxio/alluxioKFScode.google.com/p/kosmoGFS的C++開源版本HDFSWelcome to Apache? Hadoop?!GFS在Hadoop中的實現資源管理Twitter Mesosmesos.apache.org/Google Borg的翻版Hadoop YarnWelcome to Apache? Hadoop?!類似於Mesos日誌收集系統Facebook Scribefacebookarchive/scribeFacebook開源的日誌收集系統,能夠從各種日誌源上收集日誌,存儲到一個中央存儲系統(可以是NFS,分散式文件系統等)上,以便於進行集中統計分析處理,常與Hadoop結合使用,Scribe用於向HDFS中Push日誌Cloudera FlumeWelcome to Apache FlumeCloudera提供的日誌收集系統,支持對日誌的實時性收集logstashLogstash: Collect, Parse, Transform Logs日誌管理、分析和傳輸工具,可配合kibana、ElasticSearch組建成日誌查詢系統kibanaKibana: Explore, Visualize, Discover Data為日誌提供友好的Web查詢頁面消息系統StormMQMessage Queues. As a Service. In the Cloud.

ZeroMQDistributed Messaging - zeromq很底層的高性能網路庫

RabbitMQMessaging that just works在AMQP基礎上完整的,可復用的企業消息系統Apache ActiveMQApache ActiveMQ ? -- Index能力強勁的開源消息匯流排JafkaApache Kafka開源的、高性能的、跨語言分散式消息系統,最早是由Apache孵化的Kafka(由LinkedIn捐助給Apache)克隆而來Apache KafkaApache KafkaLinkedin於2010年12月份開源的分散式消息系統,它主要用於處理活躍的流式數據,由Scala寫成分散式服務ZooKeeperApache ZooKeeper - Home分散式鎖服務,PoxOS演算法的實現,對應Google的ChubbyRPCApache AvroWelcome to Apache Avro!Hadoop中的RPCFacebook ThriftApache Thrift - HomeRPC,支持C++/Java/PHP等眾多語言集群管理Nagiosnagios.org/監視系統運行狀態和網路信息的監視系統Gangliaganglia.sourceforge.netUC Berkeley發起的一個開源集群監視項目,設計用於測量數以千計的節點。Apache Ambariambari.apache.org/Hadoop成員,管理和監視Apache Hadoop集群的開源框架基礎設施LevelDBcode.google.com/p/levelGoogle頂級大牛開發的單機版鍵值資料庫,具有非常高的寫性能SSTable

源於Google,orted String TableRecordIO

源於GoogleFlat Buffersgoogle/flatbuffers針對遊戲開發的,高效的跨平台序列化庫,相比Proto Buffers開銷更小,因為Flat Buffers沒有解析過程Protocol Bufferscode.google.com/p/protoGoogle公司開發的一種數據描述語言,類似於XML能夠將結構化數據序列化,可用於數據存儲、通信協議等方面。它不依賴於語言和平台並且可擴展性極強。Consistent Hashing

1997年由麻省理工學院提出,目標是為了解決網際網路中的熱點(Hot spot)問題,初衷和CARP十分類似,基本解決了在P2P環境中最為關鍵的問題——如何在動態的網路拓撲中分布存儲和路由。Nettynetty.io/JBOSS提供的一個java開源框架,提供非同步的、事件驅動的網路應用程序框架,用以快速開發高性能、高可靠性的網路伺服器和客戶端程序。BloomFilter

布隆過濾器,1970年由布隆提出,是一個很長的二進位矢量和一系列隨機映射函數,可以用於檢索一個元素是否在一個集合中,優點是空間效率和查詢時間都遠遠超過一般的演算法,缺點是有一定的誤識別率和刪除困難。搜索引擎Nutchnutch.apache.org/開源Java 實現的搜索引擎,誕生Hadoop的地方。Lucenelucene.apache.org/一套信息檢索工具包,但並不包含搜索引擎系統,它包含了索引結構、讀寫索引工具、相關性工具、排序等功能。SolrCloud

基於Solr和Zookeeper的分散式搜索, Solr4.0 的核心組件之一,主要思想是使用 Zookeeper 作為集群的配置信息中心Solrlucene.apache.org/solr/Solr是基於Lucene的搜索。ElasticSearchelasticsearch.org/開源的(Apache2協議),分散式的,RESTful的,構建在Apache Lucene之上的的搜索引擎。elasticsearch.cn/Sphinxsphinxsearch.com一個基於SQL的全文檢索引擎,可結合MySQL、PostgreSQL做全文檢索,可提供比資料庫本身更專業的搜索功能,單一索引可達1億條記錄,1000萬條記錄情況下的查詢速度為0.x秒(毫秒級)。SenseiDBsenseidb.comLinkin公司開發的一個開源分散式實時半結構化資料庫,在全文索引的基礎封裝了Browse Query Language (BQL,類似SQL)的查詢語法。數據挖掘Mahoutmahout.apache.org/Hadoop成員,目標是建立一個可擴展的機器學習庫IaasOpenStackopenstack.org/美國國家航空航天局和Rackspace合作研發的,以Apache許可證授權雲平台管理的項目,它不是一個軟體。這個項目由幾個主要的組件組合起來完成一些具體的工作,旨在為公共及私有雲的建設與管理提供軟體的開源項目。6個核心項目:Nova(計算,Compute),Swift(對象存儲,Object),Glance(鏡像,Image),Keystone(身份,Identity),Horizon(自助門戶,Dashboard),Quantum & Melange(網路&地址管理),另外還有若干社區項目,如Rackspace(負載均衡)、Rackspace(關係型資料庫)。Dockerdocker.io/應用容器引擎,讓開發者可打包應用及依賴包到一個可移植的容器中,然後發布到Linux機器上,也可實現虛擬化。Kubernetesgithub.com/GoogleCloudPGoogle開源的容器集群管理系統Imctfygithub.com/google/ImctfGoogle開源的Linux容器監控管理Dapperbigbully.github.io/DappGoogle生產環境下的大規模分散式系統的跟蹤系統Zipkintwitter.github.io/zipkiTwitter開源的參考Google Dapper而開發,使用Apache Cassandra做為數據存儲系統github.com/twitter/zipk

◆ ◆ ◆

常見的數據挖掘分析處理工具

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年正式將英文全稱更改為「統計產品與服務解決方案」。用作多個領域和行業,是世界上應用最廣泛的專業統計軟體。


推薦閱讀:

R語言實戰—04數據基本管理
美國總統大選數據是如何出爐的?
上海證券交易所Level-2行情對比Level-1行情有什麼優勢?
治療癌症的有效解藥--基因數據

TAG:數據 |