Spark-streaming-kafka

最近在用spark-streaming-kafka遇到的问题

问题1

There are some messages whose size is larger than the fetch size 1048576 and hence cannot be ever returned. Increase the fetch size, or decrease the maximum message size the broker will allow.

解决方案

修改ConsumerConfig.MAX_PARTITION_FETCH_BYTES_CONFIG(fetch.message.max.bytes)设置个较大的值。

问题2

问题描述:当kafka中存在大量未消费的消息时

当我们提交spark-streaming程序消费kafka中的消息时,若kafka中存在大量未消费的消息,首个batch要处理大量的消息,会导致spark-submit设置的资源无法满足大量消息的处理而导致崩溃。因此在spark-submit启动的时候多加了一个配置:--conf spark.streaming.kafka.maxRatePerPartition=10000。限制每秒钟从topic的每个partition最多消费的消息条数,这样就把首个batch的大量的消息拆分到多个batch中去了,为了更快的消化掉delay的消息,可以调大计算资源和把这个参数调大。

spark executor

Executor是spark任务(task)的执行单元,运行在worker上,但是不等同于worker,实际上它是一组计算资源(cpu核心、memory)的集合。一个worker上的memory、cpu由多个executor共同分摊。

 Spark-streaming-kafka_第1张图片

spark.executor.cores:顾名思义这个参数是用来指定executor的cpu内核个数,分配更多的内核意味着executor并发能力越强,能够同时执行更多的task

你可能感兴趣的:(Kafka)