天天看點

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

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

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

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

資料科學家是有着開闊視野的複合型人才,他們既有堅實的資料科學基礎,如數學、統計學、計算機學等,又具備廣泛的業務知識和經驗資料科學家通過精深的技術和專業知識在某些科學學科領域解決複雜的資料問題,進而制定出适合不同決策人員的大資料計劃和政策。資料分析師和資料科學家使用的工具在網上的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等,下面是文檔簡版:

類别

名稱

官網

備注

查詢引擎

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/

離線計算

hadoop mapreduce

http://hadoop.apache.org/

經典的大資料批處理系統

berkeley spark

http://spark.incubator.apache.org/

使用scala語言實作,和mapreduce有較大的競争關系,性能強于mapreduce

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

gfs在hadoop中的實作

資源管理

twitter mesos

http://mesos.apache.org/

google borg的翻版

hadoop yarn

類似于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

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叢集的開源架構

基礎設施

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/

常見的資料挖掘分析處理工具

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

原文釋出時間為:2016-03-17

本文來自雲栖社群合作夥伴“大資料文摘”,了解相關資訊可以關注“bigdatadigest”微信公衆号