轉一篇,介紹得比較全面。
URL:
https://www.codetd.com/article/11598609
前言
花了一點時間,整理了大數據相關開源項目、組件和官網地址。按照實際應用功能的不同,分為以下10個部分,并在目錄圖中進行歸納,后續章節的內容則是分別介紹各組件的背景及應用場景。
- 調度與管理服務
- 文件系統
- 數據搜集
- 消息系統
- 內存技術
- 數據處理
- 查詢引擎
- 分析和報告工具
- 機器學習
- 開發平臺
目錄圖:
類別 | 開源項目 |
---|---|
調度與管理服務 | Azkaban 、YARN 、Mesos、Ambari 、ZooKeeper 、Thrift 、Chukwa |
文件系統 | Lustre 、HDFS 、GlusterFS 、Alluxio 、Ceph、PVFS 、QFS |
數據搜集 | Logstash 、Scribe 、Flume |
消息系統 | RabbitMQ 、ActiveMQ 、ActiveMQ 、Kafka |
內存技術 | Terracotta 、Ignite 、GemFire 、GridGain |
數據處理 | Spark,Kinesis ,Hadoop ,Flink ,Storm,HaLoop |
查詢引擎 | Presto ,Drill ,Phoenix ,Hive ,SparkSQL,Tajo ,Impala ,Elasticsearch ,Solr ,Shark ,Lucene |
分析和報告工具 | Kettle,Kylin ,Kibana ,Druid ,KNIME ,Zeppelin ,Talend ,Splunk ,Pentaho ,Jaspersoft ,SpagoBI |
機器學習 | Tensorflow,Theano,Keras,DSSTNE,Lasagne,Torch,mxnet,DL4J,Cognitive Toolkit,Caffe,Hivemall ,RapidMiner ,Mahout |
開發平臺 | Lumify ,Lingual ,Beam ,Cascading ,HPCC |
1:調度與管理服務
大數據調度與管理服務主要包括以下相關軟件:
Azkaban 、YARN 、Mesos、Ambari 、ZooKeeper 、Thrift 、Chukwa 。以下將分別介紹。
1.1:Azkaban
Azkaban 是一款基于Java編寫的任務調度系統任務調度,來自LinkedIn公司,用于管理他們的Hadoop批處理工作流。Azkaban根據工作的依賴性進行排序,提供友好的Web用戶界面來維護和跟蹤用戶的工作流程。
Azkaban官網
1.2:YARN
YARN 是一種新的Hadoop資源管理器,它是一個通用資源管理系統,可為上層應用提供統一的資源管理和調度,解決了舊MapReduce框架的性能瓶頸。它的基本思想是把資源管理和作業調度/監控的功能分割到單獨的守護進程。
1.3:Mesos
Mesos 是由加州大學伯克利分校的AMPLab首先開發的一款開源群集管理軟件,支持Hadoop、ElasticSearch、Spark、Storm 和Kafka等架構。對數據中心而言它就像一個單一的資源池,從物理或虛擬機器中抽離了CPU,內存,存儲以及其它計算資源, 很容易建立和有效運行具備容錯性和彈性的分布式系統。
Mesos 官網
1.4:Ambari
Ambari 作為Hadoop生態系統的一部分,提供了基于Web的直觀界面,可用于配置、管理和監控Hadoop集群。目前已支持大多數Hadoop組件,包括HDFS、MapReduce、Hive、Pig、 Hbase、Zookeper、Sqoop和Hcatalog等。
Ambari 官網
1.5:ZooKeeper
ZooKeeper 是一個分布式的應用程序協調服務,是Hadoop和Hbase的重要組件。它是一個為分布式應用提供一致性服務的工具,讓Hadoop集群里面的節點可以彼此協調。ZooKeeper現在已經成為了 Apache的頂級項目,為分布式系統提供了高效可靠且易于使用的協同服務。
ZooKeeper 官網
1.6:Thrift
Thrift 在2007年facebook提交Apache基金會將Thrift作為一個開源項目,對于當時的facebook來說創造thrift是為了解決facebook系統中各系統間大數據量的傳輸通信以及系統之間語言環境不同需要跨平臺的特性。
Thrift 官網
1.7:Chukwa
Chukwa 是監測大型分布式系統的一個開源數據采集系統,建立在HDFS/MapReduce框架之上并繼承了Hadoop的可伸縮性和可靠性,可以收集來自大型分布式系統的數據,用于監控。它還包括靈活而強大的顯示工具用于監控、分析結果。
Chukwa 官網
2:文件系統
大數據文件系統主要包括以下相關軟件:
Lustre 、HDFS 、GlusterFS 、Alluxio 、Ceph、PVFS 、QFS,以下將分別介紹。
2.1:Lustre
Lustre 是一個大規模的、安全可靠的、具備高可用性的集群文件系統,它是由SUN公司開發和維護的。該項目主要的目的就是開發下一代的集群文件系統,目前可以支持超過10000個節點,數以PB的數據存儲量。
Lustre 官網
2.2:HDFS
HDFS Hadoop Distributed File System,簡稱HDFS,是一個分布式文件系統。HDFS是一個高度容錯性的系統,適合部署在廉價的機器上。HDFS能提供高吞吐量的數據訪問,非常適合大規模數據集上的應用。
Hadoop官網中關于HDFS的介紹
2.3:GlusterFS
GlusterFS 是一個集群的文件系統,支持PB級的數據量。GlusterFS 通過RDMA和TCP/IP方式將分布到不同服務器上的存儲空間匯集成一個大的網絡化并行文件系統。
GlusterFS 官網
2.4:Alluxio
Alluxio 前身是Tachyon,是以內存為中心的分布式文件系統,擁有高性能和容錯能力,能夠為集群框架(如Spark、MapReduce)提供可靠的內存級速度的文件共享服務。
Alluxio 官網
2.5:Ceph
Ceph 是新一代開源分布式文件系統,主要目標是設計成基于POSIX的沒有單點故障的分布式文件系統,提高數據的容錯性并實現無縫的復制。
Ceph 官網
2.6:PVFS
PVFS 是一個高性能、開源的并行文件系統,主要用于并行計算環境中的應用。PVFS特別為超大數量的客戶端和服務器端所設計,它的模塊化設計結構可輕松的添加新的硬件和算法支持。
PVFS 官網
2.7:QFS
QFS Quantcast File System (QFS) 是一個高性能、容錯好、分布式的文件系統,用于開發支持 MapReduce處理或者需要順序讀寫大文件的應用。
QFS 官網
3:數據搜集
大數據數據搜集主要包括以下相關軟件:Logstash 、Scribe 、Flume ,以下將分別介紹。
3.1:Logstash
Logstash 是一個應用程序日志、事件的傳輸、處理、管理和搜索的平臺。可以用它來統一對應用程序日志進行收集管理,提供了Web接口用于查詢和統計。
Logstash 官網
3.2:Scribe
Scribe是Facebook開源的日志收集系統,它能夠從各種日志源上收集日志,存儲到一個中央存儲系統(可以是NFS,分布式文件系統等)上,以便于進行集中統計分析處理。
Scribe相關信息
3.3:Flume
Flume 是Cloudera提供的一個高可用的、高可靠的、分布式的海量日志采集、聚合和傳輸的系統。Flume支持在日志系統中定制各類數據發送方,用于收集數據。同時,Flume支持對數據進行簡單處理,并寫入各種數據接受方(可定制)。
Flume 官網
4:消息系統
大數據消息系統主要包括以下相關軟件:
RabbitMQ 、ActiveMQ 、ActiveMQ 、Kafka ,以下將分別介紹。
4.1:RabbitMQ
RabbitMQ 是一個受歡迎的消息代理系統,通常用于應用程序之間或者程序的不同組件之間通過消息來進行集成。RabbitMQ提供可靠的應用消息發送、易于使用、支持所有主流操作系統、支持大量開發者平臺。
RabbitMQ 官網
4.1:ActiveMQ
ActiveMQ 是Apache出品,號稱“最流行的,最強大”的開源消息集成模式服務器。ActiveMQ特點是速度快,支持多種跨語言的客戶端和協議,其企業集成模式和許多先進的功能易于使用,是一個完全支持JMS1.1和J2EE 1.4規范的JMS Provider實現。
ActiveMQ 官網
4.3:Kafka
Kafka 是一種高吞吐量的分布式發布訂閱消息系統,它可以處理消費者規模網站中的所有動作流數據,目前已成為大數據系統在異步和分布式消息之間的最佳選擇。
Kafka 官網
5:內存技術
大數據內存技術主要包括以下相關軟件:
Terracotta 、Ignite 、GemFire 、GridGain 。以下將分別介紹。
5.1:Terracotta
Terracotta 聲稱其BigMemory技術是“世界上首屈一指的內存中數據管理平臺”,支持簡單、可擴展、實時消息,聲稱在190個國家擁有210萬開發人員,全球1000家企業部署了其軟件。
Terracotta 官網
5.2:Ignite
Ignite 是一種高性能、整合式、分布式的內存中平臺,可用于對大規模數據集執行實時計算和處理,速度比傳統的基于磁盤的技術或閃存技術高出好幾個數量級。該平臺包括數據網格、計算網格、服務網格、流媒體、Hadoop加速、高級集群、文件系統、消息傳遞、事件和數據結構等功能。
Ignite 官網
5.3:GemFire
GemFire Pivotal宣布它將開放其大數據套件關鍵組件的源代碼,其中包括GemFire內存中NoSQL數據庫。它已向Apache軟件基金會遞交了一項提案,以便在“Geode”的名下管理GemFire數據庫的核心引擎。
GemFire 官網
5.4:GridGain
GridGain 由Apache Ignite驅動的GridGrain提供內存中數據結構,用于迅速處理大數據,還提供基于同一技術的Hadoop加速器。
GridGain 官網
6:數據處理
數據處理主要包括以下相關軟件技術:
Spark,Kinesis ,Hadoop ,Flink ,Storm,HaLoop
6.1:Spark
Spark 是一個高速、通用大數據計算處理引擎。擁有Hadoop MapReduce所具有的優點,但不同的是Job的中間輸出結果可以保存在內存中,從而不再需要讀寫HDFS,因此Spark能更好地適用于數據挖掘與機器學習等需要迭代的MapReduce的算法。它可以與Hadoop和Apache Mesos一起使用,也可以獨立使用
Spark 官網
6.2:Kinesis
Kinesis 可以構建用于處理或分析流數據的自定義應用程序,來滿足特定需求。Amazon Kinesis Streams 每小時可從數十萬種來源中連續捕獲和存儲數TB數據,如網站點擊流、財務交易、社交媒體源、IT日志和定位追蹤事件。
Kinesis Github
6.3:Hadoop
Hadoop 是一個開源框架,適合運行在通用硬件,支持用簡單程序模型分布式處理跨集群大數據集,支持從單一服務器到上千服務器的水平scale up。Apache的Hadoop項目已幾乎與大數據劃上了等號,它不斷壯大起來,已成為一個完整的生態系統,擁有眾多開源工具面向高度擴展的分布式計算。高效、可靠、可伸縮,能夠為你的數據存儲項目提供所需的YARN、HDFS和基礎架構,并且運行主要的大數據服務和應用程序。
Hadoop官網
6.4:Spark Streaming
Spark Streaming 實現微批處理,目標是很方便的建立可擴展、容錯的流應用,支持Java、Scala和Python,和Spark無縫集成。Spark Streaming可以讀取數據HDFS,Flume,Kafka,Twitter和ZeroMQ,也可以讀取自定義數據。
6.5:Trident
Trident 是對Storm的更高一層的抽象,除了提供一套簡單易用的流數據處理API之外,它以batch(一組tuples)為單位進行處理,這樣一來,可以使得一些處理更簡單和高效。
Spark Streaming官網介紹
6.6:Flink
Flink 于今年躋身Apache頂級開源項目,與HDFS完全兼容。Flink提供了基于Java和Scala的API,是一個高效、分布式的通用大數據分析引擎。更主要的是,Flink支持增量迭代計算,使得系統可以快速地處理數據密集型、迭代的任務。
Flink 官網
6.7:Samza
Samza 出自于LinkedIn,構建在Kafka之上的分布式流計算框架,是Apache頂級開源項目。可直接利用Kafka和Hadoop YARN提供容錯、進程隔離以及安全、資源管理。
Samza 官網
6.8:Storm
Storm是Twitter開源的一個類似于Hadoop的實時數據處理框架。編程模型簡單,顯著地降低了實時處理的難度,也是當下最人氣的流計算框架之一。與其他計算框架相比,Storm最大的優點是毫秒級低延時。
Storm官網
6.9:Yahoo S4
Yahoo S4 (Simple Scalable Streaming System)是一個分布式流計算平臺,具備通用、分布式、可擴展的、容錯、可插拔等特點,程序員可以很容易地開發處理連續無邊界數據流(continuous unbounded streams of data)的應用。它的目標是填補復雜專有系統和面向批處理開源產品之間的空白,并提供高性能計算平臺來解決并發處理系統的復雜度。
Yahoo S4 官網
6.10:HaLoop
HaLoop 是一個Hadoop MapReduce框架的修改版本,其目標是為了高效支持 迭代,遞歸數據 分析任務,如PageRank,HITs,K-means,sssp等。
7:查詢引擎
查詢引擎主要包括以下相關軟件技術:
Presto ,Drill ,Phoenix ,Hive ,SparkSQL,Tajo ,Impala ,Elasticsearch ,Solr ,Shark ,Lucene
7.1: Presto
Presto 是一個開源的分布式SQL查詢引擎,適用于交互式分析查詢,可對250PB以上的數據進行快速地交互式分析。Presto的設計和編寫是為了解決像Facebook這樣規模的商業數據倉庫的交互式分析和處理速度的問題。Facebook稱Presto的性能比諸如Hive和MapReduce要好上10倍有多。
Presto -github
7.2: Drill
Drill 于2012年8月份由Apache推出,讓用戶可以使用基于SQL的查詢,查詢Hadoop、NoSQL數據庫和云存儲服務。它能夠運行在上千個節點的服務器集群上,且能在幾秒內處理PB級或者萬億條的數據記錄。它可用于數據挖掘和即席查詢,支持一系列廣泛的數據庫,包括HBase、MongoDB、MapR-DB、HDFS、MapR-FS、亞馬遜S3、Azure Blob Storage、谷歌云存儲和Swift。
Drill 官網
7.3: Phoenix
Phoenix 是一個Java中間層,可以讓開發者在Apache HBase上執行SQL查詢。Phoenix完全使用Java編寫,并且提供了一個客戶端可嵌入的JDBC驅動。Phoenix查詢引擎會將SQL查詢轉換為一個或多個HBase scan,并編排執行以生成標準的JDBC結果集。
Phoenix 官網
7.4: Pig
Pig 是一種編程語言,它簡化了Hadoop常見的工作任務。Pig可加載數據、轉換數據以及存儲最終結果。Pig最大的作用就是為MapReduce框架實現了一套shell腳本 ,類似我們通常熟悉的SQL語句。
Pig 官網
7.5: Hive
Hive 是基于Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射為一張數據庫表,并提供簡單的sql查詢功能,可以將sql語句轉換為MapReduce任務進行運行。 其優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析。
Hive 官網
7.6: SparkSQL
SparkSQL 的前身是Shark,SparkSQL拋棄原有Shark的代碼并汲取了一些優點,如內存列存儲(In-Memory Columnar Storage)、Hive兼容性等。由于擺脫了對Hive的依賴性,SparkSQL無論在數據兼容、性能優化、組件擴展方面都得到了極大的方便。
SparkSQL 官網
7.7: Stinger
Stinger 原來叫Tez,是下一代Hive,由Hortonworks主導開發,運行在YARN上的DAG計算框架。某些測試下,Stinger能提升10倍左右的性能,同時會讓Hive支持更多的SQL。
Stinger 官網
7.8: Tajo
Tajo 目的是在HDFS之上構建一個可靠的、支持關系型數據的分布式數據倉庫系統,它的重點是提供低延遲、可擴展的ad-hoc查詢和在線數據聚集,以及為更傳統的ETL提供工具。
Tajo 官網
7.9: Impala
Impala Cloudera聲稱,基于SQL的Impala數據庫是“面向Apache Hadoop的領先的開源分析數據庫”。它可以作為一款獨立產品來下載,又是Cloudera的商業大數據產品的一部分。Cloudera Impala 可以直接為存儲在HDFS或HBase中的Hadoop數據提供快速、交互式的SQL查詢。
Impala 官網
7.10: Elasticsearch
Elasticsearch 是一個基于Lucene的搜索服務器。它提供了一個分布式、支持多用戶的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java開發的,并作為Apache許可條款下的開放源碼發布,是當前流行的企業級搜索引擎。設計用于云計算中,能夠達到實時搜索、穩定、可靠、快速、安裝使用方便。
Elasticsearch 官網
7.11: Solr
Solr 基于Apache Lucene,是一種高度可靠、高度擴展的企業搜索平臺。知名用戶包括eHarmony、西爾斯、StubHub、Zappos、百思買、AT&T、Instagram、Netflix、彭博社和Travelocity。
Solr 官網
7.12: Shark
Shark 即Hive on Spark,本質上是通過Hive的HQL解析,把HQL翻譯成Spark上的RDD操作,然后通過Hive的metadata獲取數據庫里的表信息,實際HDFS上的數據和文件,會由Shark獲取并放到Spark上運算。Shark的特點就是快,完全兼容Hive,且可以在shell模式下使用rdd2sql()這樣的API,把HQL得到的結果集,繼續在scala環境下運算,支持自己編寫簡單的機器學習或簡單分析處理函數,對HQL結果進一步分析計算。
7.13: Lucene
Lucene 基于Java的Lucene可以非常迅速地執行全文搜索。據官方網站聲稱,它在現代硬件上每小時能夠檢索超過150GB的數據,它擁有強大而高效的搜索算法。
Lucene 官網
8:分析和報告工具
分析和報告工具主要包括如下:
Kettle,Kylin ,Kibana ,Druid ,KNIME ,Zeppelin ,Talend ,Splunk ,Pentaho ,Jaspersoft ,SpagoBI
8.1: Kettle
Kettle 這是一個ETL工具集,它允許你管理來自不同數據庫的數據,通過提供一個圖形化的用戶環境來描述你想做什么,而不是你想怎么做。作為Pentaho的一個重要組成部分,現在在國內項目應用上逐漸增多。
Kettle -github
8.2: Kylin
Kylin 是一個開源的分布式分析引擎,提供了基于Hadoop的超大型數據集(TB/PB級別)的SQL接口以及多維度的OLAP分布式聯機分析。最初由eBay開發并貢獻至開源社區。它能在亞秒內查詢巨大的Hive表。
Kylin 官網
8.3: Kibana
Kibana 是一個使用Apache 開源協議的Elasticsearch 分析和搜索儀表板,可作為Logstash和ElasticSearch日志分析的 Web 接口,對日志進行高效的搜索、可視化、分析等各種操作。
Kibana 官網
8.4: Druid
Druid 是一個用于大數據實時查詢和分析的高容錯、高性能、分布式的開源系統,旨在快速處理大規模的數據,并能夠實現快速查詢和分析。
Druid 官網
8.5: KNIME
KNIME 的全稱是“康斯坦茨信息挖掘工具”(Konstanz Information Miner),是一個開源分析和報表平臺。宣稱“是任何數據科學家完美的工具箱,超過1000個模塊,可運行數百個實例,全面的集成工具,以及先進的算法”。
KNIME 官網
8.6: Zeppelin
Zeppelin 是一個提供交互數據分析且基于Web的筆記本。方便你做出可數據驅動的、可交互且可協作的精美文檔,并且支持多種語言,包括 Scala(使用 Apache Spark)、Python(Apache Spark)、SparkSQL、 Hive、 Markdown、Shell等。
Zeppelin 官網
8.7: Talend
Talend Open Studio 是第一家針對的數據集成工具市場的ETL(數據的提取Extract、傳輸Transform、載入Load)開源軟件供應商。Talend的下載量已超過200萬人次,其開源軟件提供了數據整合功能。其用戶包括美國國際集團(AIG)、康卡斯特、電子港灣、通用電氣、三星、Ticketmaster和韋里遜等企業組織。
Talend 官網
8.8: Splunk
Splunk 是機器數據的引擎。使用 Splunk 可收集、索引和利用所有應用程序、服務器和設備(物理、虛擬和云中)生成的快速移動型計算機數據,從一個位置搜索并分析所有實時和歷史數據。
Splunk 官網
8.9: Pentaho
Pentaho 是世界上最流行的開源商務智能軟件,以工作流為核心的、強調面向解決方案而非工具組件的、基于java平臺的商業智能(Business Intelligence)套件。包括一個web server平臺和幾個工具軟件:報表、分析、圖表、數據集成、數據挖掘等,可以說包括了商務智能的方方面面。
Pentaho 社區
8.10: Jaspersoft
Jaspersoft 提供了靈活、可嵌入的商業智能工具,用戶包括眾多企業組織:高朋、冠群科技、美國農業部、愛立信、時代華納
Jaspersoft 官網
8.11: SpagoBI
SpagoBI Spago被市場分析師們稱為“開源領袖”,它提供商業智能、中間件和質量保證軟件,另外還提供相應的Java EE應用程序開發框架。
SpagoBI 官網
9:機器學習
機器學習框架主要包括如下:
Tensorflow,Theano,Keras,DSSTNE,Lasagne,Torch,mxnet,DL4J,Cognitive Toolkit,Caffe,Hivemall ,RapidMiner ,Mahout
9.1: Tensorflow
Tensorflow是Google開源的一款深度學習工具,使用C++語言開發,上層提供Python API。在開源之后,在工業界和學術界引起了極大的震動,因為TensorFlow曾經是著名的Google Brain計劃中的一部分,Google Brain項目的成功曾經吸引了眾多科學家和研究人員往深度學習這個“坑”里面跳,這也是當今深度學習如此繁榮的重要原因。
9.2: Theano
Theano是老牌、穩定的庫之一。它是深度學習開源工具的鼻祖,由蒙特利爾理工學院時間開發于2008年并將其開源,框架使用Python語言開發。它是深度學習庫的發軔,許多在學術界和工業界有影響力的深度學習框架都構建在Theano之上,并逐步形成了自身的生態系統,這其中就包含了著名的Keras、Lasagne和Blocks。
Theano是底層庫,遵循Tensorflow風格。因此不適合深度學習,而更合適數值計算優化。它支持自動函數梯度計算,它有 Python接口 ,集成了Numpy,使得這個庫從一開始就成為通用深度學習最常用的庫之一。
9.3: Keras
Keras是一個非常高層的庫,工作在Theano或Tensorflow(可配置)之上。此外,Keras強調極簡主義,你可以用寥寥可數的幾行代碼來構建神經網絡。在 這里 ,您可以看到一個Keras代碼示例,與在Tensorflow中實現相同功能所需的代碼相比較。
9.4: DSSTNE
DSSTNE(Deep Scalable Sparse Tensor Network Engine,DSSTNE)是Amazon開源的一個非常酷的框架,由C++語言實現。但它經常被忽視。為什么?因為,撇開其他因素不談,它并不是為一般用途設計的。DSSTNE只做一件事,但它做得很好:推薦系統。正如它的官網所言,它不是作為研究用途,也不是用于測試想法,而是為了用于生產的框架。
9.5: Lasagne
Lasagne是一個工作在Theano之上的庫。它的任務是將深度學習算法的復雜計算予以簡單地抽象化,并提供一個更友好的 Python 接口。這是一個老牌的庫,長久以來,它是一個具備高擴展性的工具。在Ricardo看來,它的發展速度跟不上Keras。它們適用的領域相同,但是,Keras有更好的、更完善的文檔。
9.6: Torch
Torch是Facebook和Twitter主推的一個特別知名的深度學習框架,Facebook Reseach和DeepMind所使用的框架,正是Torch(DeepMind被Google收購之后才轉向TensorFlow)。出于性能的考慮, 它使用了一種比較小眾的編程語言Lua ,目前在音頻、圖像及視頻處理方面有著大量的應用。
在目前深度學習大部分以Python為編程語言的大環境之下,一個以Lua為編程語言的框架只有更多的劣勢,而不是優勢。Ricardo沒有Lua的使用經驗,他表示,如果他要用Torch的話,就必須先學習Lua語言才能使用Torch。就他個人來說,更傾向于熟悉的Python、Matlab或者C++來實現。
9.7: mxnet
mxnet是支持大多數編程語言的庫之一,它支持Python、R、C++、Julia等編程語言。Ricardo覺得使用R語言的人們會特別喜歡mxnet,因為直到現在,在深度學習的編程語言領域中,Python是衛冕之王。
Ricardo以前并沒有過多關注mxnet,直到Amazon AWS宣布將mxnet作為其 深度學習AMI 中的 參考庫 時,提到了它巨大的水平擴展能力,他才開始關注。
Ricardo表示他對多GPU的擴展能力有點懷疑,但仍然很愿意去了解實驗更多的細節。但目前還是對mxnet的能力抱有懷疑的態度。
9.8: DL4J
DL4J,全名是Deep Learning for Java。正如其名,它支持Java。Ricardo說,他之所以能接觸到這個庫,是因為它的文檔。當時,他在尋找 限制波爾茲曼機(Restricted Boltzman Machines) 、 自編碼器(Autoencoders) ,在DL4J找到這兩個文檔,文檔寫得很清楚,有理論,也有代碼示例。Ricardo表示D4LJ的文檔真的是一個藝術品,其他庫的文檔應該向它學習。
DL4J背后的公司Skymind意識到,雖然在深度學習世界中,Python是王,但大部分程序員都是Java起步的,因此,DL4J兼容JVM,也適用于Java、Clojure和Scala。 隨著Scala的潮起潮落,它也被很多 有前途的初創公司 使用。
9.8: DL4J
Cognitive Toolkit,就是之前被大家所熟知的縮略名CNTK,但最近剛更改為現在這個名字,可能利用Microsoft認知服務(Microsoft Cognitive services)的影響力。在發布的基準測試中,它似乎是非常強大的工具,支持垂直和水平推移。
到目前為止,認知工具包似乎不太流行。關于這個庫,還沒有看到有很多相關的博客、網絡示例,或者在Kaggle里的相關評論。Ricardo表示這看起來有點奇怪,因為這是一個背靠微軟研究的框架,特別強調自己的推移能力。而且這個研究團隊在語音識別上打破了世界紀錄并逼近了人類水平。
你可以在他們的項目Wiki中的示例,了解到認知工具包在Python的語法和Keras非常相似。
9.9: Caffe
Caffe是最老的框架之一,比老牌還要老牌。 Caffe 是加州大學伯克利分校視覺與學習中心(Berkeley Vision and Learning Center ,BVLC)貢獻出來的一套深度學習工具,使用C/C++開發,上層提供Python API。Caffe同樣也在走分布式路線,例如著名的Caffe On Spark項目。
9.10: Hivemall
Hivemall 結合了面向Hive的多種機器學習算法,它包括了很多擴展性很好的算法,可用于數據分類、遞歸、推薦、k最近鄰、異常檢測和特征哈希等方面的分析應用。
9.11: RapidMiner
RapidMiner 具有豐富數據挖掘分析和算法功能,常用于解決各種的商業關鍵問題,解決方案覆蓋了各個領域,包括汽車、銀行、保險、生命科學、制造業、石油和天然氣、零售業及快消行業、通訊業、以及公用事業等各個行業。
9.12: Mahout
Mahout 目的是“為快速創建可擴展、高性能的機器學習應用程序而打造一個環境”,主要特點是為可伸縮的算法提供可擴展環境、面向Scala/Spark/H2O/Flink的新穎算法、Samsara(類似R的矢量數學環境),它還包括了用于在MapReduce上進行數據挖掘的眾多算法。
開發平臺
開發平臺主要包括如下:
Lumify ,Lingual ,Beam ,Cascading ,HPCC
10.1:Lumify
Lumify 歸Altamira科技公司(以國家安全技術而聞名)所有,這是一種開源大數據整合、分析和可視化平臺。
Lumify 官網
10.2:Lingual
Lingual 是Cascading的高級擴展,為Hadoop提供了一個ANSI SQL接口極大地簡化了應用程序的開發和集成。Lingual實現了連接現有的商業智能(BI)工具,優化了計算成本,加快了基于Hadoop的應用開發速度。
Lingual 官網
10.3:Beam
Beam 基于Java提供了統一的數據進程管道開發,并且能夠很好地支持Spark和Flink。提供很多在線框架,開發者無需學太多框架。
Beam 官網
10.4:Cascading
Cascading 是一個基于Hadoop建立的API,用來創建復雜和容錯數據處理工作流。它抽象了集群拓撲結構和配置,使得不用考慮背后的MapReduce,就能快速開發復雜的分布式應用。
Cascading 官網
10.5:HPCC
HPCC 作為Hadoop之外的一種選擇,是一個利用集群服務器進行大數據分析的系統,HPCC在LexisNexis內部使用多年,是一個成熟可靠的系統,包含一系列的工具、一個稱為ECL的高級編程語言、以及相關的數據倉庫,擴展性超強。
HPCC 官網