Hadoop Ecosystem(Hadoop生態環境-130多個相關開源專案)
Apache Hadoop專案開發用於可靠、可擴充套件的分散式計算的開源軟體。
Apache Hadoop軟體庫是一個框架,允許使用簡單的程式設計模型跨計算機叢集分散式處理大型資料集。 它旨在從單個伺服器擴充套件到數千臺計算機,每臺計算機都提供本地計算和儲存。 庫本身不是依靠硬體來提供高可用性,而是設計用於檢測和處理應用程式層的故障,從而在計算機叢集之上提供高可用性服務,每個計算機都可能容易出現故障。
此文是Hadoop相關專案的簡介,重點關注自由/開源軟體。
Distributed Filesystem 分散式檔案系統
Apache HDFS Hadoop分散式檔案系統
Hadoop分散式檔案系統(HDFS)是一種分散式檔案系統,設計用於在商用硬體上執行。 它與現有的分散式檔案系統有許多相似之處。 但是,與其他分散式檔案系統的差異很大。 HDFS具有高度容錯能力,旨在部署在低成本硬體上。 HDFS提供對應用程式資料的高吞吐量訪問,適用於具有大型資料集的應用程式。 HDFS放寬了一些可移植性作業系統介面(POSIX)要求,以實現對檔案系統資料的流式訪問。 HDFS最初是作為Apache Nutch網路搜尋引擎專案的基礎設施而構建的。 HDFS是Apache Hadoop Core專案的一部分。
Red Hat GlusterFS 可擴充套件網路檔案系統
GlusterFS是一個免費的開源可擴充套件網路檔案系統。使用常見的現成硬體,你可以為流媒體、資料分析以及其他資料和頻寬密集型任務建立大型分散式儲存解決方案。 GlusterFS最初由Gluster,然後由Red Hat(2011年購買Gluster)開發。2012年6月,Red Hat Storage Server被宣佈為商業支援的GlusterFS與Red Hat Enterprise Linux的整合。 Gluster檔案系統,現在稱為Red Hat Storage Server。
Quantcast File System QFS 高效能、容錯、分散式的檔案系統
Quantcast File System (QFS) 是一個高效能、容錯、分散式的檔案系統,其開發是用於支援 MapReduce 處理或者需要順序讀寫大檔案的應用。QFS是用C++編寫的,是一個開源的檔案系統,和Hadoop Distributed File Syetem (HDFS)檔案系統相容,更優於HDFS。他採用Reed-Solomon 擦出編碼方式,即6(資料塊)+3(校驗塊)替代了HDFS的3倍複製策略,因此,有如下優勢:
- 和HDFS檔案系統相比,能夠節省50%的磁碟空間
- 比HDFS提高一倍讀寫速度。
- 由於使用C++編寫的,更容易和系統軟體相相容。
- 實現了命令列式的終端,比HDFS更加便捷
Ceph Filesystem 可靠地、自動重均衡、自動恢復的分散式儲存系統
Ceph是一個免費的軟體儲存平臺,旨在從單個分散式計算機叢集中呈現物件,塊和檔案儲存。 Ceph的主要目標是完全分發、沒有單點故障、可擴充套件到艾位元組級別(exabytes=EB,1EB=1024PB=2^60位元組),並且可以自由使用。 資料被複制,使其具有容錯能力。 與當今可用的許多物件儲存系統相比,Ceph的物件儲存系統提供了重要的功能:Ceph提供了具有POSIX語義的傳統檔案系統介面。 物件儲存系統是一項重大創新,但它們是對傳統檔案系統的補充而非替代。 隨著遺留應用程式的儲存需求增長,組織也可以配置其遺留應用程式以使用Ceph檔案系統! 這意味著你可以為物件、塊和基於檔案的資料儲存執行在一個儲存群集。
Lustre file system 高效能的分散式檔案系統
Lustre檔案系統是一種高效能的分散式檔案系統,適用於大型網路和高可用性環境。Lustre是源自Linux和Cluster的混成詞。最早在1999年,由皮特·布拉姆(英語:Peter Braam)建立的叢集檔案系統公司(英語:Cluster File Systems Inc.)開始研發,於2003年釋出 Lustre 1.0。採用GNU GPLv2開原始碼授權。 傳統上,Lustre被配置為管理儲存區域網路(SAN)內的遠端資料儲存磁碟裝置,SAN是通過小型計算機系統介面(SCSI)協議進行通訊的兩個或多個遠端連線的磁碟裝置。這包括光纖通道,乙太網光纖通道(FCoE),序列連線SCSI(SAS)甚至iSCSI。 使用Hadoop HDFS,該軟體需要一個專用的計算機叢集來執行。但是,為其他目的執行高效能運算叢集的人通常不會執行HDFS,這會使他們留下一堆計算能力,幾乎可以肯定受益於一些map reduce任務,並且無法將這些能力用於執行中的Hadoop。英特爾注意到了這一點,並且在其釋出的Hadoop發行版2.5版本中增加了對Lustre的支援:用於Apache Hadoop軟體的英特爾 HPC分發,這是一款將英特爾分散式Apache Hadoop軟體與英特爾結合的新產品適用於Lustre軟體的企業版。這是與Lustre整合的唯一Apache Hadoop發行版,Lustre是許多世界上最快的超級計算機使用的並行檔案系統
Alluxio 記憶體高速虛擬分散式儲存
Alluxio是世界上第一個以記憶體為中心的虛擬分散式儲存系統,它統一了資料訪問並橋接了計算框架和底層儲存系統。應用程式只需與Alluxio連線即可訪問儲存在任何底層儲存系統中的資料。此外,Alluxio以記憶體為中心的架構使資料訪問速度比現有解決方案快幾個數量級。 在大資料生態系統中,Alluxio介於計算框架或作業(如Apache Spark、Apache MapReduce或Apache Flink)和各種儲存系統(如Amazon S3、OpenStack Swift、GlusterFS、HDFS、Ceph或OSS)之間。 Alluxio為堆疊帶來了顯著的效能提升;例如,百度使用Alluxio將其資料分析效能提高了30倍。除了效能之外,Alluxio還將新工作負載與儲存在傳統儲存系統中的資料相結合。使用者可以使用其獨立群集模式執行Alluxio,例如在Amazon EC2上執行,或者使用Apache Mesos或Apache Yarn啟動Alluxio。 Alluxio相容Hadoop。這意味著現有的Spark和MapReduce程式可以在Alluxio之上執行而無需更改任何程式碼。該專案是開源的(Apache License 2.0),並在多家公司部署。它是增長最快的開源專案之一。 Alluxio擁有不到三年的開源歷史,吸引了來自50多家機構的160多名貢獻者,包括阿里巴巴、Alluxio、百度、卡內基梅隆大學、IBM、英特爾、南京大學、紅帽、加州大學伯克利分校和雅虎。該專案是伯克利資料分析堆疊(BDAS)的儲存層,也是Fedora發行版的一部分。
GridGain 記憶體計算平臺,Hadoop加速器
GridGain是在Apache 2.0下獲得許可的開源專案。該平臺的主要部分之一是記憶體中的Apache Hadoop加速器,旨在通過將資料和計算都帶入記憶體來加速HDFS和Map/Reduce。這項工作是通過GGFS-Hadoop相容的記憶體檔案系統完成的。對於I/O密集型作業,GridGain GGFS的效能比標準HDFS快近100倍。 2014 年3月,GridGain公司將該軟體90%以上的功能和程式碼開源,僅在商業版中保留了高階企業級功能,如安全性,資料中心複製,先進的管理和監控等。 2015年1月,GridGain通過Apache 2.0許可進入Apache的孵化器進行孵化,很快就於8月25日畢業並且成為Apache的頂級專案Apache Ignite。 從GridGain Systems轉述Dmitriy Setrakyan談論有關Tachyon的GGFS:
- GGFS允許對底層HDFS或任何其他Hadoop相容檔案系統進行直接讀和直接寫,而無需更改程式碼。從本質上講,GGFS完全從整合中刪除了ETL步驟。
- GGFS能夠選擇和保留記憶體中的資料夾,光碟上的資料夾,以及同步或非同步與底層(HD)FS同步的資料夾。
- GridGain正致力於新增原生MapReduce元件,該元件將提供原生完整的Hadoop整合而無需更改API,就像Spark目前強迫你做的那樣。基本上,GridGain MR+GGFS將允許以即插即用的方式將Hadoop完全或部分駐留記憶體,而無需任何API更改。
XtreemFS 容錯的分散式檔案系統
XtreemFS是一種通用儲存系統,可滿足單個部署中的大多數儲存需求。 它是開源的,不需要特殊的硬體或核心模組,可以安裝在Linux,Windows和OS X上.XtreemFS執行分散式並通過複製提供彈性。 XtreemFS卷可以通過使用者空間檔案系統(FUSE)元件訪問,該元件提供與POSIX類似語義的正常檔案互動。 此外,還包含Hadoops FileSystem介面的實現,使XtreemFS可以與Hadoop、Flink和Spark一起使用。 XtreemFS根據新BSD許可證授權。 XtreemFS專案由柏林Zuse研究所開發。
Distributed Programming 分散式程式設計
Apache Ignite 記憶體為中心的分散式資料庫
Apache Ignite是一個以記憶體為中心的分散式資料庫,快取和處理平臺 事務性,分析性和流式工作負載,以PB級的速度提供記憶體速度。它包括分散式鍵值記憶體儲存、SQL功能、map-reduce和其他計算、分散式資料結構、連續查詢、訊息和事件子系統、Hadoop和Spark整合。 Ignite是用Java構建的,提供.NET和C ++ API。
Apache MapReduce 在群集上使用並行分散式演算法處理大型資料集的程式設計模型
MapReduce是一種用於在群集上使用並行分散式演算法處理大型資料集的程式設計模型。 Apache MapReduce源自Google MapReduce:大群集上的簡化資料處理。 當前的Apache MapReduce版本是基於Apache YARN Framework構建的。 YARN代表“又一個資源談判者Yet-Another-Resource-Negotiator”。 它是一個新的框架,有助於編寫任意分散式處理框架和應用程式。 YARN的執行模型比早期的MapReduce實現更通用。 與原始的Apache Hadoop MapReduce(也稱為MR1)不同,YARN可以執行不遵循MapReduce模型的應用程式。 Hadoop YARN試圖將Apache Hadoop超越MapReduce進行資料處理。
Apache Pig 並行執行資料流的引擎
Apache Pig是一個分析大型資料集的平臺,它包含用於表達資料分析程式的高階語言,以及用於評估這些程式的基礎結構。 Pig程式的顯著特性是它們的結構適合於大量並行化,這反過來使它們能夠處理非常大的資料集。
目前,Pig的基礎設施層由生成Map-Reduce程式序列的編譯器組成,已經存在大規模並行實現(例如,Hadoop子專案)。 Pig的語言層目前由一種名為Pig Latin的文字語言組成,它具有以下關鍵屬性:
- 易於程式設計。實現簡單,“令人尷尬的並行”資料分析任務的並行執行是微不足道的。由多個相互關聯的資料轉換組成的複雜任務被明確編碼為資料流序列,使其易於編寫,理解和維護。
- 優化機會。任務編碼的方式允許系統自動優化其執行,允許使用者專注於語義而不是效率。
- 可擴充套件性。使用者可以建立自己的功能來進行專用處理。
JAQL 處理大量結構化、半結構化和非結構化資料的功能性、宣告性程式語言
JAQL是一種功能性的宣告性程式語言,專門用於處理大量結構化,半結構化和非結構化資料。顧名思義,JAQL的主要用途是處理儲存為JSON文件的資料,但JAQL可以處理各種型別的資料。例如,它可以支援XML,逗號分隔值(CSV)資料和平面檔案。 “JAQL內建SQL”功能允許程式設計師使用結構化SQL資料,同時使用比結構化查詢語言更少限制的JSON資料模型。 具體來說,Jaql允許你select, join, group和filter儲存在HDFS中的資料,就像Pig和Hive的混合一樣。 Jaql的查詢語言受到許多程式設計和查詢語言的啟發,包括Lisp,SQL,XQuery和Pig。 JAQL由IBM研究實驗室的工作人員於2008年建立,併發布開源。雖然它繼續作為Google Code上的專案託管,其中可下載的版本在Apache 2.0許可下可用,但圍繞JAQL的主要開發活動仍然以IBM為中心。該公司提供查詢語言作為與InfoSphere BigInsights(他自己的Hadoop平臺)相關聯的工具套件的一部分。與工作流協調器一起使用,BigInsights中使用JAQL在儲存、處理和分析作業之間交換資料。它還提供外部資料和服務的連結,包括關係資料庫和機器學習資料。
Apache Spark 用於大規模資料處理的統一分析引擎。
資料分析叢集計算框架最初是在加州大學伯克利分校的AMPLab中開發的。 Spark適用於Hadoop開源社群,構建於Hadoop分散式檔案系統(HDFS)之上。但是,Spark為Hadoop MapReduce提供了一種更易於使用的替代方案,並且在某些應用程式中,其效能比Hadoop MapReduce等上一代系統快10倍。
Spark是一個用於編寫快速分散式程式的框架。 Spark解決了與Hadoop MapReduce類似的問題,但具有快速的記憶體方法和乾淨的功能樣式API。憑藉其與Hadoop和內建工具整合的互動式查詢分析(Shark)、大規模圖形處理和分析(Bagel)以及實時分析(Spark Streaming)的能力,它可以互動式地用於快速處理和查詢大型資料集。
為了加快程式設計速度,Spark在Scala、Java和Python中提供了乾淨、簡潔的API。你還可以從Scala和Python shell以互動方式使用Spark來快速查詢大資料集。 Spark也是Shark背後的引擎,Shark是一個完全與Apache Hive相容的資料倉庫系統,執行速度比Hive快100倍。
- 高速:以100倍的速度執行工作負載。Apache Spark使用最先進的DAG排程程式,查詢優化器和物理執行引擎,實現批處理和流資料的高效能。
- 便於使用:使用Java、ScalaPython、R和SQL快速編寫應用程式。Spark提供80多個高階操作,可以輕鬆構建並行應用程式。你可以從Scala,Python,R和SQL shell中以互動方式使用它。
- 概括:結合SQL,流媒體和複雜的分析。Spark支援一堆庫,包括SQL和DataFrames,用於機器學習的MLlib,GraphX和Spark Streaming。你可以在同一個應用程式中無縫地組合這些庫。
- 到處執行:Spark可以執行在Hadoop、Apache Mesos、Kubernetes、單機或雲端。你可以使用其獨立群集模式、在EC2上、在Hadoop YARN上、在Mesos上或在Kubernetes上執行Spark。訪問HDFS、Alluxio、Apache Cassandra、Apache HBase、Apache Hive和數百個其他資料來源中的資料。
Apache Storm 分散式實時計算系統
Apache Storm是一個免費的開源分散式實時計算系統。 Storm可以輕鬆可靠地處理無限資料流,實現Hadoop對批處理所做的實時處理。 Storm非常簡單,可以與任何程式語言一起使用,並且使用起來很有趣!
Storm有許多用例:實時分析、線上機器學習、連續計算、分散式RPC、ETL等。 Storm很快:一個基準測試表示每個節點每秒處理超過一百萬個元組。 它具有可擴充套件性、容錯性、可確保你的資料得到處理,並且易於設定和操作。
Storm集成了你已經使用的佇列和資料庫技術。 Storm拓撲消耗資料流並以任意複雜的方式處理這些流,然後在計算的每個階段之間重新劃分流。
該專案最初由Nathan Marz和BackType團隊建立,該專案在被Twitter收購後開源。 Storm最初是在2011年在BackType開發和部署的。經過7個月的開發,BackType於2011年7月被Twitter收購.Storm於2011年9月開源。
Apache Flink 分散式資料流處理引擎
Apache Flink是一個框架和分散式處理引擎,用於對無界和有界資料流進行有狀態計算。 Flink設計為在所有常見的叢集環境中執行,以記憶體速度和任何規模執行計算。
Apache Flink(以前稱為Stratosphere)在Java和Scala中具有強大的程式設計抽象,高效能執行時和自動程式優化。 它具有對迭代,增量迭代和由大型DAG操作組成的程式的本機支援。
Flink是一個數據處理系統,是Hadoop MapReduce元件的替代品。 它帶有自己的執行時,而不是構建在MapReduce之上。 因此,它可以完全獨立於Hadoop生態系統工作。 但是,Flink還可以訪問Hadoop的分散式檔案系統(HDFS)來讀取和寫入資料,以及Hadoop的下一代資源管理器(YARN)來配置群集資源。 由於大多數Flink使用者使用Hadoop HDFS來儲存他們的資料,因此它已經提供了訪問HDFS所需的庫。
Apache Apex 企業級統一流和批處理引擎
Apache Apex是一個基於Apache YARN的企業級大資料動態平臺,它統一了流處理和批處理。它以高度可擴充套件,高效能,容錯,有狀態,安全,分散式和易於操作的方式處理大資料。它提供了一個簡單的API,使使用者能夠編寫或重用通用Java程式碼,從而降低編寫大資料應用程式所需的專業知識。 Apache Apex-Malhar是Apache Apex平臺的補充,它是一個操作者庫,可實現希望快速開發應用程式的客戶所需的通用業務邏輯功能。這些操作者提供對HDFS、S3、NFS、FTP和其他檔案系統的訪問; Kafka、ActiveMQ、RabbitMQ、JMS和其他訊息系統; MySql、Cassandra、MongoDB、Redis、HBase、CouchDB和其他資料庫以及JDBC聯結器。該庫還包括許多其他常見的業務邏輯模式,可幫助使用者顯著減少投入生產所需的時間。易於與所有其他大資料技術整合是Apache Apex-Malhar的主要任務之一。
Netflix PigPen Clojure的map-reduce
PigPen是Clojure的map-reduce,它編譯為Apache Pig。Clojure是Rich Hickey建立的Lisp程式語言的方言,因此是一種功能通用語言,可在Java虛擬機器,公共語言執行時和JavaScript引擎上執行。 在PigPen中,沒有特殊的使用者定義函式(UDF)。 定義Clojure函式,匿名或命名,並像在任何Clojure程式中一樣使用它們。 該工具由美國按需網際網路流媒體提供商Netflix公司開源。
AMPLab SIMR 允許在Hadoop v1上執行Spark
Apache Spark是在Apache YARN中開發的。 但是,到目前為止,在Hadoop MapReduce v1叢集上執行Apache Spark相對比較困難,即沒有安裝YARN的叢集。 通常,使用者必須獲得在某些機器子集上安裝Spark/Scala的許可權,這個過程可能非常耗時。 SIMR允許任何有權訪問Hadoop MapReduce v1叢集的人開箱即用。 使用者可以直接在Hadoop MapReduce v1之上執行Spark,而無需任何管理許可權,也無需在任何節點上安裝Spark或Scala。
Facebook Corona 類似YARN
來自Facebook的“Map-Reduce的下一個版本”,基於自己的Hadoop分支。當前的MapReduce技術的Hadoop實現使用單個作業跟蹤器,這會導致非常大的資料集出現擴充套件問題。Apache Hadoop開發人員一直在建立他們自己的下一代MapReduce,稱為YARN,由於公司部署Hadoop和HDFS的高度定製化特性,Facebook工程師對此進行了評估,但對其打了折扣。Corona與YARN一樣,產生了多個工作跟蹤器(在Corona案例中每個作業一個)。
Apache REEF 可持續計算執行框架
Apache REEF(可持續計算執行框架)是一個用於為叢集資源管理器(如Apache Hadoop YARN或Apache Mesos)開發可移植應用程式的庫。 Apache REEF通過以下功能大大簡化了這些資源管理器的開發:
- 集中控制流程:Apache REEF將分散式應用程式的混亂轉變為單個機器中的事件,即作業驅動。事件包括容器分配、任務啟動、完成和失敗。對於失敗,Apache REEF盡一切努力驅動可用任務丟擲實際的
異常(Exception)
。 - 任務執行時(Task runtime):Apache REEF提供名為計算器(Evaluator)的任務(Task)執行時。計算器在REEF應用程式的每個容器中例項化。計算器可以將資料儲存在任務之間的記憶體中,從而在REEF上實現高效的管道。
- 支援多個資源管理器:Apache REEF應用程式可以輕鬆地移植到任何受支援的資源管理器。此外,REEF中的新資源管理器很容易支援。
- .NET和Java API:Apache REEF是在.NET中編寫YARN或Mesos應用程式的唯一API。此外,單個REEF應用程式可以自由混合和匹配為.NET或Java編寫的任務。
- 外掛:Apache REEF允許外掛(稱為“服務(Services)”)擴充其功能集,而不會向核心新增膨脹。 REEF包括許多服務,例如任務之間基於名稱的通訊,受MPI啟發的群組通訊(
Broadcast
,Reduce
,Gather
, …)和資料入口。
Apache Twill 簡化分散式開發,YARN的代理
Twill是ApacheHadoop®YARN的抽象,它降低了開發分散式應用程式的複雜性,使開發人員能夠更專注於業務邏輯。 Twill使用一個簡單的基於執行緒的模型,Java程式設計師會發現它很熟悉。 YARN可以被視為叢集的計算結構,這意味著像Twill這樣的YARN應用程式可以在任何Hadoop 2叢集上執行。 YARN是一個開源應用程式,它允許Hadoop叢集變成一組虛擬機器。 Weave由Continuuity開發,最初位於Github上,是一個互補的開源應用程式,它使用類似於Java執行緒的程式設計模型,可以輕鬆編寫分散式應用程式。為了消除與Apache上類似命名的專案(名為“Weaver”)的衝突,Weave的名稱在轉移到Apache孵化時更改為Twill。 Twill作為擴充套件代理。 Twill是YARN和YARN上任何應用程式之間的中介軟體層。在開發Twill應用程式時,Twill處理YARN中的API,類似於Java熟悉的多執行緒應用程式。在Twill中構建多處理的分散式應用程式非常容易。
Damballa Parkour 使用類LISP語言Clojure開發MapReduce的程式庫
用於使用類LISP語言Clojure開發MapReduce程式的庫。 Parkour旨在為Hadoop提供深入的Clojure整合。 使用Parkour的程式是普通的Clojure程式,使用標準的Clojure函式而不是新的框架抽象。 使用Parkour的程式也是完整的Hadoop程式,可以完全訪問原始Java Hadoop MapReduce中的所有內容。
Apache Hama 批量同步並行(BSP)大資料分析框架
Apache Hama是一個大資料分析框架,它使用批量同步並行(BSP)計算模型,於2012年成立,是Apache Software Foundation的頂級專案。它不僅提供了純粹的BSP程式設計模型,還提供了由Google的Pregel和DistBelief啟發的頂點(vertex)和神經元(neuron)中心程式設計模型。
Datasalt Pangool 底層MapReduce API
Pangool是一個Java,底層MapReduce API。 它旨在替代Hadoop Java MapReduce API。 通過實現中間的基於Tuple的模式並方便地配置作業,使用Hadoop Java MapReduce API產生的許多偶然複雜性就消失了。 像二級排序(secondary)和縮減側連線(reduce-side)這樣的東西變得非常容易實現和理解。 Pangool的效能與Hadoop Java MapReduce API的效能相當。 Pangool還通過將多個輸出和輸入設定為頭等並允許基於例項的配置來增強Hadoop的API。
Apache Tez 執行在YARN之上支援DAG作業的計算框架
Apache TEZ專案旨在構建一個應用程式框架,該框架允許處理資料的任務有複雜的有向非迴圈圖(directed-acyclic-graph)。它目前在Apache Hadoop YARN上面構建。
通過以下方式授權終端使用者:
- 富有表現力的資料流定義API
- 靈活的輸入-處理器-輸出(Input-Processor-Output)執行時模型
- 資料型別獨立(agnostic)
- 簡化部署
執行效能:
- 效能優於Map Reduce
- 最佳資源管理
- 在執行時計劃重新配置
- 動態物理資料流決策
通過允許像Apache Hive和Apache Pig這樣的專案運行復雜的有向無環圖(DAG)任務,Tez可以用來處理資料,之前需要多個MR作業,現在只要一個Tez作業。
Apache DataFu 處理大規模資料的庫集合
Apache DataFu是用於在Hadoop中處理大規模資料的庫的集合。 該專案的靈感來自對資料探勘和統計資料的穩定、經過良好測試的庫的需求。
DataFu基於它提供了更高階語言的Hadoop MapReduce作業和函式的集合,以執行資料分析。 它提供常見統計任務(例如分位數,取樣)、PageRank、流會話以及集合和包操作的功能。 DataFu還為MapReduce中的增量資料處理提供Hadoop作業。 DataFu是最初在LinkedIn開發的Pig UDF(包括PageRank,會話,集合操作,抽樣等等)的集合。
它由兩個庫組成:
- Apache DataFu Pig:Apache Pig的一組使用者定義函式
- Apache DataFu Hourglass:MapReduce中Apache Hadoop的增量處理框架
Pydoop 用於Hadoop的Python MapReduce和HDFS API
Pydoop是一個用於Hadoop的Python MapReduce和HDFS API,它基於C ++ Pipes和C libhdfs API,允許編寫具有HDFS訪問許可權的成熟MapReduce應用程式。 Pydoop與Hadoop內建的Python程式設計解決方案相比有幾個優點,即Hadoop Streaming和Jython:它是一個CPython包,它允許你訪問所有標準庫和第三方模組,其中一些可能不可用。
Kangaroo Kafka資料流批處理
Conductor的開源專案,用於編寫消耗Kafka資料的MapReduce作業。 使用HFileOutputFormat的MapReduce作業從Kafka到HBase載入資料。 與其他限制為每個Kafka分割槽的單個InputSplit的解決方案不同,Kangaroo可以在單個分割槽的流中以不同的偏移量啟動多個消費者,以提高吞吐量和並行性。
TinkerPop 用Java編寫的圖形計算框架
用Java編寫的圖形計算框架。 提供圖形系統供應商可以實現的核心API。 有各種型別的圖形系統,包括記憶體中的圖形庫,OLTP圖形資料庫和OLAP圖形處理器。 實現核心介面後,可以使用圖形遍歷語言Gremlin查詢基礎圖形系統,並使用啟用TinkerPop的演算法進行處理。 對於許多人來說,TinkerPop被視為圖形計算社群的JDBC。
Pachyderm MapReduce 基於Docker和CoreOS構建的全新MapReduce引擎
Pachyderm的基礎技術是開源的。 該開源核心旨在通過與語言無關的系統實現可持續資料科學工作流,以便使用資料流水線(data pipelining)進行資料版本(data versioning)控制。
Pachyderm允許你部署和管理多級、語言無關的資料管道,同時保持完整的可重複性和出處。
Pachyderm是一款全新的MapReduce引擎,基於Docker和CoreOS構建。在Pachyderm MapReduce(PMR)中,作業是Docker容器(微服務)中的HTTP伺服器。你為Pachyderm提供Docker映象,它將自動在整個群集中將其分發到你的資料旁邊。資料通過HTTP提交到容器,結果儲存迴文件系統。你可以使用你想要的任何語言實現Web伺服器並引入任何庫。 Pachyderm還為系統中的所有作業及其依賴項建立DAG,並自動排程管道,使得每個作業在依賴關係完成之前不會執行。 Pachyderm中的所有東西都“在差異中說話”,因此它確切地知道哪些資料已經改變以及管道的哪些子集需要重新執行。 CoreOS是一個基於Chrome OS的開源輕量級作業系統,實際上CoreOS是Chrome OS的一個分支。 CoreOS僅提供在軟體容器內部署應用程式所需的最少功能,以及用於服務發現和配置共享的內建機制。
Apache Beam 批處理和流資料處理作業統一模型
Apache Beam是一個開源的統一模型,用於定義和執行資料並行處理管道,以及一組特定於語言的SDK,用於構造管道和執行時特定的Runner以執行它們。
Beam背後的模型源於許多內部Google資料處理專案,包括MapReduce,FlumeJava和Millwheel。 該模型最初被稱為“資料流模型”,最初實現為Google Cloud Dataflow,包括用於編寫管道的GitHub上的Java SDK和用於在Google Cloud Platform上執行它們的完全託管服務。
2016年1月,Google和許多合作伙伴以Apache Beam(統一Batch + strEAM處理)的名義提交了資料流程式設計模型和SDK部分作為Apache孵化器提案。
NoSQL Databases 非關係型資料庫
Column Data Model 列儲存
Apache HBase Hadoop分散式資料庫
Apache HBase是Hadoop資料庫,是一個分散式、可擴充套件的大資料儲存。
當你需要對大資料進行隨機,實時讀/寫訪問時,請使用Apache HBase。 該專案的目標是託管非常大的表 - 數十億行X百萬列 - 在商用硬體叢集上。 Apache HBase是一個開源的、分散式的、版本化的非關係資料庫,模仿Google的Bigtable:Chang等人的結構化資料分散式儲存系統。 正如Bigtable利用Google檔案系統提供的分散式資料儲存一樣,Apache HBase在Hadoop和HDFS之上提供類似Bigtable的功能。
Apache Cassandra 分散式資料庫管理系統
當你需要可擴充套件性和高可用性而不影響效能時,Apache Cassandra資料庫是正確的選擇。 商用硬體或雲基礎架構的線性可擴充套件性和經過驗證的容錯使其成為關鍵任務資料的完美平臺。 Cassandra對跨多個數據中心進行復制的支援是同類產品中最好的,可以為你的使用者提供更低的延遲,並讓你高枕無憂,因為他們知道你可以在區域停電中倖存下來。
Apache Cassandra是分散式Non-SQL DBMS,它是一個BDDB。 MR可以從Cassandra檢索資料。 這個BDDB可以在沒有HDFS的情況下執行,也可以在HDFS(Cassandra的DataStax分支)之上執行。 HBase及其所需的支援系統源於最初的Google BigTable和谷歌檔案系統設計(從2003年穀歌釋出的谷歌檔案系統論文和2006年釋出的BigTable論文中得知)。 另一方面,Cassandra是最近由Facebook編寫的獨立資料庫系統的開源分支,在實現BigTable資料模型時,使用受亞馬遜Dynamo啟發的系統來儲存資料(事實上,Cassandra的初始開發工作很多是由兩名從亞馬遜招募到Facebook的Dynamo工程師執行)。
HBase是基於Google的bigtable的論文實現的列式資料庫,cap理論中更傾向於強調c(副本資料一致性)和p(分割槽容錯性)。而Cassandra是號稱dynamo 加上 bigtable(資料模型)的實現,cap中強調a(可用性) 和 p。而且底層都是使用lsm-tree 來做儲存引擎的核心資料結構;
HBase基本上就是bigtable的開源實現,對標的bigtable的chubby(分散式鎖服務)HBase有對應的zookeeper,HBase用regionserver管理region裡的資料,實際上的資料副本容錯的機制是交付給底層的分散式檔案系統hdfs,類比bigtable的gfs,HBase有hmaster做元資訊管理。Cassandra在架構上更多借鑑了dynamo,一種完全的區中心對等的分散式資料庫,她的每個節點維護一份元資訊,每一個節點在叢集中的身份完全一樣。
Hypertable 與Google的Bigtable相似的高效能可伸縮資料庫
Hypertable在競爭中提供最高效率和卓越效能,從而節省大量成本。 資料庫系統受到Google BigTable啟發。 該專案基於多年來解決大規模資料密集型任務的工程師的經驗。 Hypertable執行在分散式檔案系統之上,例如Apache Hadoop DFS,GlusterFS或Kosmos檔案系統(KFS)。 它幾乎完全用C ++編寫。
Apache Accumulo 由NSA建立的具有安全特徵的資料儲存和檢索系統
分散式鍵/值儲存是一個健壯,可擴充套件,高效能的資料儲存和檢索系統。 Apache Accumulo基於Google的BigTable設計,基於Apache Hadoop,Zookeeper和Thrift。 Accumulo是由NSA建立的具有安全特徵的軟體。
Apache Kudu Cloudera開源的執行在hadoop平臺上的列式儲存系統
Apache Kudu完善了Hadoop的儲存層,以實現對快速資料的快速分析。分散式、列式、關係資料儲存為分析用例優化,需要非常快的讀和有競爭力的寫速度。
- 具有強型別列和快速線上alter table操作的關係資料模型(表)。
- 橫向擴充套件和分片,支援基於鍵範圍和/或雜湊的分割槽。
- 由於其實現了Raft共識,容錯且一致。
- 由Apache Impala和Apache Drill提供支援,通過這些系統實現快速SQL讀寫。
- 與MapReduce和Spark整合。
- 另外還提供Java,Python和C ++中的“NoSQL”API。
Apache Parquet 基於組裝演算法的列式儲存格式
Apache Parquet是一種列式儲存格式,可用於Hadoop生態系統中的任何專案,無論選擇何種資料處理框架,資料模型或程式語言。
Document Data Model 文件型
MongoDB 基於分散式檔案儲存的資料庫
MongoDB是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。
MongoDB是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。它支援的資料結構非常鬆散,是類似json的bson格式,因此可以儲存比較複雜的資料型別。Mongo最大的特點是它支援的查詢語言非常強大,其語法有點類似於面向物件的查詢語言,幾乎可以實現類似關係資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引。
RethinkDB 實時推送JSON文件的可擴充套件資料庫
RethinkDB用於儲存JSON文件,並且可以輕鬆擴充套件到多臺計算機。 它有一個令人愉快的查詢語言,支援非常有用的查詢,如表連線和分組,並且易於設定和學習。 RethinkDB最早是作為一個對SSD進行專門優化的MySQL儲存引擎出現的,其特點在於對SSD的充分利用。而目前RethinkDB已經脫離MySQL成為一個獨立的儲存。
ArangoDB 原生多模型資料庫
ArangoDB是一個原生多模型資料庫,兼有key/value鍵/值對、graph圖和document文件資料模型,提供了涵蓋三種資料模型的統一的資料庫查詢語言,並允許在單個查詢中混合使用三種模型。基於其本地整合多模型特性,你可以搭建高效能程式,並且這三種資料模型均支援水平擴充套件。
Stream Data Model 流式
EventStore 複雜事件處理資料庫。
一個開源的功能資料庫,支援複雜事件處理。 它為使用事件源的應用程式或儲存時間序列資料的應用程式提供了永續性引擎。 Event Store使用C#,C++編寫,用於在Linux或Windows上執行在Mono或 .NET CLR上的伺服器。 使用Event Store的應用程式可以用JavaScript編寫。 事件源(ES)是一種通過儲存確定應用程式當前狀態的歷史記錄來保持應用程式狀態的方法。
Key-Value Data Model 鍵值儲存
Redis DataBase 基於記憶體的Key-Value資料庫
Redis是一個開源的使用ANSI C語言編寫、支援網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。從2010年3月15日起,Redis的開發工作由VMware主持。從2013年5月開始,Redis的開發由Pivotal贊助。
Redis是一個開源(BSD許可)記憶體資料結構儲存,用作資料庫、快取和訊息代理。 它支援資料結構,如字串,雜湊,列表,集合,帶有範圍查詢的排序集,點陣圖,超級日誌,帶有半徑查詢和流的地理空間索引。 Redis具有內建複製,Lua指令碼,LRU驅逐,事務和不同級別的磁碟永續性,並通過Redis Sentinel提供高可用性並使用Redis Cluster自動分割槽。
Linkedin Voldemort 分散式鍵值儲存系統
Voldemort是一個分散式鍵值儲存系統。它在LinkedIn上被許多關鍵服務用於為網站的大部分提供動力。
RocksDB 用於快速儲存的可嵌入持久化鍵值儲存
RocksDB是一個可嵌入的持久鍵值儲存,用於快速儲存。 RocksDB也可以作為客戶端 - 伺服器資料庫的基礎,但我們目前的重點是嵌入式工作負載。
OpenTSDB 分散式可擴充套件的時間序列資料庫(TSDB)
OpenTSDB是一個在HBase之上編寫的分散式,可擴充套件的時間序列資料庫(TSDB)。 編寫OpenTSDB是為了滿足一個共同的需求:儲存,索引和提供從計算機系統(網路裝置,作業系統,應用程式)大規模收集的指標,並使這些資料易於訪問和可擴充套件。
Graph Data Model 圖形
ArangoDB 原生多模型資料庫
一個開源資料庫,具有用於文件,圖形和鍵值的靈活資料模型。 使用方便的類似sql的查詢語言或JavaScript擴充套件構建高效能應用程式。
Neo4j 完全用Java編寫的高效能圖形資料庫
Neo4j是一個高效能的,NOSQL圖形資料庫,它將結構化資料儲存在網路上而不是表中。它是一個嵌入式的、基於磁碟的、具備完全的事務特性的Java持久化引擎,但是它將結構化資料儲存在網路(從數學角度叫做圖)上而不是表中。Neo4j也可以被看作是一個高效能的圖引擎,該引擎具有成熟資料庫的所有特性。程式設計師工作在一個面向物件的、靈活的網路結構下而不是嚴格、靜態的表中——但是他們可以享受到具備完全的事務特性、企業級的資料庫的所有好處。Neo4j因其嵌入式、高效能、輕量級等優勢,越來越受到關注。
TitanDB 儲存和處理大規模圖形的資料庫
TitanDB是一個高度可擴充套件的圖形資料庫,針對儲存和查詢大型圖形進行了優化,其中數十億個頂點和邊緣分佈在多機群集中。 Titan是一個可以支援數千個併發使用者的事務資料庫。
NewSQL Databases 新型資料庫
NewSQL 是對各種新的可擴充套件/高效能資料庫的簡稱,這類資料庫不僅具有NoSQL對海量資料的儲存管理能力,還保持了傳統資料庫支援ACID和SQL等特性。
TokuDB MySQL 高效能儲存引擎
TokuDB是MySQL和MariaDB的儲存引擎,專為寫入密集型工作負載的高效能而設計。 它通過分形樹索引實現了這一點。 TokuDB是一個可擴充套件的,ACID和MVCC相容的儲存引擎。 TokuDB是在MySQL中實現大資料的技術之一。
HandlerSocket MySQL的NoSQL外掛
HandlerSocket是MySQL/MariaDB(MySQL的儲存引擎)的NoSQL外掛。 它作為mysqld程序內的守護程序,接受TCP連線,並從客戶端執行請求。 HandlerSocket不支援SQL查詢。 相反,它支援對錶進行簡單的CRUD操作。 在某些情況下,HandlerSocket可以比mysqld/libmysql快得多,因為它具有較低的CPU,磁碟和網路開銷。
Akiban Server 文件儲存和關係資料庫結合的資料庫
Akiban Server是一個開源資料庫,它將文件儲存和關係資料庫結合在一起。 開發人員可以獲得強大的文件訪問以及令人驚訝的強大SQL。
Drizzle MySQL6的重新設計版本
Drizzle是MySQL v6.0程式碼庫的重新設計版本,圍繞著具有微核心架構的核心概念而設計。 查詢快取和身份驗證系統等功能現在是資料庫的外掛,它遵循MySQL 5.1中引入的“可插拔儲存引擎”的一般主題。 它支援PAM,LDAP和HTTP AUTH,通過它提供的外掛進行身份驗證。 通過其外掛系統,它目前支援記錄到檔案,系統日誌和RabbitMQ和Gearman等遠端服務。 Drizzle是一個符合ACID標準的關係資料庫,通過MVCC設計支援事務。
Haeinsa HBase的可線性擴充套件多行多表事務庫
Haeinsa是HBase的可線性擴充套件的多行、多表事務庫。 如果你的HBase叢集需要強大的ACID語義,請使用Haeinsa。 是基於谷歌Perlocator的概念。
SenseiDB 開源分散式實時半結構化資料庫
Open-source, distributed, realtime, semi-structured database. Some Features: Full-text search, Fast realtime updates, Structured and faceted search, BQL: SQL-like query language, Fast key-value lookup, High performance under concurrent heavy update and query volumes, Hadoop integration 開源、分散式、實時、半結構化資料庫。 一些功能:全文搜尋,快速實時更新,結構化和分面搜尋,BQL:類似SQL的查詢語言,快速鍵值查詢,併發大量更新和查詢卷下的高效能,Hadoop整合
SkyDB 行為資料分析資料庫
SkyDB是一個開源資料庫,用於對行為資料進行靈活,高效能的分析。 對於某些型別的資料,例如點選流資料和日誌資料,它可能比SQL資料庫或Hadoop等傳統方法快幾個數量級。
BayesDB 貝葉斯資料庫表
BayesDB是一個貝葉斯資料庫表,使用者可以像查詢資料本身一樣輕鬆地查詢表格資料的可能含義。 使用內建貝葉斯查詢語言(BQL),沒有統計學訓練的使用者可以解決基本的資料科學問題,例如檢測變數之間的預測關係,推斷缺失值,模擬可能的觀察結果以及識別統計上類似的資料庫條目。
InfluxDB 分散式時間序列資料庫
InfluxDB是一個開源的分散式時間序列資料庫,沒有外部依賴關係。 它對記錄指標,事件和執行分析非常有用。 它具有內建的HTTP API,因此您無需編寫任何伺服器端程式碼即可啟動和執行。 InfluxDB旨在提供可擴充套件,易於安裝和管理,以及快速獲取資料的能力。 它旨在實時回答查詢。 這意味著每個資料點在進入時都會被編入索引,並且在應該返回100毫秒以下的查詢中立即可用。
SQL-On-Hadoop Hadoop上的SQL
Apache Hive 資料倉庫基礎設施
Facebook開發的資料倉庫基礎設施。 資料彙總,查詢和分析。 它提供類似SQL的語言(不符合SQL92):HiveQL。 Apache Hive資料倉庫軟體有助於使用SQL讀取,編寫和管理駐留在分散式儲存中的大型資料集。 可以將結構投影到已儲存的資料中。 提供了命令列工具和JDBC驅動程式以將使用者連線到Hive。
Apache HCatalog Hadoop叢集的元資料服務
HCatalog的表抽象為使用者提供了Hadoop分散式檔案系統(HDFS)中資料的關係檢視,並確保使用者無需擔心其資料的儲存位置或格式。 現在HCatalog是Hive的一部分。 只有舊版本可以分開下載。
HCatalog作為Hadoop叢集的元資料服務,其價值可以媲美資料庫管理系統 (DBMS)。HCatalog相當於Hadoop連線企業應用生態系統的介面,十分重要。
Apache Trafodion 事務性SQL-on-Hadoop資料庫
Apache Trafodion是一個網路規模的SQL-on-Hadoop解決方案,可在HBase上實現企業級事務和操作工作負載。 Trafodion是一個原生MPP ANSI SQL資料庫引擎,它基於HDFS和HBase的可擴充套件性,彈性和靈活性,擴充套件了這些引擎,為所有工作負載提供有保證的事務完整性,包括多列、多行、多表和多伺服器 更新。
Apache HAWQ Hadoop原生大規模並行SQL分析引擎
Apache HAWQ是一個Hadoop原生SQL查詢引擎,它結合了從Greenplum資料庫演進的MPP資料庫的關鍵技術優勢,以及Hadoop的可擴充套件性和便利性。
Apache Drill 用於Hadoop、NoSQL和雲端儲存的無模式SQL查詢引擎
Apache Drill是一個開源軟體框架,支援資料密集型分散式應用程式,用於大規模資料集的互動式分析。 Drill是Google Dremel系統的開源版本,可作為名為Google BigQuery的基礎結構服務提供。一個明確宣告的設計目標是Drill能夠擴充套件到10,000臺或更多伺服器,並能夠在幾秒鐘內處理數PB的資料和數萬億條記錄。 Drill是一個Apache頂級專案。
Drill支援各種NoSQL資料庫和檔案系統,包括HBase、MongoDB、MapR-DB、HDFS、MapR-FS、Amazon S3、Azure Blob儲存、Google雲端儲存、Swift、NAS和本地檔案。單個查詢可以連線來自多個數據儲存的資料。例如,您可以使用Hadoop中的事件日誌目錄將MongoDB中的使用者配置檔案集合加入。
Drill的資料儲存區感知優化器會自動重構查詢計劃,以利用資料儲存區的內部處理功能。此外,如果Drill和資料儲存位於相同的節點上,Drill支援資料區域性性。
Cloudera Impala 實時查詢引擎
Apache許可的Impala專案為Hadoop帶來了可擴充套件的並行資料庫技術,使使用者能夠對儲存在HDFS和Apache HBase中的資料發出低延遲SQL查詢,而無需資料移動或轉換。 它是谷歌Dremel克隆(Big Query google)。
Facebook Presto 分散式SQL查詢引擎
Facebook有一個開源的Presto,一個SQL引擎,它表示平均比Hive快10倍,用於在儲存在Hadoop和其他地方的大型資料集中執行查詢。
Presto是一個開源的分散式SQL查詢引擎,用於針對各種大小(從千兆位元組到千兆位元組)的資料來源執行互動式分析查詢。
Presto是從頭開始設計和編寫的,用於互動式分析,接近商業資料倉庫的速度,同時擴充套件到Facebook等組織的規模。
Datasalt Splout SQL 大資料SQL檢視
Splout提供大資料的SQL檢視,具有亞秒級延遲和高吞吐量。 Splout是針對Hadoop + SQL的,Voldemort、Elephant DB是針對Hadoop + Key/Value的。
Apache Tajo 大資料關係和分散式資料倉庫系統
Apache Tajo是Apache Hadoop的強大的大資料關係和分散式資料倉庫系統。 Tajo專為儲存在HDFS(Hadoop分散式檔案系統)和其他資料來源上的大型資料集上的低延遲和可擴充套件的即席查詢,線上聚合和ETL(提取 - 轉換 - 載入過程)而設計。 通過支援SQL標準並利用高階資料庫技術,Tajo允許跨各種查詢評估策略和優化機會直接控制分散式執行和資料流。 作為參考,Apache Software Foundation於2014年4月宣佈Tajo為頂級專案。
Apache Phoenix OLTP和運營分析。
在Hadoop中為低延遲應用程式啟用OLTP和運營分析,Apache Phoenix通過結合兩者的優點:
- 具有完整ACID事務功能的標準SQL和JDBC API的強大功能
- 通過利用HBase作為其後備儲存,來自NoSQL世界的後期繫結模式讀取功能的靈活性
Apache Phoenix與其他Hadoop產品完全整合,如Spark,Hive,Pig,Flume和Map Reduce。
Apache MRQL 大規模分散式資料分析的查詢處理和優化系統
MRQL是一個用於大規模分散式資料分析的查詢處理和優化系統,構建於Apache Hadoop,Hama,Spark和Flink之上。
MRQL(發音為miracle)是一種用於大規模分散式資料分析的查詢處理和優化系統。 MRQL(MapReduce查詢語言)是一種類似SQL的查詢語言,用於在計算機叢集上進行大規模資料分析。
Apache Kylin 極大型資料集OLAP引擎
Apache Kylin是一個開源的分散式分析引擎,提供Hadoop/Spark之上的SQL查詢介面及多維分析(OLAP)能力以支援超大規模資料,最初由eBay Inc. 開發並貢獻至開源社群。它能在亞秒內查詢巨大的Hive表。 Apache Kylin允許你以3個步驟以亞秒級延遲查詢海量資料集。
- 在Hadoop上識別Star/Snowflake模式。
- 從已標識的表中構建多維資料集。
- 使用ANSI-SQL進行查詢,並通過ODBC、JDBC或RESTful API以亞秒為單位獲得結果。
Data Ingestion 資料接入
Apache Flume 海量日誌採集聚合傳輸系統
Flume是一種分散式,可靠且可用的服務,用於有效地收集,聚合和移動大量日誌資料。 它具有基於流資料流的簡單靈活的架構。 它具有可靠的可靠性機制和許多故障轉移和恢復機制,具有強大的容錯能力。 它使用簡單的可擴充套件資料模型,允許線上分析應用程式。
Apache Sqoop 關係型資料庫與Hadoop資料傳遞工具
Sqoop(發音:skup)是一款開源的工具,主要用於在Hadoop(Hive)與傳統的資料庫(mysql、postgresql…)間進行資料的傳遞,可以將一個關係型資料庫(例如 : MySQL ,Oracle ,Postgres等)中的資料導進到Hadoop的HDFS中,也可以將HDFS的資料導進到關係型資料庫中。
Facebook Scribe 分散式日誌收集系統
Scribe是facebook開源的日誌收集系統,在facebook內部已經得到大量的應用。 Scribe是基於一個使用非阻斷C++伺服器的Apache Thrift服務的實現。它能夠從各種日誌源上收集日誌,儲存到一箇中央儲存系統 (可以是NFS,分散式檔案系統等)上,以便於進行集中統計分析處理。它為日誌的“分散式收集,統一處理”提供了一個可擴充套件的,高容錯的方案。
Apache Chukwa 監控大型分散式系統的開源資料收集系統
Apache Chukwa是一個用於監控大型分散式系統的開源資料收集系統。 Apache Chukwa構建於Hadoop分散式檔案系統(HDFS)和Map/Reduce框架之上,並繼承了Hadoop的可擴充套件性和健壯性。 Apache Chukwa還包括一個靈活而強大的工具包,用於顯示,監控和分析結果,以充分利用收集的資料。
Apache Kafka 處理大量流資料的分散式釋出 - 訂閱系統
ApacheKafka是用於處理大量流資料的分散式釋出 - 訂閱系統。流平臺有三個關鍵功能:
- 釋出和訂閱記錄流,類似於訊息佇列或企業訊息傳遞系統。
- 以容錯的持久方式儲存記錄流。
- 記錄發生時處理流。
Kafka通常用於兩大類應用:
- 構建可在系統或應用程式之間可靠獲取資料的實時流資料管道
- 構建轉換或響應資料流的實時流應用程式
Netflix Suro 資料流管理器
Suro是一種分散式資料管道,支援移動,聚合,路由,儲存資料的服務。 其設計側重於輕鬆配置和操作多個數據源。 Suro源於Apache Chukwa,最初由Netflix採用。 是一個像Storm,Samza這樣的日誌聚合器。
Apache Samza 分散式流處理框架
Apache Samza是一個分散式流處理框架。 它使用Apache Kafka進行訊息傳遞,使用Apache Hadoop YARN來提供容錯,處理器隔離,安全性和資源管理。
Cloudera Morphline 定義ETL轉換鏈的豐富配置檔案
Cloudera Morphlines是一個新的開源框架,可以減少整合,構建和更改Hadoop處理應用程式所需的時間和技能,這些應用程式可以將資料提取,轉換和載入到Apache Solr,Apache HBase,HDFS,企業資料倉庫或分析線上儀表板中。
HIHO 將不同的資料來源與Hadoop連線的框架
該專案是一個框架,用於將不同的資料來源與Apache Hadoop系統連線起來,使它們可以互操作。 HIHO將Hadoop與多個RDBMS和檔案系統連線起來,以便可以將資料載入到Hadoop並從Hadoop解除安裝。
Apache NiFi 資料流系統
Apache NiFi是一個易於使用,功能強大且可靠的系統,用於處理和分發資料。NiFi基於基於流程的程式設計概念,具有高度可配置性。 NiFi使用基於元件的擴充套件模型來快速新增複雜資料流的功能。 開箱即用的NiFi有幾個擴充套件,用於處理基於檔案的資料流,如FTP,SFTP和HTTP整合以及與HDFS的整合。 NiFi的獨特功能之一是用於設計,控制和監控資料流的豐富的基於Web的介面。
Apache NiFi支援強大且可擴充套件的資料路由,轉換和系統中介邏輯的有向圖。
Apache ManifoldCF 多內容儲存庫爬蟲
Apache ManifoldCF提供了一個框架,用於將源內容儲存庫(如檔案系統,資料庫,CMIS,SharePoint,FileNet …)連線到目標儲存庫或索引,例如Apache Solr或ElasticSearch。 它是多內容儲存庫的一種爬蟲,通過Apache Tika Content Extractor轉換過濾器支援大量源和多格式轉換以進行索引。
Service Programming 服務程式設計
Apache Thrift 跨語言RPC框架
用於服務建立的跨語言RPC框架。 它是Facebook技術的服務基礎(最初的Thrift貢獻者)。 Thrift提供了開發和訪問遠端服務的框架。 它允許開發人員建立可以由任何以Thrift繫結語言編寫的應用程式使用的服務。 Thrift管理與服務之間的資料序列化,以及描述方法呼叫,響應等的協議。你可以直接使用服務邏輯,而不是編寫所有RPC程式碼。 Thrift使用TCP,因此給定的服務繫結到特定埠。 Apache Thrift軟體框架,用於可擴充套件的跨語言服務開發,將軟體堆疊與程式碼生成引擎相結合,構建可在C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml,Delphi和其他語言之間高效無縫地工作的服務。
Apache Zookeeper 分散式應用程式協調服務
ZooKeeper是一種集中式服務,用於維護配置資訊,命名,提供分散式同步和提供組服務。所有這些型別的服務都以分散式應用程式的某種形式使用。每次實施它們都需要做很多工作來修復不可避免的錯誤和競爭條件。由於難以實現這些型別的服務,應用程式最初通常會吝嗇它們,這使得它們在變化的情況下變得脆弱並且難以管理。即使正確完成,這些服務的不同實現也會在部署應用程式時導致管理複雜性。
ZooKeeper是一個分散式的,開放原始碼的分散式應用程式協調服務,是Google的Chubby一個開源的實現,是Hadoop和Hbase的重要元件。它是一個為分散式應用提供一致性服務的軟體,提供的功能包括:配置維護、域名服務、分散式同步、組服務等。 ZooKeeper的目標就是封裝好複雜易出錯的關鍵服務,將簡單易用的介面和效能高效、功能穩定的系統提供給使用者。
Apache Avro 資料序列化系統
Apache Avro是一個用於建模,序列化和製作遠端過程呼叫(RPC)的框架。 Avro資料由模式描述,一個有趣的特性是模式儲存在與其描述的資料相同的檔案中,因此檔案是自描述的。 Avro不需要程式碼生成。 該框架可以與其他類似工具競爭:Apache Thrift,Google Protocol Buffers,ZeroC ICE等。
Apache Curator ZooKeeper的Java/JVM客戶端庫
Apache Curator是Apache ZooKeeper的Java/JVM客戶端庫。 它包括一個高階API框架和實用程式,使Apache ZooKeeper更容易,更可靠。 它還包括常見用例和擴充套件(如服務發現和Java 8非同步DSL)的配方。
Apache karaf 基於OSGi的執行環境
Karaf是一個輕量級,功能強大且企業就緒的應用程式執行時。 它提供了應用程式所需的所有生態系統和引導選項。 通過多型,這意味著Karaf可以託管任何型別的應用程式:WAR,OSGi,Spring等等。。
Twitter Elephant Bird 處理LZOP壓縮資料的實用程式
Elephant Bird是Twitter的LZO,Thrift和/或Protocol Buffer相關的Hadoop輸入格式,輸出格式,可寫入,Pig LoadFuncs,Hive SerDe,HBase雜記等的開源庫。其中大部分都在Twitter上生成,每個資料都在執行 天。
Linkedin Norbert 叢集管理和工作負載分配庫
Norbert是一個提供簡單的叢集管理和工作負載分配的庫。 使用Norbert,你可以快速分發簡單的客戶端/伺服器體系結構,以建立能夠處理大量流量的高度可擴充套件的體系結構。 在Scala中實現,Norbert包含ZooKeeper,Netty並使用Protocol Buffers進行傳輸,以便輕鬆構建群集感知應用程式。 提供了一個Java API,並且可以通過迴圈和一致的雜湊策略支援可插拔的負載平衡策略。
Scheduling & DR 排程與分散式資源
Apache Oozie 工作流程排程程式系統
Oozie是一個用於管理Apache Hadoop作業的工作流程排程程式系統。 Oozie Workflow作業是動作的定向非迴圈圖(DAG)。 Oozie Coordinator工作是由時間(頻率)和資料可用性觸發的經常性的Oozie Workflow工作。 Oozie與Hadoop堆疊的其餘部分整合,支援多種型別的Hadoop作業(例如Java map-reduce,Streaming map-reduce,Pig,Hive,Sqoop和Distcp)以及系統特定的工作(例如 Java程式和shell指令碼)。 Oozie是一個可擴充套件,可靠和可擴充套件的系統。
LinkedIn Azkaban 批處理工作流作業排程程式
Azkaban是在LinkedIn上建立的批處理工作流作業排程程式,用於執行Hadoop作業。 Azkaban通過作業依賴性解決訂單,並提供易於使用的Web使用者介面來維護和跟蹤您的工作流程。
Apache Falcon 面向Hadoop的資料集和處理過程的管理平臺
Apache Falcon是一個數據管理框架,用於簡化Apache Hadoop上的資料生命週期管理和處理管道。它使使用者能夠配置,管理和協調資料運動,流水線處理,災難恢復和資料保留工作流程。 Hadoop應用程式現在可以依靠經過充分測試的Apache Falcon框架來實現這些功能,而不是硬編碼複雜的資料生命週期功能。 Falcon簡化資料管理對於在Hadoop上構建應用程式的任何人都非常有用。 Hadoop上的資料管理包括資料運動,流程編排,生命週期管理,資料發現等,以及ETL之外的其他問題。 Falcon是Hadoop的一個新的資料處理和管理平臺,可以解決這個問題,並通過構建Hadoop生態系統中的現有元件(例如Apache Oozie,Apache Hadoop DistCp等)創造更多機會,而無需重新發明輪子。
Schedoscope 排程框架
Schedoscope是一個排程框架,用於無痛敏捷開發,測試,(重新)載入和監視你的datahub,datalake,或者你最近選擇呼叫Hadoop資料倉庫的任何內容。 Schedoscope讓你遠離頭疼,當你不得不經常推出並使用傳統的ETL作業排程程式(如Oozie)將更改應用於datahub中的計算邏輯和資料結構時,你肯定會遇到麻煩。
Machine Learning 機器學習
Apache Mahout 機器學習庫和數學庫
Apache Mahout是一個分散式線性代數框架和數學表達的Scala DSL,旨在讓數學家,統計學家和資料科學家快速實現他們自己的演算法。 Apache Spark是推薦的開箱即用的分散式後端,或者可以擴充套件到其他分散式後端。
- 數學上富有表現力的Scala DSL
- 支援多個分散式後端(包括Apache Spark)
- 用於CPU/GPU/CUDA加速的模組化原生求解器
WEKA Java資料探勘任務的機器學習演算法集合
Weka 3是Java中的資料探勘軟體。Weka是用於資料探勘任務的機器學習演算法的集合。 它包含用於資料準備,分類,迴歸,聚類,關聯規則挖掘和視覺化的工具。可以應用Weka處理大資料並執行深度學習。
Cloudera Oryx 大規模機器學習/預測分析基礎架構
Oryx開源專案提供簡單,實時的大規模機器學習/預測分析基礎架構。 它實現了業務應用程式中常用的幾類演算法:協同過濾/推薦,分類/迴歸和聚類。 Apache Spark、Apache Kafka上的Lambda架構,用於實時大規模機器學習。
Deeplearning4j JVM深度學習框架
Eclipse Deeplearning4j是第一個為Java和Scala編寫的商業級開源分散式深度學習庫。 DL4J與Hadoop和Apache Spark整合,可將AI引入業務環境,以便在分散式GPU和CPU上使用。 Deeplearning4j開源專案是JVM最廣泛使用的深度學習框架。 DL4J包括深度神經網路,如遞迴神經網路,長期短期記憶網路(LSTM),卷積神經網路,各種自動編碼器和前饋神經網路,如受限制的玻爾茲曼機器和深訊號網路。 它還具有自然語言處理演算法,如word2vec,doc2vec,GloVe和TF-IDF。 所有Deeplearning4j網路都在多個CPU和GPU上執行。 它們作為Hadoop作業工作,並與Slace級別的Spark整合,用於主機執行緒編排。 Deeplearning4j的神經網路應用於欺詐和異常檢測,推薦系統和預測性維護等用例。
Apache MADlib SQL中的大資料機器學習
Apache MADlib專案利用RDBMS的資料處理功能來分析資料。 該專案的目標是將統計資料分析整合到資料庫中。 MADlib專案被自稱為SQL資料科學家的大資料機器學習。 MADlib軟體專案於次年開始,由加州大學伯克利分校的研究人員與EMC / Greenplum(現為Pivotal)的工程師和資料科學家合作開展。
- 開源,商業友好的Apache license
- 為PostgreSQL和Greenplum Database
- 為資料科學家提供強大的機器學習,圖形,統計和分析
H2O 大資料分析的統計、機器學習和數學執行時工具
H2O是用於大資料分析的統計、機器學習和數學執行時工具。 H2O由預測分析公司H2O.ai開發,與R和Databricks的Spark一起在ML場景中建立了領導地位。 據該團隊稱,H2O是世界上最快的記憶體平臺,用於機器學習和大資料預測分析。 它旨在幫助使用者在大型資料集上擴充套件機器學習,數學和統計。
除了H2O的點選式Web-UI之外,它的REST API還可以輕鬆整合到各種客戶端中。 這意味著資料的探索性分析可以在R,Python和Scala中以典型的方式完成; 整個工作流程可以編寫為自動指令碼。
Sparkling Water 在Spark叢集中提供H2O功能
Sparkling Water結合了兩種開源技術:Apache Spark和H2O(一種機器學習引擎)。 它使H2O的高階演算法庫包括可從Spark工作流程訪問的Deep Learning, GLM, GBM, KMeans, PCA, and Random Forest。 Spark使用者可以選擇從任一平臺中選擇最佳功能以滿足其機器學習需求。 使用者可以將Sparks的RDD API和Spark MLLib與H2O的機器學習演算法結合起來,或者在模型構建過程中使用獨立於Spark的H2O,並在Spark中對結果進行後處理。
Sparkling Water通過共享相同的執行空間以及為H2O資料結構提供類似RDD的API,將H2O的框架和資料結構透明地整合到Spark的基於RDD的環境中。
Apache SystemML 適用於大資料的機器學習平臺
Apache SystemML由IBM開源,與Apache Spark非常相關。 如果你將Apache Spark視為分析大量流資料的任何應用程式的分析作業系統。 MLLib是Spark的機器學習庫,為開發人員提供了豐富的機器學習演算法。 SystemML使開發人員能夠翻譯這些演算法,以便他們可以輕鬆地消化不同型別的資料並在不同型別的計算機上執行。
SystemML允許開發人員編寫單個機器學習演算法,並使用Spark或Hadoop自動擴充套件它。
SystemML使用高效能優化器技術進行大資料分析,並使使用者能夠使用簡單的特定於域的語言(DSL)編寫定製的機器學習演算法,而無需學習複雜的分散式程式設計。 它是Spark MLlib的可擴充套件補充框架。
Apache SystemML為使用大資料的機器學習提供了最佳工作場所。 它可以在Apache Spark之上執行,它可以逐行自動擴充套件資料,確定您的程式碼是應該在驅動程式還