Storm,Spark和Samza三種框架有何區別?
Storm,Spark和Samza這 三種實時計算系統都是開源的分散式系統,具有低延遲、可擴充套件和容錯性諸多優點,它們的共同特色在於:允許你在執行資料流程式碼時,將任務分配到一系列具有容錯能力的計算機上並行執行。
此外,它們都提供了簡單的 API來簡化底層實現的複雜程度。那麼,它們之間有何區別呢?
Apache Storm
在Storm中,先要設計一個用於實時計算的圖狀結構,我們稱之為拓撲(topology)。這個拓撲將會被提交給叢集,由叢集中的主控節點(master node)分發程式碼,將任務分配給工作節點(worker node)執行。一個拓撲中包括spout和bolt兩種角色,其中spout傳送訊息,負責將資料流以tuple元組的形式傳送出去;而bolt則負責轉換這些資料流,在bolt中可以完成計算、過濾等操作,bolt自身也可以隨機將資料傳送給其他bolt。由spout發射出的tuple是不可變陣列,對應著固定的鍵值對。
Apache Spark
Spark Streaming是核心Spark API的一個擴充套件,它並不會像Storm那樣一次一個地處理資料流,而是在處理前按時間間隔預先將其切分為一段一段的批處理作業。Spark針對持續性資料流的抽象稱為DStream(DiscretizedStream),一個DStream是一個微批處理(micro-batching)的RDD(彈性分散式資料集);而RDD則是一種分散式資料集,能夠以兩種方式並行運作,分別是任意函式和滑動視窗資料的轉換。gendan5.com/zs/000001.html
Apache Samza
處理資料流時,會分別按次處理每條收到的訊息。Samza的流單位既不是元組,也不是Dstream,而是一條條訊息。在Samza中,資料流被切分開來,每個部分都由一組只讀訊息的有序數列構成,而這些訊息每條都有一個特定的ID(offset)。該系統還支援批處理,即逐次處理同一個資料流分割槽的多條訊息。Samza的執行與資料流模組都是可插拔式的,儘管Samza的特色是依賴Hadoop的Yarn(另一種資源排程器)和Apache Kafka。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70014563/viewspace-2948727/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 大資料框架對比 - Hadoop、Spark、Storm、Samza、Spark、Flink大資料框架HadoopSparkORM
- Spark Streaming,Flink,Storm,Kafka Streams,Samza:如何選擇流處理框架SparkORMKafka框架
- Flask框架和Django框架有什麼區別?Flask框架Django
- hadoop和spark的區別HadoopSpark
- Apache Spark:資料框,資料集和RDD之間的區別 - BaeldungApacheSpark
- 說下line-height三種賦值方式有何區別?賦值
- Spark Streaming和Flink的區別Spark
- Spark TempView和GlobalTempView的區別SparkView
- @AutoConfigurationPackage 和 @ComponentScan 有何區別?Package
- Flask框架和Django框架有什麼區別?詳細分析!Flask框架Django
- Python學習之Django和Flask框架有什麼區別?PythonDjangoFlask框架
- Django和Flask框架有什麼區別?Python學習分享DjangoFlask框架Python
- Q:Spark和Hadoop的架構區別SparkHadoop架構
- Python學習之Django和其他Python框架有什麼區別?PythonDjango框架
- shell指令碼的三種執行方式和區別指令碼
- CRM系統和ERP系統的三種區別
- Spark 外部變數和BroadCast變數的區別Spark變數AST
- MySql三種常見引擎及其區別MySql
- 在Linux中,Jail和Chroot有何區別?LinuxAI
- Dubbo和JDK的SPI究竟有何區別?JDK
- Storm系列(六)storm和kafka整合ORMKafka
- Eclipse、IntelliJ IDEA、PyCharm三種IDE的區別EclipseIntelliJIdeaPyCharm
- 常見的三種工廠模式區別模式
- 在Linux中,Linux核心和Shell有何區別?Linux
- 住宅IP和資料中心IP有何區別?
- Python和Matlab有何區別?哪個更難?PythonMatlab
- Tomcat、Nginx和Apache有何區別?Linux如何學?TomcatNginxApacheLinux
- Storm 系列(三)—— Storm 單機版本環境搭建ORM
- Storm系列(三)java編寫第個storm程式ORMJava
- Linux系統管理賬號分為幾種?有何區別?Linux
- IntelliJIDEA中看到classes,sources,javadocs三種jar的區別和各自的作用IntelliJIdeaJavaJAR
- Linux中fork和exec是什麼?有何區別?Linux
- DOM 精通了?請問 Node 和 Elment 有何區別?
- 伺服器領域,Linux和Windows有何區別?伺服器LinuxWindows
- DOM 精通了?請問 Node 和 Element 有何區別?
- 伺服器和虛擬主機有何區別伺服器
- Spark與MapReduce的對比(區別)Spark
- 驍龍710和驍龍845區別對比 高通驍龍710和845有何區別