[list]Apache數(shù)據(jù)流項(xiàng)目Kafka/Storm/Samza/Beam/Spark/Flume/NiFi

Apache數(shù)據(jù)流項(xiàng)目:一個(gè)都不少|「云頭條」 http://mp.weixin.qq.com/s?src=3&timestamp=1480572229&ver=1&signature=z5tskWVYLQ5zeoVG6ormP0yrjSDSY7RnTfqIpt3JinbmQ-uUGEqDjrjsu0Q3-prqDsFXW80h-OZSFEgzh2ZmVmPDDeOw7BjxFd*dWanBRLI92RoeOETv32iLzVKdS1Ni4H8DnbThlSmimMZkQxNQj3FWYvlE1pfKbrqF0u0n84o=

Apache Kafka、Apache Storm、Apache Spark、Apache Samza、Apache Beam


生產(chǎn)、使用、處理和分析數(shù)據(jù)的速度正在以令人難以置信的步伐迅速增加。社交媒體、物聯(lián)網(wǎng)、廣告技術(shù)和游戲等垂直領(lǐng)域都在竭力處理大得出奇的數(shù)據(jù)集。這些行業(yè)需要近實(shí)時(shí)處理和分析數(shù)據(jù)。像Apache Hadoop這些大數(shù)據(jù)類型的傳統(tǒng)框架不是很適合這些使用場合。

因而,過去幾年已經(jīng)啟動了多個(gè)開源項(xiàng)目,以處理數(shù)據(jù)流。它們都旨在處理來自不止一個(gè)數(shù)據(jù)源的源源不斷的記錄。從Kafka到Beam,有十多個(gè)Apache項(xiàng)目,它們處于不同的發(fā)展階段。

當(dāng)前的Apache數(shù)據(jù)流項(xiàng)目高度重疊,針對類似的使用場景。用戶常常一頭霧水,不知該選擇哪種合適的開源架構(gòu),以實(shí)施實(shí)時(shí)數(shù)據(jù)流處理解決方案。本文試圖幫助客戶理清讓人眼花繚亂的Apache數(shù)據(jù)流項(xiàng)目,為此列出了每個(gè)項(xiàng)目的主要差異化優(yōu)勢。我們將討論以下開源項(xiàng)目針對的使用場合和主要場景:Apache Kafka、Apache Storm、Apache Spark、Apache Samza、Apache Beam及相關(guān)項(xiàng)目。

Apache Flume

Apache Flume是歷史最悠久的Apache項(xiàng)目之一,它旨在收集和聚合龐大數(shù)據(jù)集(比如Web服務(wù)器日志),并將它們轉(zhuǎn)移到中心位置。它屬于數(shù)據(jù)收集和單事件處理系列的數(shù)據(jù)流處理解決方案。Flume基于代理驅(qū)動型架構(gòu),客戶端生成的事件直接流式傳輸?shù)紸pache Hive、HBase或其他數(shù)據(jù)存儲區(qū)。

Flume的配置包括:來源、通道和接收器(sink)。來源可以是任何東西:從系統(tǒng)日志(Syslog)、Twitter數(shù)據(jù)流到Avro端點(diǎn),不一而足。通道定義了數(shù)據(jù)流如何傳輸?shù)侥康牡亍S行У倪x項(xiàng)包括:內(nèi)存、Java數(shù)據(jù)庫連接(JDBC)、Kafka、文件及其他。接收器則定義了數(shù)據(jù)流傳輸?shù)侥膫€(gè)目的地。Flume支持許多接收器,比如Hadoop分布式文件系統(tǒng)(HDFS)、Hive、HBase、ElasticSearch、Kafka及其他。

Flume

Apache Flume很適合客戶端基礎(chǔ)設(shè)施支持安裝代理的場景。最流行的使用場合就是,將來自多個(gè)來源的日志流式傳輸?shù)街醒氤志眯詳?shù)據(jù)存儲區(qū),供進(jìn)一步處理分析。

典型的使用場合:流式傳輸來自能夠運(yùn)行Java虛擬機(jī)(JVM)的多個(gè)來源的日志。

相關(guān)網(wǎng)址:https://flume.apache.org

Apache Spark

Apache Spark是大數(shù)據(jù)生態(tài)系統(tǒng)中最炙手可熱的技術(shù)。由于快速的內(nèi)存處理功能以及一套表達(dá)式開發(fā)API,它引起了廣大數(shù)據(jù)科學(xué)家和開發(fā)人員的注意。Spark最初是在加州大學(xué)伯克利分校的AMPLab開發(fā)而成,后來被捐贈給了Apache軟件基金會。

Apache Spark為開發(fā)人員提供的一套API圍繞一種名為彈性分布式數(shù)據(jù)集(RDD)的數(shù)據(jù)結(jié)構(gòu),這是只讀格式的多重集數(shù)據(jù)項(xiàng),這些數(shù)據(jù)項(xiàng)分布在具有容錯(cuò)機(jī)制的機(jī)器集群上。Spark旨在克服MapReduce的局限性,RDD充當(dāng)分布式程序的工作集,充分利用分布式共享內(nèi)存。Spark聲稱在內(nèi)存中處理起來比Hadoop MapReduce快100倍,在磁盤上運(yùn)行時(shí)快10倍。

Spark用Scala編寫,但支持多種編程語言。它隨帶適配件,可以處理存儲在不同來源的數(shù)據(jù),包括HDFS文件、Cassandra、HBase和亞馬遜S3。

Spark Streaming是一個(gè)必不可少的組件,用于構(gòu)建容錯(cuò)的數(shù)據(jù)流應(yīng)用程序。它讓開發(fā)人員能夠借助Spark的高級API,構(gòu)建數(shù)據(jù)流應(yīng)用程序。由于Spark Streaming在Spark上運(yùn)行,讓開發(fā)人員得以重復(fù)使用同一代碼用于批處理,針對歷史數(shù)據(jù)合并數(shù)據(jù)流,或者對數(shù)據(jù)流狀態(tài)運(yùn)行即席查詢。它可用于構(gòu)建傳統(tǒng)分析之外的強(qiáng)大的交互式應(yīng)用程序。Spark Streaming在微批處理(micro-batching)模式下運(yùn)行,批任務(wù)大小比常規(guī)批處理小得多。


Spark(來源:Toptal)

雖然不是一個(gè)嚴(yán)格的要求,但Spark可以在現(xiàn)有的Hadoop和Mesos集群上運(yùn)行。它提供了一個(gè)外殼,可用于交互式探究數(shù)據(jù)。

Apache Spark與Apache Kafka結(jié)合起來后,就能提供一種強(qiáng)大的數(shù)據(jù)流處理環(huán)境。

典型的使用場合:實(shí)時(shí)處理社交媒體內(nèi)容,以執(zhí)行情感分析。

相關(guān)網(wǎng)址:http://spark.apache.org

Apache Storm

Apache Storm最初由BackType公司(已被Twitter收購)的內(nèi)森·馬茲(Nathan Marz)開發(fā)。收購后,Twitter開放了Storm的源代碼,后來捐贈給Apache軟件基金會。Storm備受Flipboard、雅虎和Twitter等公司的信賴,已逐漸成為開發(fā)分布式實(shí)時(shí)數(shù)據(jù)處理平臺的標(biāo)準(zhǔn)。

Storm常常被稱為是用于實(shí)時(shí)處理的Hadoop。據(jù)官方說明文檔顯示,“有了Storm,就很容易可靠地處理無邊界數(shù)據(jù)流,它之于實(shí)時(shí)處理,如同Hadoop之于批處理。”

Apache Storm主要是為確保可擴(kuò)展性和容錯(cuò)性設(shè)計(jì)的。它保證每個(gè)元組(tuple)會至少處理一次。雖然它是用Clojure編寫的,但應(yīng)用程序可以用讀寫標(biāo)準(zhǔn)輸入輸出數(shù)據(jù)流的任何編程語言來編寫。Storm旨在支持連接輸入數(shù)據(jù)流,名為“spout”和“bolt”,它們是處理模塊和輸出模塊。spout和bolt組合構(gòu)成了有向非循環(huán)圖(DAG),這被稱為拓?fù)浣Y(jié)構(gòu)。基于預(yù)先定義的配置,拓?fù)浣Y(jié)構(gòu)可以在集群上運(yùn)行,調(diào)度程序?qū)⒐ぷ髁糠峙涞綄儆诩阂徊糠值墓?jié)點(diǎn)上。

Storm拓?fù)浣Y(jié)構(gòu)常常與Hadoop MapReduce作業(yè)相比較。但不同于Hadoop作業(yè),拓?fù)浣Y(jié)構(gòu)持續(xù)運(yùn)行,直到被終止。在拓?fù)浣Y(jié)構(gòu)里面,spout獲取數(shù)據(jù),之后數(shù)據(jù)將通過一系列bolt。每個(gè)bolt負(fù)責(zé)轉(zhuǎn)換或處理數(shù)據(jù)。一些bolt可能將數(shù)據(jù)寫入到持久性數(shù)據(jù)庫或文件,而另一些bolt可能調(diào)用第三方API來轉(zhuǎn)換數(shù)據(jù)。


來源:Hortonworks

由于開源生態(tài)系統(tǒng),有一系列豐富的spout可用于流行的數(shù)據(jù)源,它們由社區(qū)創(chuàng)建。借助適配件概念,Storm可與HDFS文件系統(tǒng)實(shí)現(xiàn)互操作,參與Hadoop作業(yè)。

Storm經(jīng)常與Apache Kafka和Apache Spark等其他數(shù)據(jù)獲取和處理組件結(jié)合起來使用。它提供了一種可靠、可擴(kuò)展、容錯(cuò)的分布式計(jì)算框架。

典型的使用場合:實(shí)時(shí)轉(zhuǎn)換和處理社交媒體/物聯(lián)網(wǎng)傳感器數(shù)據(jù)流。

相關(guān)網(wǎng)址:http://storm.apache.org

Apache NiFi

相比其他數(shù)據(jù)流解決方案,Apache NiFi是個(gè)比較新的項(xiàng)目,2015年7月份升級成為Apache的頂級項(xiàng)目。它基于企業(yè)集成模式(EIP),數(shù)據(jù)在到達(dá)目的地之前經(jīng)歷多個(gè)階段和多次轉(zhuǎn)換。

Apache NiFi隨帶一個(gè)高度直觀的圖形界面,因而很容易設(shè)計(jì)數(shù)據(jù)流和轉(zhuǎn)換。業(yè)務(wù)分析師和決策者可以使用該工具來定義數(shù)據(jù)流。它支持眾多輸入源,包括靜態(tài)數(shù)據(jù)集和流式數(shù)據(jù)集。從文件系統(tǒng)、社交媒體數(shù)據(jù)流、Kafka、FTP、HTTP和JMS等數(shù)據(jù)源獲取的數(shù)據(jù)可以流到諸多目的地,包括ElasticSearch、亞馬遜S3、AWS Lambda、Splunk、Solr、SQL和NoSQL數(shù)據(jù)庫。轉(zhuǎn)換內(nèi)容可以被引入到數(shù)據(jù)流的路徑。

NiFi

新興的工業(yè)物聯(lián)網(wǎng)領(lǐng)域需要一種強(qiáng)大、可靠和安全的數(shù)據(jù)流引擎。Apache NiFi有望成為最受青睞的編排引擎,用于處理實(shí)施的物聯(lián)網(wǎng)系統(tǒng)中的傳感器數(shù)據(jù)。
它結(jié)合了Node-Red的簡潔和大數(shù)據(jù)的力量。內(nèi)置了支持Kafka、JMS及其他通道的功能,因而成為企業(yè)物聯(lián)網(wǎng)解決方案的一種理想選擇。

Apache NiFi面向的經(jīng)典場景之一是,構(gòu)建熱路徑和冷路徑分析。物聯(lián)網(wǎng)設(shè)備和傳感器生成的數(shù)據(jù)集含有需要實(shí)時(shí)分析的某些數(shù)據(jù)點(diǎn),而一小部分的數(shù)據(jù)存儲起來用于批處理。這類數(shù)據(jù)集通常通過高速引擎來流式傳輸,比如Apache Kafka、亞馬遜Kinesis和Azure Event Hubs。Apache NiFi可以用來為同一數(shù)據(jù)集定義兩條不同的路徑:負(fù)責(zé)近實(shí)時(shí)處理的熱路徑和負(fù)責(zé)批處理的冷路徑。

典型的使用場合:定義物聯(lián)網(wǎng)傳感器數(shù)據(jù)流動的交互式規(guī)則引擎。

相關(guān)網(wǎng)址:https://nifi.apache.org

Apache Apex

總部位于硅谷的DataTorrent公司將其中一款實(shí)時(shí)數(shù)據(jù)流商業(yè)產(chǎn)品捐贈給了Apache軟件基金會,該產(chǎn)品現(xiàn)在名為Apache Apex。它是Apache歷史最短的項(xiàng)目之一,已從孵化器項(xiàng)目升級成為頂級項(xiàng)目。Apache Apex定位于作為Apache Storm和Apache Spark的替代方案,用于實(shí)時(shí)數(shù)據(jù)流處理。它聲稱,速度至少比Spark快10倍到100倍。

相比Apache Spark,Apex自帶企業(yè)功能,比如事件處理、保證事件傳遞有順序,以及核心平臺層面的容錯(cuò)機(jī)制。不像Spark需要Scala方面有過硬的技能,現(xiàn)有的Java開發(fā)人員就可以使用Apex。它可以在現(xiàn)有的Hadoop生態(tài)系統(tǒng)里面順暢運(yùn)行,使用YARN用于向上擴(kuò)展或向下擴(kuò)展,同時(shí)使用HDFS用于容錯(cuò)。

Apex

Apache Apex定位于業(yè)界唯一的開源企業(yè)級引擎,既能夠處理批數(shù)據(jù),又能滿足數(shù)據(jù)流的要求。它是一種動態(tài)數(shù)據(jù)平臺,允許統(tǒng)一處理實(shí)時(shí)無邊界數(shù)據(jù)流(流式作業(yè))或常規(guī)文件中的邊界數(shù)據(jù)(批作業(yè))。企業(yè)組織可以構(gòu)建應(yīng)用程序以適合其業(yè)務(wù)邏輯,并且跨流式作業(yè)和批處理來擴(kuò)展應(yīng)用程序。Apache Apex架構(gòu)可以處理從消息總線、文件系統(tǒng)、數(shù)據(jù)庫或其他任何數(shù)據(jù)源讀取數(shù)據(jù),或?qū)?shù)據(jù)寫入到這些對象。只要這些數(shù)據(jù)源擁有可以在JVM里面運(yùn)行的客戶代碼,就可以實(shí)現(xiàn)無縫集成。

Apex隨帶一個(gè)名為Malhar的操作符庫,這些預(yù)先構(gòu)建的操作符面向數(shù)據(jù)源和目的地,比如消息總線、文件系統(tǒng)和數(shù)據(jù)庫。這些操作符讓開發(fā)人員能夠快速構(gòu)建處理眾多數(shù)據(jù)源的業(yè)務(wù)邏輯。Apex的總體目標(biāo)是降低企業(yè)中大數(shù)據(jù)項(xiàng)目的復(fù)雜性。

典型的使用場合:在容錯(cuò)基礎(chǔ)設(shè)施上運(yùn)行的應(yīng)用,需要實(shí)時(shí)處理異構(gòu)數(shù)據(jù)集以及需要在批模式下處理數(shù)據(jù)集。

相關(guān)網(wǎng)址:https://apex.apache.org

Apache Kafka Streams

Kafka Streams就是建立在流行的數(shù)據(jù)獲取平臺Apache Kafka上的一個(gè)庫。源代碼作為Kafka項(xiàng)目的一部分來提供。它由Confluent捐贈,創(chuàng)辦這家初創(chuàng)公司的正是LinkedIn當(dāng)初開發(fā)Kafka項(xiàng)目的一群人。

不久前,Apache Kafka成為了最流行的實(shí)時(shí)大規(guī)模消息傳遞系統(tǒng)。它迅速成為了當(dāng)代數(shù)據(jù)平臺的核心基礎(chǔ)設(shè)施構(gòu)建模塊。它用于眾多行業(yè)的成千上萬家公司,包括Netflix、思科、貝寶和Twitter。Kafka還成了提供托管型大數(shù)據(jù)和分析平臺的公共云提供商提供的一項(xiàng)托管服務(wù)。

Kafka Streams是一個(gè)庫,用于構(gòu)建數(shù)據(jù)流應(yīng)用程序,具體來說是指負(fù)責(zé)將輸入Kafka主題轉(zhuǎn)換為輸出Kafka主題的那些應(yīng)用程序。它不是為大型分析設(shè)計(jì)的,而是為提供高效、緊湊的數(shù)據(jù)流處理的微服務(wù)設(shè)計(jì)的。這意味著,Kafka Streams庫旨在集成到應(yīng)用程序的核心業(yè)務(wù)邏輯中,而不是作為批分析作業(yè)的一部分。

Kafka

Kafka Streams幫助用戶擺脫了這項(xiàng)任務(wù):安裝、配置和管理專門為數(shù)據(jù)流處理而部署的復(fù)雜Spark集群。它簡化了數(shù)據(jù)流處理,因而讓它可以作為一種面向異步服務(wù)的獨(dú)立式應(yīng)用編程模型。開發(fā)人員無需數(shù)據(jù)流處理集群,就可以嵌入Kafka Streams功能。該架構(gòu)會有Apache Kafka和應(yīng)用程序,沒有外部的依賴項(xiàng)。

Kafka Streams提供了與Kafka提供的核心抽象完全集成的處理模式,以便減少數(shù)據(jù)流架構(gòu)中活動部分的總數(shù)。它不是通常為了處理批處理而編寫的MapReduce代碼的一部分。

討論Kafka Streams時(shí),還有必要談提到Kafka Connect,這種框架可靠地將Kafka與外部系統(tǒng)連接起來,比如數(shù)據(jù)庫、鍵值存儲系統(tǒng)、搜索索引和文件系統(tǒng)。

Kafka Streams的最大優(yōu)點(diǎn)是,它可以包裝成一個(gè)容器,可以放在Docker上。開發(fā)運(yùn)維團(tuán)隊(duì)還可以使用Ansible、Puppet、Chef、Salt,甚至外殼腳本,以部署和管理應(yīng)用程序。一旦被包裝成容器,它可以與眾多編排引擎集成起來,比如Docker Swarm、Kubernetes、DC/OS、Yarn及其他編排引擎。

典型的使用場合:需要嵌入式數(shù)據(jù)流處理功能,又不依賴復(fù)雜集群的微服務(wù)和獨(dú)立式應(yīng)用程序。

相關(guān)網(wǎng)址:http://docs.confluent.io/3.0.0/streams/index.html

Apache Samza

Apache Samza是在LinkedIn開發(fā)出來的,避免Hadoop的批處理需要的那種漫長的周轉(zhuǎn)時(shí)間。它建立在Apache Kafka這低延遲分布式消息傳遞系統(tǒng)的基礎(chǔ)上。開發(fā)Samza的初衷是,為數(shù)據(jù)持續(xù)處理提供一種輕量級框架。

Kafka和Samza這對組合好比HDFS和MapReduce。如果HDFS充當(dāng)MapReduce作業(yè)的輸入,那么Kafka獲取由Samza處理的數(shù)據(jù)。數(shù)據(jù)流入時(shí),Samza可以持續(xù)計(jì)算結(jié)果,提供亞秒級響應(yīng)時(shí)間。

從數(shù)據(jù)流獲得輸入后,Samza執(zhí)行作業(yè),作業(yè)其實(shí)是使用和處理一組輸入數(shù)據(jù)流的代碼。作業(yè)可能用Java、Scala或支持JVM的其他語言編寫。為了確保可擴(kuò)展性,作業(yè)進(jìn)一步細(xì)分為名叫任務(wù)(task)的更小執(zhí)行單位,任務(wù)是一種并行處理單位,就好比數(shù)據(jù)流的分區(qū)。每個(gè)任務(wù)使用由其中一個(gè)分區(qū)傳輸?shù)臄?shù)據(jù)。

任務(wù)按順序處理來自每一個(gè)輸入分區(qū)的消息,按照消息偏移的次序。沒有跨分區(qū)的定義順序,讓每個(gè)任務(wù)可以獨(dú)立運(yùn)行。

Samza

Samza將在一個(gè)或多個(gè)容器里面執(zhí)行的多個(gè)任務(wù)分成一組,容器是隔離的操作系統(tǒng)進(jìn)程,運(yùn)行JVM,負(fù)責(zé)為某一個(gè)作業(yè)執(zhí)行一組任務(wù)。容器是單線程,負(fù)責(zé)管理任務(wù)的生命周期。

Samza及其他數(shù)據(jù)流技術(shù)之間的主要區(qū)別在于有狀態(tài)的數(shù)據(jù)流處理功能。Samza任務(wù)有專門的鍵/值存儲區(qū),位于同樣任務(wù)的機(jī)器上。這種架構(gòu)提供的讀寫性能勝過其他任何數(shù)據(jù)流處理軟件。

由于Samza從LinkedIn廣泛使用的Kafka發(fā)展而來,它有著出色的兼容性。它變成了Kafka用于獲取數(shù)據(jù)的架構(gòu)當(dāng)中的一種自然選擇。

Apache Samza和Kafka Streams旨在處理同一個(gè)問題,后者是一種可嵌入庫,而不是功能完備的軟件。

典型的使用場合:經(jīng)過優(yōu)化的數(shù)據(jù)流處理,面向利用Kafka來獲取數(shù)據(jù)的應(yīng)用。

相關(guān)網(wǎng)址:http://samza.apache.org

Apache Flink

Apache Flink最初于2010年在德國開發(fā),當(dāng)時(shí)還叫“Stratosphere:云端信息管理系統(tǒng)”,它是德國柏林工業(yè)大學(xué)、柏林洪堡大學(xué)和波茨坦哈索-普拉特納學(xué)院合作的產(chǎn)物。提交給Apache軟件基金會后,它在2014年12月成為了一個(gè)頂級項(xiàng)目。起初,Apache Flink的概念和使用場合類似Apache Spark。它旨在成為運(yùn)行批處理、數(shù)據(jù)流處理、交互處理、圖形處理和機(jī)器學(xué)習(xí)等應(yīng)用的單一平臺。
但是Spark和Flink在實(shí)施方面存在著區(qū)別。

Spark Streaming旨在處理小批作業(yè),提供近實(shí)時(shí)功能。由于細(xì)粒度事件級處理架構(gòu),Apache Flink提供實(shí)時(shí)處理。

Flink為數(shù)據(jù)流處理帶來了幾項(xiàng)獨(dú)特的功能。它為狀態(tài)更新提供了數(shù)據(jù)僅處理一次并且僅輸出一次(exactly-once)的保證,讓開發(fā)人員不必面臨處理重復(fù)的負(fù)擔(dān)。它有一種高吞吐量引擎,可以在通過分布式網(wǎng)絡(luò)發(fā)送事件之前緩存事件。Flink提供了一種強(qiáng)大的數(shù)據(jù)流編程模型,擁有靈活的窗口方案。

Flink

Flink旨在既是用于數(shù)據(jù)流分析的DataStream API,又是在底層數(shù)據(jù)流處理引擎上用于批分析的DataSet API。

Apache Flink支持用Java或Scala編寫的程序,這類程序會自動編譯并優(yōu)化,變成數(shù)據(jù)流程序。Flink并沒有數(shù)據(jù)存儲系統(tǒng)。輸入數(shù)據(jù)可能來自像HDFS或HBase這樣的分布式存儲系統(tǒng)。至于數(shù)據(jù)流處理,F(xiàn)link可以使用來自Kafka等消息隊(duì)列的數(shù)據(jù)。

典型的使用場合:實(shí)時(shí)檢測和預(yù)防欺詐性信用卡交易。

相關(guān)網(wǎng)址:http://flink.apache.org

Apache Beam

Apache Beam是Apache軟件基金會越來越多的數(shù)據(jù)流項(xiàng)目中最新增添的成員。這個(gè)項(xiàng)目的名稱表明了設(shè)計(jì):結(jié)合了批處理(Batch)模式和數(shù)據(jù)流(Stream)處理模式。它基于一種統(tǒng)一模式,用于定義和執(zhí)行數(shù)據(jù)并行處理管道(pipeline),這些管理隨帶一套針對特定語言的SDK用于構(gòu)建管道,以及針對特定運(yùn)行時(shí)環(huán)境的Runner用于執(zhí)行管道。

谷歌以及Data Artisans、Cloudera和貝寶將其大數(shù)據(jù)服務(wù)的SDK:Cloud Dataflow捐贈給Apache軟件基金會,后來它成為了Apache Beam的基礎(chǔ)。它由谷歌的眾多內(nèi)部項(xiàng)目演變而來,比如MapReduce、FlumeJava和Millwheel。Beam中的Pipeline Runners概念可將數(shù)據(jù)處理管道轉(zhuǎn)變成與多個(gè)分布式處理后端兼容的API。管道是一連串在數(shù)據(jù)集上運(yùn)行的進(jìn)程。每個(gè)Beam程序都會有面向后端的runner,這取決于管道在哪里執(zhí)行。該平臺目前支持的runner包括:谷歌Cloud Dataflow、Apache Flink和Apache Spark。正在開發(fā)支持Storm和MapReduce等其他runner的功能。

Beam

Beam可以解決什么問題?當(dāng)MapReduce作業(yè)從Hadoop遷移到Spark或Flink,就需要大量的重構(gòu)。Dataflow試圖成為代碼和執(zhí)行運(yùn)行時(shí)環(huán)境之間的一個(gè)抽象層。代碼用Dataflow SDK實(shí)施后,會在多個(gè)后端上運(yùn)行,比如Flink和Spark。Beam支持Java和Python,與其他語言綁定的機(jī)制在開發(fā)中。它旨在將多種語言、框架和SDK整合到一個(gè)統(tǒng)一的編程模型。

典型的使用場合:依賴多種框架(包括Flink和Spark)的應(yīng)用程序。

相關(guān)網(wǎng)址:http://beam.incubator.apache.org

Apache Ignite

Apache Ignite是建立在分布式內(nèi)存計(jì)算平臺上的一個(gè)內(nèi)存層。它經(jīng)過了優(yōu)化,以便實(shí)時(shí)處理龐大數(shù)據(jù)集。內(nèi)存架構(gòu)讓它的運(yùn)行速度比基于磁盤或基于閃存的傳統(tǒng)技術(shù)要快得多。

該項(xiàng)目最初是由GridGain Systems開發(fā)的,后來它在2014年捐贈給了Apache軟件基金會。2015年9月份,Ignite從孵化器項(xiàng)目升級為頂級項(xiàng)目。

雖然Spark和Ignite都依賴分布式內(nèi)存處理架構(gòu),但兩者之間還是存在細(xì)微的差別。Spark主要是為交互式分析和機(jī)器學(xué)習(xí)等應(yīng)用設(shè)計(jì)的,而Ignite旨在提供編程實(shí)時(shí)分析、機(jī)器對機(jī)器通信和高性能事務(wù)處理。

Ignite有可能成為事務(wù)處理系統(tǒng)的優(yōu)選解決方案,比如股票交易、欺詐檢測、實(shí)時(shí)建模和分析。無論是在商用硬件上運(yùn)行的橫向擴(kuò)展架構(gòu),還是在高端工作站和服務(wù)器上的縱向擴(kuò)展,Ignite同樣可以輕松應(yīng)對。

Ignite

Ignite數(shù)據(jù)流功能讓用戶能夠以可擴(kuò)展、容錯(cuò)的方式,處理持續(xù)不斷的數(shù)據(jù)流。數(shù)據(jù)注入Ignite的速度可以非常快,在一個(gè)中等規(guī)模的集群上每秒輕松超過100萬個(gè)事件。

典型的使用場合:高度依賴編程實(shí)時(shí)分析、機(jī)器對機(jī)器通信和高性能事務(wù)處理的應(yīng)用。

相關(guān)網(wǎng)址:https://ignite.apache.org

云頭條編譯|未經(jīng)授權(quán)謝絕轉(zhuǎn)載

歡迎加入交流,群主微信:aclood

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評論 6 532
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,538評論 3 417
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,423評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,761評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 55,207評論 1 324
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,419評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,959評論 1 335
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,983評論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,678評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,978評論 2 374

推薦閱讀更多精彩內(nèi)容