三種大資料流處理框架選擇比較:Apache Kafka流、Apache Spark流和Apache Flink - quora
所有這些框架(Kafka Streams,ksqlDB,Flink,Spark)對於特定的用例和需求都是很棒的。
決策選擇真的很難,因為涉及許多因素。以下是一些常見問題和準則,可幫助您做出正確的決定:
- 您是否已在另一個專案中使用這些框架之一?已經經歷過?然後評估它是否也適用於您的下一個專案。學習曲線要簡單得多(但也要了解這些專案的技術折衷)。
- 您是否已經使用Kafka進行訊息傳遞/資料提取(例如,匯入Hadoop,S3或Elastic)?問問自己,您是否真的需要基礎結構中的其他元件,或者Kafka原生技術(例如Kafka Streams或ksqlDB)是否也可以解決您的問題。優勢:只需執行一個基礎架構,就可以與一個供應商合作。
- 無論如何,大多數Spark和Flink專案都使用Kafka作為訊息傳遞和接收層。評估Spark或Flink是否提供其他/更好的功能來滿足您的需求。Spark專為“真正的批處理”而構建,對此仍然很棒。Flink非常適合進行更復雜的流處理作業(包括stream + batch)。
- Kafka Streams,Flink和Spark Streaming的功能重疊可能超過90%。所有這些都可以用於類似的用例。找出Flink是否能增加足夠的附加價值(再次,使用多個群集的主要缺點是您在基礎架構中還需要另一個系統,這導致運維和支援更加困難,尤其是在端到端關鍵業務交易中)。特別是對於業務應用程式的關鍵任務生產部署(例如即時付款),您將非常感激只支援一個部署。考慮一下一次語義(EOS):僅使用Kafka本機EOS而不是組合用於這些事務的不同框架會更容易,風險也更低。
- 您需要哪種部署型別?Kafka Streams是一個庫包。輕鬆嵌入到任何現有(舊版)應用程式中,並易於構建輕量級但可擴充套件的新現代應用程式。但是您必須自己構建包裝器,或使用其他工具/框架(例如Spring Boot)。Spark和Flink均構建為具有自己基礎結構的分散式叢集。兩者都被“Dock化”以作為更輕量級的應用程式執行,但這並不是他們最初設計的目的。評估這種方法的權衡和成熟度!
- 不要忘了評估ksqlDB 。這是另一個Kafka本機流處理框架,結合了兩種方法的優點(Kafka Streams與Spark / Flink):它是Kafka本機,不需要其他基礎結構。部署為單獨的,獨立的,可擴充套件的群集(但高可用性,保證的排序,一次準確的語義等,透過Kafka群集和內部Kafka主題進行管理)。
概要:
問問自己這些問題,並做出正確的決定。所有這些框架(Kafka Streams,ksqlDB,Flink,Spark)對於特定的用例和需求都是很棒的。在大多數基礎架構中,將其中的兩個或多個結合起來以解決各種不同的問題。
等等,Apache Beam呢?
Apache Beam是最小的公分母。如果要使用多個框架(或能夠遷移到GCP),那麼Beam是正確的方法。但是,如果您想為問題選擇最佳的流處理框架,則不會。
例如,幾年前,Kafka Streams社群決定不實施Beam介面,因為這會限制功能和功能。
相關文章
- 實時流處理框架Apache Flink簡介框架Apache
- 使用Apache Flink和Apache Ignit進行資料流分析Apache
- Spark Streaming,Flink,Storm,Kafka Streams,Samza:如何選擇流處理框架SparkORMKafka框架
- Apache 流框架 Flink,Spark Streaming,Storm對比分析(2)Apache框架SparkORM
- Apache 流框架 Flink,Spark Streaming,Storm對比分析(1)Apache框架SparkORM
- Apache 流框架 Flink,Spark Streaming,Storm對比分析(一)Apache框架SparkORM
- Apache 流框架 Flink,Spark Streaming,Storm對比分析(二)Apache框架SparkORM
- Apache流計算框架詳細對比Apache框架
- 大資料流處理:Flume、Kafka和NiFi對比大資料KafkaNifi
- Apache Ignite 與 Apache Spark比較ApacheSpark
- Apache Flink,流計算?不僅僅是流計算!Apache
- 推特大規模應用的流處理框架:Apache Heron框架Apache
- Spark流教程 :使用 Apache Spark 的Twitter情緒分析SparkApache
- 分散式流處理框架 Apache Storm —— 程式設計模型詳解分散式框架ApacheORM程式設計模型
- 簡單比較 Apache Kafka 和 Apache Pulsar要點 - JaroslawApacheKafkaJARROS
- 使用R和Apache Spark處理大規模資料 [session]ApacheSparkSession
- Apache Flink CDC 批流融合技術原理分析Apache
- 博文推薦|使用 Apache Pulsar 和 Scala 進行事件流處理Apache事件
- Apache Spark:大資料處理統一引擎ApacheSpark大資料
- 三個大資料處理框架:Storm,Spark和Samza介紹比較大資料框架ORMSpark
- 比較Apache Pulsar 和Apache Kafka:統一排隊和流式傳輸 - splunkApacheKafka
- 資料湖倉比較:Apache Hudi、Delta Lake、Apache IcebergApache
- Apache Sqoop與Apache Flume比較ApacheOOP
- 使用Apache Spark和Apache Hudi構建分析資料湖ApacheSpark
- Pinterest為何遷移到新的大資料處理工作流平臺Apache Airflow?REST大資料ApacheAI
- 彈性整合Apache Mesos與Apache Kafka框架ApacheKafka框架
- java處理流 和節點流(在位元組流和字元流中,又分為處理流和節點流)Java字元
- 槓上 Spark、Flink?Kafka 為何轉型流資料平臺SparkKafka
- 槓上Spark、Flink?Kafka為何轉型流資料平臺SparkKafka
- 事件流平臺Kafka、Pulsar和RabbitMQ比較 - Picnic事件KafkaMQ
- 簡化資料流:Apache SeaTunnel實現多表同步的高效指南Apache
- 流式大資料處理的三種框架:Storm,Spark和Samza大資料框架ORMSpark
- 流資料處理利器
- 資料流處理命令
- Flink的流處理API(二)API
- Flink流處理的演變
- 選擇Apache Pulsar而不是Kafka的理由 - KafkaesqueApacheKafka
- Apache InLong畢業成為頂級專案,具備百萬億級資料流處理能力Apache