「大數據」Hadoop生態系統:分佈式計算系統

Apache Ignite

Apache Ignite In-Memory Data Fabric是一個分佈式內存平臺,用於實時計算和處理大規模數據集。它包括分佈式鍵值內存存儲,SQL功能,map-reduce和其他計算,分佈式數據結構,連續查詢,消息和事件子系統,Hadoop和Spark集成。 Ignite是用Java構建的,提供.NET和C ++ API。

  • Apache Ignite
  • Apache Ignite文檔

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 MapReduce
  • 谷歌MapReduce論文
  • 編寫YARN應用程序

Apache Pig

Pig提供了一個在Hadoop上並行執行數據流的引擎。它包括一種用於表達這些數據流的語言Pig Latin。 Pig Latin包含許多傳統數據操作(連接,排序,過濾等)的運算符,以及用戶開發自己的讀取,處理和寫入數據的功能。豬在Hadoop上運行。它利用了Hadoop分佈式文件系統,HDFS和Hadoop的處理系統MapReduce。

Pig使用MapReduce來執行其所有數據處理。它編譯Pig Latin腳本,用戶將其寫入一系列一個或多個MapReduce作業,然後執行它們。 Pig Latin看起來與您看到的許多編程語言不同。 Pig Latin中沒有if語句或for循環。這是因為傳統的過程和麵向對象的編程語言描述了控制流,而數據流是程序的副作用。 Pig Latin專注於數據流。

  • 1. pig.apache.org/
  • 2.Pig examples by Alan Gates

JAQL

JAQL是一種功能性的聲明性編程語言,專門用於處理大量結構化,半結構化和非結構化數據。顧名思義,JAQL的主要用途是處理存儲為JSON文檔的數據,但JAQL可以處理各種類型的數據。例如,它可以支持XML,逗號分隔值(CSV)數據和平面文件。 “JAQL中的SQL”功能允許程序員使用結構化SQL數據,同時使用JSON數據模型,該模型的限制性比結構化查詢語言對應項更少。

具體來說,Jaql允許您選擇,加入,分組和過濾存儲在HDFS中的數據,就像Pig和Hive的混合一樣。 Jaql的查詢語言受到許多編程和查詢語言的啟發,包括Lisp,SQL,XQuery和Pig。

JAQL由IBM研究實驗室的工作人員於2008年創建,併發布給開源。雖然它繼續作為Google Code上的項目託管,其中可下載的版本在Apache 2.0許可下可用,但圍繞JAQL的主要開發活動仍然以IBM為中心。該公司提供查詢語言作為與InfoSphere BigInsights及其Hadoop平臺相關聯的工具套件的一部分。與工作流協調器一起使用,BigInsights中使用JAQL在存儲,處理和分析作業之間交換數據。它還提供外部數據和服務的鏈接,包括關係數據庫和機器學習數據。

  • Google Code中的JAQL
  • 什麼是Jaql?byIBM

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倍。

  • Apache Spark
  • Mirror of Spark on Github
  • RDDs - Paper
  • Spark: Cluster Computing... - Paper Spark Research

Apache Storm

Storm是一個複雜的事件處理器(CEP)和主要以Clojure編程語言編寫的分佈式計算框架。是一種分佈式實時計算系統,用於處理快速,大量的數據流。 Storm是一種基於主工作者範式的架構。因此,Storm集群主要由主節點和工作節點組成,由Zookeeper協調完成。

Storm使用zeromq(0mq,zeromq),這是一個先進的可嵌入網絡庫。它提供了一個消息隊列,但與面向消息的中間件(MOM)不同,0MQ系統可以在沒有專用消息代理的情況下運行。該庫旨在具有熟悉的套接字式API。

該項目最初由Nathan Marz和BackType團隊創建,該項目在被Twitter收購後開源。 Storm最初是在2011年在BackType開發和部署的。經過7個月的開發,BackType於2011年7月被Twitter收購.Storm於2011年9月開源。

Hortonworks正在開發Storm-on-YARN版本,計劃在2013年第四季度完成基礎級集成。這是Hortonworks的計劃。 Yahoo / Hortonworks還計劃在不久的將來將github.com/yahoo/storm-yarn上的Storm-on-YARN代碼轉移到Apache Storm項目的子項目中。

Twitter最近發佈了一款名為“Summingbird”的Hadoop-Storm Hybrid.Summingbird將這兩個框架融合為一體,允許開發人員使用Storm進行短期處理,使用Hadoop進行深度數據潛水。旨在通過將批處理和流處理組合成混合系統來減輕批處理和流處理之間的權衡的系統。

  • Storm Project/
  • Storm-on-YARN

Apache Flink

Apache Flink(以前稱為Stratosphere)在Java和Scala中具有強大的編程抽象,高性能運行時和自動程序優化。它具有對迭代,增量迭代和由大型DAG操作組成的程序的本機支持。

Flink是一個數據處理系統,是Hadoop MapReduce組件的替代品。它帶有自己的運行時,而不是構建在MapReduce之上。因此,它可以完全獨立於Hadoop生態系統工作。但是,Flink還可以訪問Hadoop的分佈式文件系統(HDFS)來讀取和寫入數據,以及Hadoop的下一代資源管理器(YARN)來配置群集資源。由於大多數Flink用戶使用Hadoop HDFS來存儲他們的數據,因此它已經提供了訪問HDFS所需的庫。

  • Apache Flink incubator page
  • Stratosphere site

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的主要任務之一。

GitHub上提供的Apex是DataTorrent商業產品DataTorrent RTS 3以及其他技術(如數據攝取工具dtIngest)所基於的核心技術。

  • Apache Apex from DataTorrent
  • Apache Apex main page
  • Apache Apex Proposal

Netflix PigPen

PigPen是針對Clojure的map-reduce,它編譯為Apache Pig。 Clojure是Rich Hickey創建的Lisp編程語言的方言,因此是一種功能通用語言,可在Java虛擬機,公共語言運行時和JavaScript引擎上運行。在PigPen中,沒有特殊的用戶定義函數(UDF)。定義Clojure函數,匿名或命名,並像在任何Clojure程序中一樣使用它們。該工具由美國按需互聯網流媒體提供商Netflix公司開源。

  • GitHub上的PigPen

AMPLab SIMR

Apache Spark是在Apache YARN中開發的。但是,到目前為止,在Hadoop MapReduce v1集群上運行Apache Spark相對比較困難,即沒有安裝YARN的集群。通常,用戶必須獲得在某些機器子集上安裝Spark / Scala的權限,這個過程可能非常耗時。 SIMR允許任何有權訪問Hadoop MapReduce v1集群的人開箱即用。用戶可以直接在Hadoop MapReduce v1之上運行Spark,而無需任何管理權限,也無需在任何節點上安裝Spark或Scala。

  • GitHub上的SIMR

Facebook Corona

“Map-Reduce的下一個版本”,基於自己的Hadoop分支。當前的MapReduce技術的Hadoop實現使用單個作業跟蹤器,這會導致非常大的數據集出現擴展問題.Apache Hadoop開發人員有他們正在創建他們自己的下一代MapReduce,名為YARN,由於公司部署Hadoop和HDFS的高度定製化特性,Facebook工程師對此進行了評估,但是折扣也很明顯。像YARN一樣,Corona產生了多個工作跟蹤器(每個工作一個,在Corona的案例中.

  • 在Github上的Corona

Apache REEF

Apache REEF™(可保留評估程序執行框架)是一個用於為Apache Hadoop™YARN或Apache Mesos™等集群資源管理器開發可移植應用程序的庫。 Apache REEF通過以下功能大大簡化了這些資源管理器的開發:

集中控制流程:Apache REEF將分佈式應用程序的混亂轉變為單個機器中的事件,即作業驅動程序。事件包括容器分配,任務啟動,完成和失敗。對於失敗,Apache REEF盡一切努力使任務拋出的實際“異常”可用於驅動程序。

任務運行時:Apache REEF提供名為Evaluator的Task運行時。評估器在REEF應用程序的每個容器中實例化。評估者可以將數據保存在任務之間的內存中,從而在REEF上實現高效的管道。

支持多個資源管理器:Apache REEF應用程序可以輕鬆地移植到任何受支持的資源管理器。此外,REEF中的新資源管理器很容易支持。

.NET和Java API:Apache REEF是在.NET中編寫YARN或Mesos應用程序的唯一API。此外,單個REEF應用程序可以自由混合和匹配為.NET或Java編寫的任務。

插件:Apache REEF允許插件(稱為“服務”)擴充其功能集,而不會向核心添加膨脹。 REEF包括許多服務,例如任務MPI啟發的組通信(廣播,減少,收集,...)和數據入口之間基於名稱的通信。

  • Apache REEF網站

Apache Twill

Twill是ApacheHadoop®YARN的抽象,它降低了開發分佈式應用程序的複雜性,使開發人員能夠更專注於業務邏輯。 Twill使用一個簡單的基於線程的模型,Java程序員會發現它很熟悉。 YARN可以被視為集群的計算結構,這意味著像Twill這樣的YARN應用程序可以在任何Hadoop 2集群上運行。

YARN是一個開源應用程序,它允許Hadoop集群變成一組虛擬機。 Weave由Continuuity開發,最初位於Github上,是一個互補的開源應用程序,它使用類似於Java線程的編程模型,可以輕鬆編寫分佈式應用程序。為了消除與Apache上類似命名的項目(名為“Weaver”)的衝突,Weave的名稱在轉移到Apache孵化時更改為Twill。

斜紋作為擴展代理。 Twill是YARN和YARN上任何應用程序之間的中間件層。在開發Twill應用程序時,Twill處理YARN中的API,類似於Java熟悉的多線程應用程序。在Twill中構建多處理的分佈式應用程序非常容易。

  • Apache Twill Incubator

Damballa

Parkour圖書館使用LISP語言Clojure開發MapReduce程序。 Parkour旨在為Hadoop提供深入的Clojure集成。使用Parkour的程序是普通的Clojure程序,使用標準的Clojure函數而不是新的框架抽象。使用Parkour的程序也是完整的Hadoop程序,可以在原始Java Hadoop MapReduce中完全訪問所有可能的內容。 1.跑酷GitHub項目

Apache Hama

Apache頂級開源項目,允許您在MapReduce之外進行高級分析。許多數據分析技術(如機器學習和圖形算法)都需要迭代計算,這就是批量同步並行模型比“普通”MapReduce更有效的地方。

  • Hama site

Datasalt Pangool

一種新的MapReduce範例。用於MR作業的新API,其級別高於Java。

  • Pangool
  • GitHub Pangool

Apache Tez

Tez是一個開發通用應用程序的提案,該應用程序可用於處理複雜的數據處理任務DAG,並在Apache Hadoop YARN上本機運行。 Tez將MapReduce範例概括為基於將計算表示為數據流圖的更強大的框架。 Tez並不直接面向最終用戶 - 實際上它使開發人員能夠以更好的性能和靈活性構建最終用戶應用程序。傳統上,Hadoop是一個用於處理大量數據的批處理平臺。但是,查詢處理的近實時性能有很多用例。還有一些工作負載,例如機器學習,它們不適合MapReduce範例。 Tez幫助Hadoop解決這些用例問題。 Tez框架構成了Stinger計劃的一部分(基於Hive的Hadoop基於低延遲的SQL類型查詢接口)。

  • Apache Tez孵化器
  • Hortonworks Apache Tez頁面

Apache DataFu

DataFu基於它提供了更高級語言的Hadoop MapReduce作業和函數的集合,以執行數據分析。它提供常見統計任務(例如分位數,採樣),PageRank,流會話以及集合和包操作的功能。 DataFu還為MapReduce中的增量數據處理提供Hadoop作業。 DataFu是最初在LinkedIn開發的Pig UDF(包括PageRank,會話,集合操作,抽樣等等)的集合。

  • DataFu Apache孵化器

Pydoop

Pydoop是一個用於Hadoop的Python MapReduce和HDFS API,它基於C ++管道和C libhdfs API,允許編寫具有HDFS訪問權限的完整MapReduce應用程序。 Pydoop與Hadoop內置的Python編程解決方案相比有幾個優點,即Hadoop Streaming和Jython:它是一個CPython包,它允許您訪問所有標準庫和第三方模塊,其中一些可能不可用。

  • SF Pydoop網站
  • Pydoop GitHub項目

Kangaroo

來自Conductor的Kangaroo開源項目,用於編寫消耗Kafka數據的MapReduce作業。介紹性帖子通過使用HFileOutputFormat的MapReduce作業解釋了Conductor從Kafka到HBase的用例加載數據。與其他限制為每個Kafka分區的單個InputSplit的解決方案不同,Kangaroo可以在單個分區的流中以不同的偏移量啟動多個消費者,以提高吞吐量和並行性。

  • Kangaroo Introduction
  • Kangaroo GitHub Project

TinkerPop

用Java編寫的TinkerPop Graph計算框架。提供圖形系統供應商可以實現的核心API。有各種類型的圖形系統,包括內存中的圖形庫,OLTP圖形數據庫和OLAP圖形處理器。實現核心接口後,可以使用圖形遍歷語言Gremlin查詢基礎圖形系統,並使用啟用TinkerPop的算法進行處理。對於許多人來說,TinkerPop被視為圖形計算社區的JDBC。

  • Apache Tinkerpop提案
  • TinkerPop網站

Pachyderm MapReduce

Pachyderm是一款全新的MapReduce引擎,構建於Docker和CoreOS之上。在Pachyderm MapReduce(PMR)中,作業是Docker容器(微服務)中的HTTP服務器。您為Pachyderm提供Docker鏡像,它將自動在整個群集中將其分發到您的數據旁邊。數據通過HTTP發佈到容器,結果存儲迴文件系統。您可以使用您想要的任何語言實現Web服務器並提取任何庫。 Pachyderm還為系統中的所有作業及其依賴項創建DAG,並自動調度管道,使得每個作業在依賴關係完成之前不會運行。 Pachyderm中的所有東西都“在差異中說話”,因此它確切地知道哪些數據已經改變以及管道的哪些子集需要重新運行。 CoreOS是一個基於Chrome OS的開源輕量級操作系統,實際上CoreOS是Chrome OS的一個分支。 CoreOS僅提供在軟件容器內部署應用程序所需的最少功能,以及用於服務發現和配置共享的內置機制

  • Pachyderm站點
  • Pachyderm介紹文章

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(統一批量+ strEAM處理)的名義提交了數據流編程模型和SDK部分作為Apache孵化器提案。

  • Apache Beam Proposal
  • DataFlow Beam和Spark Comparasion


分享到:


相關文章: