[英]Scaling with Apache Spark/Apache Flink
我計划一個從Apache Kafka讀取的應用程序,然后(可能很耗時)將數據保存到數據庫中。
我的情況是消息,而不是流,但是為了可伸縮性,我正在考慮將其插入Spark或Flink,但無法掌握它們的擴展程度:當我的應用程序作為Spark / Flink的一部分時,應該從Kafka中讀取一些數據嗎?然后退出還是繼續閱讀?
然后,Spark / Flink將如何決定它們必須生成更多應用程序實例以提高吞吐量?
謝謝!
在Apache Flink中,您可以通過設置env.setParallelism(#parallelism)
來使所有運算符與#parallelism
並行實例一起運行來定義操作的並行性,甚至可以為每個運算符定義/覆蓋它,例如dataStream.map(...).setParallelism(#parallelism);
。
有關更多信息,請檢查Flink docs https://ci.apache.org/projects/flink/flink-docs-release-1.3/dev/parallel.html 。
關於從Kafa讀取內容,您可以定義並行接收器(同一組),以使用Kafka主題分區按比例放大/縮小: env.addSource(kafkaConsumer).setParallelism(#topicPartitions)
查看Kafka文檔以獲取有關Kafka主題,分區和使用者組的更多信息: https : //kafka.apache.org/documentation/ 。
請注意,如果您未在Flink程序中指定並行度級別,而是將其部署在本地Flink群集上。 將使用配置文件flinkDir/conf/flink-conf.yaml
的parallelism.default
參數的值。 除非您通過-p
指定它,如./bin/flink run .... -p #parallelism
。 檢查Flink cli選項 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.