大數據技術人員工具包最全集合
數據科學融合了多門學科并且建立在這些學科的理論和技術之上,包括數學、概率模型、統計學、機器學習、數據倉庫、可視化等。在實際應用中,數據科學包括數據的收集、清洗、分析、可視化以及數據應用整個迭代過程,最終幫助組織制定正確的發展決策數據科學的從業者稱為數據科學家。數據科學家有其獨特的基本思路與常用工具,本文全面梳理數據分析師和數據科學家使用的工具包,包括開源的技術平臺相關工具、挖掘分析處理工具、其它常見工具等幾百種,幾十個大類,部分網址!
數據科學家是有著開闊視野的復合型人才,他們既有堅實的數據科學基礎,如數學、統計學、計算機學等,又具備廣泛的業務知識和經驗數據科學家通過精深的技術和專業知識在某些科學學科領域解決復雜的數據問題,從而制定出適合不同決策人員的大數據計劃和策略。數據分析師和數據科學家使用的工具在網上的MOOC有提供,比如2016年2月1日約翰-霍普金斯大學Coursera數據科學專業化課程等網絡課程。數據科學家的常用工具與基本思路,并對數據、相關問題和數據分析師和數據科學家使用的工具做了綜合概述。
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寫的,該系統是模塊化的?,F在你可以有一個和iPython一樣的界面,在筆記本電腦中方便共享代碼,使得文檔和數據可視化。至少已經支持50個語言的內核,包括Lisp,R,F #,Perl,Ruby,Scala等。事實上即使IPython本身也只是一個jupyter Python模塊。通過REPL(讀,評價,打印循環)語言內核通信是通過協議,類似于nrepl或Slime。很高興看到這樣一個有用的軟件,得到了顯著的非營利組織資助,以進一步發展,如并行執行和多用戶筆記本應用。
20. Zeppelin
Zeppelin是一個Apache的孵化項目. 一個基于web的筆記本,支持交互式數據分析。你可以用SQL、Scala等做出數據驅動的、交互、協作的文檔。(類似于ipython notebook,可以直接在瀏覽器中寫代碼、筆記并共享)。一些基本的圖表已經包含在Zeppelin中??梢暬⒉恢幌抻赟parkSQL查詢,后端的任何語言的輸出都可以被識別并可視化。 Zeppelin 提供了一個 URL 用來僅僅展示結果,那個頁面不包括 Zeppelin 的菜單和按鈕。這樣,你可以輕易地將其作為一個iframe集成到你的網站。Zeppelin還不成熟。我想把一個演示,但找不到一個簡單的方法來禁用“Shell”作為一個執行選項(在其他事情)。然而,它已經看起來的視覺效果比IPython筆記本應用更好,Apache Zeppelin (孵化中) 是 Apache2 許可軟件。提供100%的開源。
- 上一篇:上海十大互聯網創業家揭曉 運滿滿創始人張暉上榜 2016/3/22
- 下一篇:大數據項目中的資源供給困局 2016/3/22