天天看點

【Spark實戰系列】sparkstreaming 消費 kafka0.10 中的 LocationStrategies 和 ConsumerStrategies 代表的是什麼含義?

LocationStrategies

新的Kafka使用者API将預先擷取消息到緩沖區。是以,出于性能原因,Spark內建将緩存的消費者保留在執行程式上(而不是為每個批處理重新建立它們),并且更喜歡在具有适當使用者的主機位置上安排分區,這一點很重要。
在大多數情況下,您應該使用LocationStrategies.PreferConsistent,如上所示。這将在可用執行程式之間均勻配置設定分區。如果您的執行程式與Kafka代理在同一主機上,請使用PreferBrokers,它更願意為該分區安排Kafka上司者的分區。最後,如果分區之間的負載有明顯偏差,請使用PreferFixed。這允許您指定分區到主機的顯式映射(任何未指定的分區将使用一緻的位置)。
消費者的緩存的預設最大大小為64.如果您希望處理超過(64 *個執行程式數)Kafka分區,則可以通過spark.streaming.kafka.consumer.cache.maxCapacity更改此設定。
如果要禁用Kafka使用者的緩存,可以将spark.streaming.kafka.consumer.cache.enabled設定為false。可能需要禁用緩存來解決SPARK-19185中描述的問題。一旦SPARK-19185解決,可以在Spark的更高版本中删除此屬性。
緩存由topicpartition和group.id鍵入,是以每次調用createDirectStream時都要使用單獨的group.id。 
           

ConsumerStrategies

新的Kafka消費者API有許多不同的方法來指定主題,其中一些需要相當大的後對象執行個體化設定。 ConsumerStrategies提供了一種抽象,即使從檢查點重新啟動後,Spark也可以獲得正确配置的消費者。

ConsumerStrategies.Subscribe,如上所示,允許您訂閱固定的主題集合。 SubscribePattern允許您使用正規表達式來指定感興趣的主題。請注意,與0.8內建不同,使用Subscribe或SubscribePattern應響應在正在運作的流期間添加分區。最後,Assign允許您指定固定的分區集合。所有這三個政策都重載了構造函數,允許您指定特定分區的起始偏移量。

如果您具有上述選項無法滿足的特定使用者設定需求,則ConsumerStrategy是您可以擴充的公共類。

如果有寫的不對的地方,歡迎大家指正,如果有什麼疑問,可以加QQ群:340297350 謝謝

【Spark實戰系列】sparkstreaming 消費 kafka0.10 中的 LocationStrategies 和 ConsumerStrategies 代表的是什麼含義?

繼續閱讀