學(xué)習(xí)大數(shù)據(jù)開發(fā),一定不可錯過的大數(shù)據(jù)組件圖譜——很齊全
HDFSHadoop Distributed File System,簡稱HDFS,是一個分布式文件系統(tǒng)。HDFS是一個高度容錯性的系統(tǒng),適合部署在廉價的機器上。HDFS能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。
GlusterFS是一個集群的文件系統(tǒng),支持PB級的數(shù)據(jù)量。GlusterFS 通過RDMA和TCP/IP方式將分布到不同服務(wù)器上的存儲空間匯集成一個大的網(wǎng)絡(luò)化并行文件系統(tǒng)。
Ceph是新一代開源分布式文件系統(tǒng),主要目標(biāo)是設(shè)計成基于POSIX的沒有單點故障的分布式文件系統(tǒng),提高數(shù)據(jù)的容錯性并實現(xiàn)無縫的復(fù)制。
Lustre是一個大規(guī)模的、安全可靠的、具備高可用性的集群文件系統(tǒng),它是由SUN公司開發(fā)和維護(hù)的。該項目主要的目的就是開發(fā)下一代的集群文件系統(tǒng),目前可以支持超過10000個節(jié)點,數(shù)以PB的數(shù)據(jù)存儲量。
Alluxio前身是Tachyon,是以內(nèi)存為中心的分布式文件系統(tǒng),擁有高性能和容錯能力,能夠為集群框架(如Spark、MapReduce)提供可靠的內(nèi)存級速度的文件共享服務(wù)。
PVFS是一個高性能、開源的并行文件系統(tǒng),主要用于并行計算環(huán)境中的應(yīng)用。PVFS特別為超大數(shù)量的客戶端和服務(wù)器端所設(shè)計,它的模塊化設(shè)計結(jié)構(gòu)可輕松的添加新的硬件和算法支持。
數(shù)據(jù)存儲
MongoDB是一個基于分布式文件存儲的數(shù)據(jù)庫。由C++語言編寫。旨在為web應(yīng)用提供可擴展的高性能數(shù)據(jù)存儲解決方案。介于關(guān)系數(shù)據(jù)庫和非關(guān)系數(shù)據(jù)庫之間的開源產(chǎn)品,是非關(guān)系數(shù)據(jù)庫當(dāng)中功能最豐富、最像關(guān)系數(shù)據(jù)庫的產(chǎn)品。
Redis是一個高性能的key-value存儲系統(tǒng),和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。Redis的出現(xiàn),很大程度補償了memcached這類key/value存儲的不足,在部分場合可以對關(guān)系數(shù)據(jù)庫起到很好的補充作用。
HDFSHadoop分布式文件系統(tǒng)(HDFS)被設(shè)計成適合運行在通用硬件(commodity hardware)上的分布式文件系統(tǒng)。它和現(xiàn)有的分布式文件系統(tǒng)有很多共同點。HDFS是一個高度容錯性的系統(tǒng),適合部署在廉價的機器上。HDFS能提供高吞吐量的數(shù)據(jù)訪問,非常適合大規(guī)模數(shù)據(jù)集上的應(yīng)用。
HBASE是Hadoop的數(shù)據(jù)庫,一個分布式、可擴展、大數(shù)據(jù)的存儲。是為有數(shù)十億行和數(shù)百萬列的超大表設(shè)計的,是一種分布式數(shù)據(jù)庫,可以對大數(shù)據(jù)進(jìn)行隨機性的實時讀取/寫入訪問。提供類似谷歌Bigtable的存儲能力,基于Hadoop和Hadoop分布式文件系統(tǒng)(HDFS)而建。
Neo4j是一個高性能的,NOSQL圖形數(shù)據(jù)庫,它將結(jié)構(gòu)化數(shù)據(jù)存儲在網(wǎng)絡(luò)上而不是表中。自稱“世界上第一個和最好的圖形數(shù)據(jù)庫”,“速度最快、擴展性最佳的原生圖形數(shù)據(jù)庫”,“最大和最有活力的社區(qū)”。用戶包括Telenor、Wazoku、ebay、必能寶(Pitney Bowes)、MigRaven、思樂(Schleich)和Glowbl等。
Vertica基于列存儲高性能和高可用性設(shè)計的數(shù)據(jù)庫方案,由于對大規(guī)模并行處理(MPP)技術(shù)的支持,提供細(xì)粒度、可伸縮性和可用性的優(yōu)勢。每個節(jié)點完全獨立運作,完全無共享架構(gòu),降低了共享資源的系統(tǒng)競爭。
Cassandra是一個混合型的非關(guān)系的數(shù)據(jù)庫,類似于Google的BigTable,其主要功能比Dynamo (分布式的Key-Value存儲系統(tǒng))更豐富。這種NoSQL數(shù)據(jù)庫最初由Facebook開發(fā),現(xiàn)已被1500多家企業(yè)組織使用,包括蘋果、歐洲原子核研究組織(CERN)、康卡斯特、電子港灣、GitHub、GoDaddy、Hulu、Instagram、Intuit、Netfilx、Reddit及其他機構(gòu)。
CouchDB號稱是“一款完全擁抱互聯(lián)網(wǎng)的數(shù)據(jù)庫”,它將數(shù)據(jù)存儲在JSON文檔中,這種文檔可以通過Web瀏覽器來查詢,并且用JavaScript來處理。它易于使用,在分布式上網(wǎng)絡(luò)上具有高可用性和高擴展性。
Dynamo是一個經(jīng)典的分布式Key-Value 存儲系統(tǒng),具備去中心化、高可用性、高擴展性的特點。Dynamo在Amazon中得到了成功的應(yīng)用,能夠跨數(shù)據(jù)中心部署于上萬個結(jié)點上提供服務(wù),它的設(shè)計思想也被后續(xù)的許多分布式系統(tǒng)借鑒。
Amazon SimpleDB是一個用Erlang編寫的高可用的NoSQL數(shù)據(jù)存儲,能夠減輕數(shù)據(jù)庫管理工作,開發(fā)人員只需通過Web服務(wù)請求執(zhí)行數(shù)據(jù)項的存儲和查詢,Amazon SimpleDB 將負(fù)責(zé)余下的工作。作為一項Web 服務(wù),像Amazon的EC2和S3一樣,是Amazon網(wǎng)絡(luò)服務(wù)的一部分。
Hypertable是一個開源、高性能、可伸縮的數(shù)據(jù)庫,它采用與Google的Bigtable相似的模型。它與Hadoop兼容,性能超高,其用戶包括電子港灣、百度、高朋、Yelp及另外許多互聯(lián)網(wǎng)公司。
內(nèi)存技術(shù)
Terracotta聲稱其BigMemory技術(shù)是“世界上首屈一指的內(nèi)存中數(shù)據(jù)管理平臺”,支持簡單、可擴展、實時消息,聲稱在190個國家擁有210萬開發(fā)人員,全球1000家企業(yè)部署了其軟件。
Ignite是一種高性能、整合式、分布式的內(nèi)存中平臺,可用于對大規(guī)模數(shù)據(jù)集執(zhí)行實時計算和處理,速度比傳統(tǒng)的基于磁盤的技術(shù)或閃存技術(shù)高出好幾個數(shù)量級。該平臺包括數(shù)據(jù)網(wǎng)格、計算網(wǎng)格、服務(wù)網(wǎng)格、流媒體、Hadoop加速、高級集群、文件系統(tǒng)、消息傳遞、事件和數(shù)據(jù)結(jié)構(gòu)等功能。
GemFire Pivotal宣布它將開放其大數(shù)據(jù)套件關(guān)鍵組件的源代碼,其中包括GemFire內(nèi)存中NoSQL數(shù)據(jù)庫。它已向Apache軟件基金會遞交了一項提案,以便在“Geode”的名下管理GemFire數(shù)據(jù)庫的核心引擎。
GridGain由Apache Ignite驅(qū)動的GridGrain提供內(nèi)存中數(shù)據(jù)結(jié)構(gòu),用于迅速處理大數(shù)據(jù),還提供基于同一技術(shù)的Hadoop加速器。
數(shù)據(jù)搜集
Logstash是一個應(yīng)用程序日志、事件的傳輸、處理、管理和搜索的平臺。可以用它來統(tǒng)一對應(yīng)用程序日志進(jìn)行收集管理,提供了Web接口用于查詢和統(tǒng)計。
ScribeScribe是Facebook開源的日志收集系統(tǒng),它能夠從各種日志源上收集日志,存儲到一個中央存儲系統(tǒng)(可以是NFS,分布式文件系統(tǒng)等)上,以便于進(jìn)行集中統(tǒng)計分析處理。
Flume是Cloudera提供的一個高可用的、高可靠的、分布式的海量日志采集、聚合和傳輸?shù)南到y(tǒng)。Flume支持在日志系統(tǒng)中定制各類數(shù)據(jù)發(fā)送方,用于收集數(shù)據(jù)。同時,F(xiàn)lume支持對數(shù)據(jù)進(jìn)行簡單處理,并寫入各種數(shù)據(jù)接受方(可定制)。
消息系統(tǒng)
RabbitMQ是一個受歡迎的消息代理系統(tǒng),通常用于應(yīng)用程序之間或者程序的不同組件之間通過消息來進(jìn)行集成。RabbitMQ提供可靠的應(yīng)用消息發(fā)送、易于使用、支持所有主流操作系統(tǒng)、支持大量開發(fā)者平臺。
ActiveMQ是Apache出品,號稱“最流行的,最強大”的開源消息集成模式服務(wù)器。ActiveMQ特點是速度快,支持多種跨語言的客戶端和協(xié)議,其企業(yè)集成模式和許多先進(jìn)的功能易于使用,是一個完全支持JMS1.1和J2EE 1.4規(guī)范的JMS Provider實現(xiàn)。
Kafka是一種高吞吐量的分布式發(fā)布訂閱消息系統(tǒng),它可以處理消費者規(guī)模網(wǎng)站中的所有動作流數(shù)據(jù),目前已成為大數(shù)據(jù)系統(tǒng)在異步和分布式消息之間的最佳選擇。
數(shù)據(jù)處理
Spark是一個高速、通用大數(shù)據(jù)計算處理引擎。擁有Hadoop MapReduce所具有的優(yōu)點,但不同的是Job的中間輸出結(jié)果可以保存在內(nèi)存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數(shù)據(jù)挖掘與機器學(xué)習(xí)等需要迭代的MapReduce的算法。它可以與Hadoop和Apache Mesos一起使用,也可以獨立使用
Kinesis可以構(gòu)建用于處理或分析流數(shù)據(jù)的自定義應(yīng)用程序,來滿足特定需求。Amazon Kinesis Streams 每小時可從數(shù)十萬種來源中連續(xù)捕獲和存儲數(shù)TB數(shù)據(jù),如網(wǎng)站點擊流、財務(wù)交易、社交媒體源、IT日志和定位追蹤事件。
Hadoop是一個開源框架,適合運行在通用硬件,支持用簡單程序模型分布式處理跨集群大數(shù)據(jù)集,支持從單一服務(wù)器到上千服務(wù)器的水平scale up。Apache的Hadoop項目已幾乎與大數(shù)據(jù)劃上了等號,它不斷壯大起來,已成為一個完整的生態(tài)系統(tǒng),擁有眾多開源工具面向高度擴展的分布式計算。高效、可靠、可伸縮,能夠為你的數(shù)據(jù)存儲項目提供所需的YARN、HDFS和基礎(chǔ)架構(gòu),并且運行主要的大數(shù)據(jù)服務(wù)和應(yīng)用程序。
Spark Streaming實現(xiàn)微批處理,目標(biāo)是很方便的建立可擴展、容錯的流應(yīng)用,支持Java、Scala和Python,和Spark無縫集成。Spark Streaming可以讀取數(shù)據(jù)HDFS,F(xiàn)lume,Kafka,Twitter和ZeroMQ,也可以讀取自定義數(shù)據(jù)。
Trident是對Storm的更高一層的抽象,除了提供一套簡單易用的流數(shù)據(jù)處理API之外,它以batch(一組tuples)為單位進(jìn)行處理,這樣一來,可以使得一些處理更簡單和高效。
Flink于今年躋身Apache頂級開源項目,與HDFS完全兼容。Flink提供了基于Java和Scala的API,是一個高效、分布式的通用大數(shù)據(jù)分析引擎。更主要的是,F(xiàn)link支持增量迭代計算,使得系統(tǒng)可以快速地處理數(shù)據(jù)密集型、迭代的任務(wù)。
Samza 出自于LinkedIn,構(gòu)建在Kafka之上的分布式流計算框架,是Apache頂級開源項目??芍苯永肒afka和Hadoop YARN提供容錯、進(jìn)程隔離以及安全、資源管理。
StormStorm是Twitter開源的一個類似于Hadoop的實時數(shù)據(jù)處理框架。編程模型簡單,顯著地降低了實時處理的難度,也是當(dāng)下最人氣的流計算框架之一。與其他計算框架相比,Storm最大的優(yōu)點是毫秒級低延時。
Yahoo S4(Simple Scalable Streaming System)是一個分布式流計算平臺,具備通用、分布式、可擴展的、容錯、可插拔等特點,程序員可以很容易地開發(fā)處理連續(xù)無邊界數(shù)據(jù)流(continuous unbounded streams of data)的應(yīng)用。它的目標(biāo)是填補復(fù)雜專有系統(tǒng)和面向批處理開源產(chǎn)品之間的空白,并提供高性能計算平臺來解決并發(fā)處理系統(tǒng)的復(fù)雜度。
HaLoop是一個Hadoop MapReduce框架的修改版本,其目標(biāo)是為了高效支持 迭代,遞歸數(shù)據(jù) 分析任務(wù),如PageRank,HITs,K-means,sssp等。
查詢引擎
Presto是一個開源的分布式SQL查詢引擎,適用于交互式分析查詢,可對250PB以上的數(shù)據(jù)進(jìn)行快速地交互式分析。Presto的設(shè)計和編寫是為了解決像Facebook這樣規(guī)模的商業(yè)數(shù)據(jù)倉庫的交互式分析和處理速度的問題。Facebook稱Presto的性能比諸如Hive和MapReduce要好上10倍有多。
Drill于2012年8月份由Apache推出,讓用戶可以使用基于SQL的查詢,查詢Hadoop、NoSQL數(shù)據(jù)庫和云存儲服務(wù)。它能夠運行在上千個節(jié)點的服務(wù)器集群上,且能在幾秒內(nèi)處理PB級或者萬億條的數(shù)據(jù)記錄。它可用于數(shù)據(jù)挖掘和即席查詢,支持一系列廣泛的數(shù)據(jù)庫,包括HBase、MongoDB、MapR-DB、HDFS、MapR-FS、亞馬遜S3、Azure Blob Storage、谷歌云存儲和Swift。
Phoenix是一個Java中間層,可以讓開發(fā)者在Apache HBase上執(zhí)行SQL查詢。Phoenix完全使用Java編寫,并且提供了一個客戶端可嵌入的JDBC驅(qū)動。Phoenix查詢引擎會將SQL查詢轉(zhuǎn)換為一個或多個HBase scan,并編排執(zhí)行以生成標(biāo)準(zhǔn)的JDBC結(jié)果集。
Pig是一種編程語言,它簡化了Hadoop常見的工作任務(wù)。Pig可加載數(shù)據(jù)、轉(zhuǎn)換數(shù)據(jù)以及存儲最終結(jié)果。Pig最大的作用就是為MapReduce框架實現(xiàn)了一套shell腳本 ,類似我們通常熟悉的SQL語句。
Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供簡單的sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運行。 其優(yōu)點是學(xué)習(xí)成本低,可以通過類SQL語句快速實現(xiàn)簡單的MapReduce統(tǒng)計,不必開發(fā)專門的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉庫的統(tǒng)計分析。
SparkSQL的前身是Shark,SparkSQL拋棄原有Shark的代碼并汲取了一些優(yōu)點,如內(nèi)存列存儲(In-Memory Columnar Storage)、Hive兼容性等。由于擺脫了對Hive的依賴性,SparkSQL無論在數(shù)據(jù)兼容、性能優(yōu)化、組件擴展方面都得到了極大的方便。
Stinger原來叫Tez,是下一代Hive,由Hortonworks主導(dǎo)開發(fā),運行在YARN上的DAG計算框架。某些測試下,Stinger能提升10倍左右的性能,同時會讓Hive支持更多的SQL。
Tajo目的是在HDFS之上構(gòu)建一個可靠的、支持關(guān)系型數(shù)據(jù)的分布式數(shù)據(jù)倉庫系統(tǒng),它的重點是提供低延遲、可擴展的ad-hoc查詢和在線數(shù)據(jù)聚集,以及為更傳統(tǒng)的ETL提供工具。
ImpalaCloudera聲稱,基于SQL的Impala數(shù)據(jù)庫是“面向Apache Hadoop的領(lǐng)先的開源分析數(shù)據(jù)庫”。它可以作為一款獨立產(chǎn)品來下載,又是Cloudera的商業(yè)大數(shù)據(jù)產(chǎn)品的一部分。Cloudera Impala 可以直接為存儲在HDFS或HBase中的Hadoop數(shù)據(jù)提供快速、交互式的SQL查詢。
Elasticsearch是一個基于Lucene的搜索服務(wù)器。它提供了一個分布式、支持多用戶的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java開發(fā)的,并作為Apache許可條款下的開放源碼發(fā)布,是當(dāng)前流行的企業(yè)級搜索引擎。設(shè)計用于云計算中,能夠達(dá)到實時搜索、穩(wěn)定、可靠、快速、安裝使用方便。
Solr基于Apache Lucene,是一種高度可靠、高度擴展的企業(yè)搜索平臺。知名用戶包括eHarmony、西爾斯、StubHub、Zappos、百思買、AT&T、Instagram、Netflix、彭博社和Travelocity。
Shark即Hive on Spark,本質(zhì)上是通過Hive的HQL解析,把HQL翻譯成Spark上的RDD操作,然后通過Hive的metadata獲取數(shù)據(jù)庫里的表信息,實際HDFS上的數(shù)據(jù)和文件,會由Shark獲取并放到Spark上運算。Shark的特點就是快,完全兼容Hive,且可以在shell模式下使用rdd2sql()這樣的API,把HQL得到的結(jié)果集,繼續(xù)在scala環(huán)境下運算,支持自己編寫簡單的機器學(xué)習(xí)或簡單分析處理函數(shù),對HQL結(jié)果進(jìn)一步分析計算。
Lucene基于Java的Lucene可以非常迅速地執(zhí)行全文搜索。據(jù)官方網(wǎng)站聲稱,它在現(xiàn)代硬件上每小時能夠檢索超過150GB的數(shù)據(jù),它擁有強大而高效的搜索算法。
分析和報告工具
Kettle這是一個ETL工具集,它允許你管理來自不同數(shù)據(jù)庫的數(shù)據(jù),通過提供一個圖形化的用戶環(huán)境來描述你想做什么,而不是你想怎么做。作為Pentaho的一個重要組成部分,現(xiàn)在在國內(nèi)項目應(yīng)用上逐漸增多。
Kylin是一個開源的分布式分析引擎,提供了基于Hadoop的超大型數(shù)據(jù)集(TB/PB級別)的SQL接口以及多維度的OLAP分布式聯(lián)機分析。最初由eBay開發(fā)并貢獻(xiàn)至開源社區(qū)。它能在亞秒內(nèi)查詢巨大的Hive表。
Kibana是一個使用Apache 開源協(xié)議的Elasticsearch 分析和搜索儀表板,可作為Logstash和ElasticSearch日志分析的 Web 接口,對日志進(jìn)行高效的搜索、可視化、分析等各種操作。
Druid是一個用于大數(shù)據(jù)實時查詢和分析的高容錯、高性能、分布式的開源系統(tǒng),旨在快速處理大規(guī)模的數(shù)據(jù),并能夠?qū)崿F(xiàn)快速查詢和分析。
KNIME的全稱是“康斯坦茨信息挖掘工具”(Konstanz Information Miner),是一個開源分析和報表平臺。宣稱“是任何數(shù)據(jù)科學(xué)家完美的工具箱,超過1000個模塊,可運行數(shù)百個實例,全面的集成工具,以及先進(jìn)的算法”。
Zeppelin是一個提供交互數(shù)據(jù)分析且基于Web的筆記本。方便你做出可數(shù)據(jù)驅(qū)動的、可交互且可協(xié)作的精美文檔,并且支持多種語言,包括 Scala(使用 Apache Spark)、Python(Apache Spark)、SparkSQL、 Hive、 Markdown、Shell等。
Talend Open Studio是第一家針對的數(shù)據(jù)集成工具市場的ETL(數(shù)據(jù)的提取Extract、傳輸Transform、載入Load)開源軟件供應(yīng)商。Talend的下載量已超過200萬人次,其開源軟件提供了數(shù)據(jù)整合功能。其用戶包括美國國際集團(tuán)(AIG)、康卡斯特、電子港灣、通用電氣、三星、Ticketmaster和韋里遜等企業(yè)組織。
Splunk是機器數(shù)據(jù)的引擎。使用 Splunk 可收集、索引和利用所有應(yīng)用程序、服務(wù)器和設(shè)備(物理、虛擬和云中)生成的快速移動型計算機數(shù)據(jù),從一個位置搜索并分析所有實時和歷史數(shù)據(jù)。
Pentaho是世界上最流行的開源商務(wù)智能軟件,以工作流為核心的、強調(diào)面向解決方案而非工具組件的、基于java平臺的商業(yè)智能(Business Intelligence)套件。包括一個web server平臺和幾個工具軟件:報表、分析、圖表、數(shù)據(jù)集成、數(shù)據(jù)挖掘等,可以說包括了商務(wù)智能的方方面面。
Jaspersoft提供了靈活、可嵌入的商業(yè)智能工具,用戶包括眾多企業(yè)組織:高朋、冠群科技、美國農(nóng)業(yè)部、愛立信、時代華納有線電視、奧林匹克鋼鐵、內(nèi)斯拉斯加大學(xué)和通用動力公司。
SpagoBISpago被市場分析師們稱為“開源領(lǐng)袖”,它提供商業(yè)智能、中間件和質(zhì)量保證軟件,另外還提供相應(yīng)的Java EE應(yīng)用程序開發(fā)框架。
調(diào)度與管理服務(wù)
Azkaban是一款基于Java編寫的任務(wù)調(diào)度系統(tǒng)任務(wù)調(diào)度,來自LinkedIn公司,用于管理他們的Hadoop批處理工作流。Azkaban根據(jù)工作的依賴性進(jìn)行排序,提供友好的Web用戶界面來維護(hù)和跟蹤用戶的工作流程。
YARN是一種新的Hadoop資源管理器,它是一個通用資源管理系統(tǒng),可為上層應(yīng)用提供統(tǒng)一的資源管理和調(diào)度,解決了舊MapReduce框架的性能瓶頸。它的基本思想是把資源管理和作業(yè)調(diào)度/監(jiān)控的功能分割到單獨的守護(hù)進(jìn)程。
Mesos是由加州大學(xué)伯克利分校的AMPLab首先開發(fā)的一款開源群集管理軟件,支持Hadoop、ElasticSearch、Spark、Storm 和Kafka等架構(gòu)。對數(shù)據(jù)中心而言它就像一個單一的資源池,從物理或虛擬機器中抽離了CPU,內(nèi)存,存儲以及其它計算資源, 很容易建立和有效運行具備容錯性和彈性的分布式系統(tǒng)。
Ambari作為Hadoop生態(tài)系統(tǒng)的一部分,提供了基于Web的直觀界面,可用于配置、管理和監(jiān)控Hadoop集群。目前已支持大多數(shù)Hadoop組件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeper、Sqoop和Hcatalog等。
ZooKeeper是一個分布式的應(yīng)用程序協(xié)調(diào)服務(wù),是Hadoop和Hbase的重要組件。它是一個為分布式應(yīng)用提供一致性服務(wù)的工具,讓Hadoop集群里面的節(jié)點可以彼此協(xié)調(diào)。ZooKeeper現(xiàn)在已經(jīng)成為了 Apache的頂級項目,為分布式系統(tǒng)提供了高效可靠且易于使用的協(xié)同服務(wù)。
Thrift在2007年facebook提交Apache基金會將Thrift作為一個開源項目,對于當(dāng)時的facebook來說創(chuàng)造thrift是為了解決facebook系統(tǒng)中各系統(tǒng)間大數(shù)據(jù)量的傳輸通信以及系統(tǒng)之間語言環(huán)境不同需要跨平臺的特性。
Chukwa是監(jiān)測大型分布式系統(tǒng)的一個開源數(shù)據(jù)采集系統(tǒng),建立在HDFS/MapReduce框架之上并繼承了Hadoop的可伸縮性和可靠性,可以收集來自大型分布式系統(tǒng)的數(shù)據(jù),用于監(jiān)控。它還包括靈活而強大的顯示工具用于監(jiān)控、分析結(jié)果。
機器學(xué)習(xí)
Tensorflow是Google開源的一款深度學(xué)習(xí)工具,使用C++語言開發(fā),上層提供Python API。在開源之后,在工業(yè)界和學(xué)術(shù)界引起了極大的震動,因為TensorFlow曾經(jīng)是著名的Google Brain計劃中的一部分,Google Brain項目的成功曾經(jīng)吸引了眾多科學(xué)家和研究人員往深度學(xué)習(xí)這個“坑”里面跳,這也是當(dāng)今深度學(xué)習(xí)如此繁榮的重要原因。
Theano是老牌、穩(wěn)定的庫之一。它是深度學(xué)習(xí)開源工具的鼻祖,由蒙特利爾理工學(xué)院時間開發(fā)于2008年并將其開源,框架使用Python語言開發(fā)。它是深度學(xué)習(xí)庫的發(fā)軔,許多在學(xué)術(shù)界和工業(yè)界有影響力的深度學(xué)習(xí)框架都構(gòu)建在Theano之上,并逐步形成了自身的生態(tài)系統(tǒng),這其中就包含了著名的Keras、Lasagne和Blocks。Theano是底層庫,遵循Tensorflow風(fēng)格。因此不適合深度學(xué)習(xí),而更合適數(shù)值計算優(yōu)化。它支持自動函數(shù)梯度計算,它有 Python接口 ,集成了Numpy,使得這個庫從一開始就成為通用深度學(xué)習(xí)最常用的庫之一。
Keras是一個非常高層的庫,工作在Theano或Tensorflow(可配置)之上。此外,Keras強調(diào)極簡主義,你可以用寥寥可數(shù)的幾行代碼來構(gòu)建神經(jīng)網(wǎng)絡(luò)。在 這里 ,您可以看到一個Keras代碼示例,與在Tensorflow中實現(xiàn)相同功能所需的代碼相比較。
DSSTNE(Deep Scalable Sparse Tensor Network Engine,DSSTNE)是Amazon開源的一個非??岬目蚣?,由C++語言實現(xiàn)。但它經(jīng)常被忽視。為什么?因為,撇開其他因素不談,它并不是為一般用途設(shè)計的。DSSTNE只做一件事,但它做得很好:推薦系統(tǒng)。正如它的官網(wǎng)所言,它不是作為研究用途,也不是用于測試想法,而是為了用于生產(chǎn)的框架。
Lasagne是一個工作在Theano之上的庫。它的任務(wù)是將深度學(xué)習(xí)算法的復(fù)雜計算予以簡單地抽象化,并提供一個更友好的 Python 接口。這是一個老牌的庫,長久以來,它是一個具備高擴展性的工具。在Ricardo看來,它的發(fā)展速度跟不上Keras。它們適用的領(lǐng)域相同,但是,Keras有更好的、更完善的文檔。
Torch是Facebook和Twitter主推的一個特別知名的深度學(xué)習(xí)框架,F(xiàn)acebook Reseach和DeepMind所使用的框架,正是Torch(DeepMind被Google收購之后才轉(zhuǎn)向TensorFlow)。出于性能的考慮, 它使用了一種比較小眾的編程語言Lua ,目前在音頻、圖像及視頻處理方面有著大量的應(yīng)用。在目前深度學(xué)習(xí)大部分以Python為編程語言的大環(huán)境之下,一個以Lua為編程語言的框架只有更多的劣勢,而不是優(yōu)勢。Ricardo沒有Lua的使用經(jīng)驗,他表示,如果他要用Torch的話,就必須先學(xué)習(xí)Lua語言才能使用Torch。就他個人來說,更傾向于熟悉的Python、Matlab或者C++來實現(xiàn)。
mxnet是支持大多數(shù)編程語言的庫之一,它支持Python、R、C++、Julia等編程語言。Ricardo覺得使用R語言的人們會特別喜歡mxnet,因為直到現(xiàn)在,在深度學(xué)習(xí)的編程語言領(lǐng)域中,Python是衛(wèi)冕之王。
Ricardo以前并沒有過多關(guān)注mxnet,直到Amazon AWS宣布將mxnet作為其 深度學(xué)習(xí)AMI 中的 參考庫 時,提到了它巨大的水平擴展能力,他才開始關(guān)注。
Ricardo表示他對多GPU的擴展能力有點懷疑,但仍然很愿意去了解實驗更多的細(xì)節(jié)。但目前還是對mxnet的能力抱有懷疑的態(tài)度。
DL4J,全名是Deep Learning for Java。正如其名,它支持Java。Ricardo說,他之所以能接觸到這個庫,是因為它的文檔。當(dāng)時,他在尋找 限制波爾茲曼機(Restricted Boltzman Machines) 、 自編碼器(Autoencoders) ,在DL4J找到這兩個文檔,文檔寫得很清楚,有理論,也有代碼示例。Ricardo表示D4LJ的文檔真的是一個藝術(shù)品,其他庫的文檔應(yīng)該向它學(xué)習(xí)。
DL4J背后的公司Skymind意識到,雖然在深度學(xué)習(xí)世界中,Python是王,但大部分程序員都是Java起步的,因此,DL4J兼容JVM,也適用于Java、Clojure和Scala。 隨著Scala的潮起潮落,它也被很多 有前途的初創(chuàng)公司 使用。
Cognitive Toolkit,就是之前被大家所熟知的縮略名CNTK,但最近剛更改為現(xiàn)在這個名字,可能利用Microsoft認(rèn)知服務(wù)(Microsoft Cognitive services)的影響力。在發(fā)布的基準(zhǔn)測試中,它似乎是非常強大的工具,支持垂直和水平推移。
到目前為止,認(rèn)知工具包似乎不太流行。關(guān)于這個庫,還沒有看到有很多相關(guān)的博客、網(wǎng)絡(luò)示例,或者在Kaggle里的相關(guān)評論。Ricardo表示這看起來有點奇怪,因為這是一個背靠微軟研究的框架,特別強調(diào)自己的推移能力。而且這個研究團(tuán)隊在語音識別上打破了世界紀(jì)錄并逼近了人類水平。
你可以在他們的項目Wiki中的示例,了解到認(rèn)知工具包在Python的語法和Keras非常相似。
Caffe是最老的框架之一,比老牌還要老牌。 Caffe 是加州大學(xué)伯克利分校視覺與學(xué)習(xí)中心(Berkeley Vision and Learning Center ,BVLC)貢獻(xiàn)出來的一套深度學(xué)習(xí)工具,使用C/C++開發(fā),上層提供Python API。Caffe同樣也在走分布式路線,例如著名的Caffe On Spark項目。
Hivemall結(jié)合了面向Hive的多種機器學(xué)習(xí)算法,它包括了很多擴展性很好的算法,可用于數(shù)據(jù)分類、遞歸、推薦、k最近鄰、異常檢測和特征哈希等方面的分析應(yīng)用。
RapidMiner 具有豐富數(shù)據(jù)挖掘分析和算法功能,常用于解決各種的商業(yè)關(guān)鍵問題,解決方案覆蓋了各個領(lǐng)域,包括汽車、銀行、保險、生命科學(xué)、制造業(yè)、石油和天然氣、零售業(yè)及快消行業(yè)、通訊業(yè)、以及公用事業(yè)等各個行業(yè)。
Mahout目的是“為快速創(chuàng)建可擴展、高性能的機器學(xué)習(xí)應(yīng)用程序而打造一個環(huán)境”,主要特點是為可伸縮的算法提供可擴展環(huán)境、面向Scala/Spark/H2O/Flink的新穎算法、Samsara(類似R的矢量數(shù)學(xué)環(huán)境),它還包括了用于在MapReduce上進(jìn)行數(shù)據(jù)挖掘的眾多算法。
開發(fā)平臺
Lumify歸Altamira科技公司(以國家安全技術(shù)而聞名)所有,這是一種開源大數(shù)據(jù)整合、分析和可視化平臺。
Lingual是Cascading的高級擴展,為Hadoop提供了一個ANSI SQL接口極大地簡化了應(yīng)用程序的開發(fā)和集成。Lingual實現(xiàn)了連接現(xiàn)有的商業(yè)智能(BI)工具,優(yōu)化了計算成本,加快了基于Hadoop的應(yīng)用開發(fā)速度。
Beam基于Java提供了統(tǒng)一的數(shù)據(jù)進(jìn)程管道開發(fā),并且能夠很好地支持Spark和Flink。提供很多在線框架,開發(fā)者無需學(xué)太多框架。
Cascading是一個基于Hadoop建立的API,用來創(chuàng)建復(fù)雜和容錯數(shù)據(jù)處理工作流。它抽象了集群拓?fù)浣Y(jié)構(gòu)和配置,使得不用考慮背后的MapReduce,就能快速開發(fā)復(fù)雜的分布式應(yīng)用。
HPCC作為Hadoop之外的一種選擇,是一個利用集群服務(wù)器進(jìn)行大數(shù)據(jù)分析的系統(tǒng),HPCC在LexisNexis內(nèi)部使用多年,是一個成熟可靠的系統(tǒng),包含一系列的工具、一個稱為ECL的高級編程語言、以及相關(guān)的數(shù)據(jù)倉庫,擴展性超強。