使用注意事项
1. receiver 会像正常task一样,由driver调度到executor,并占用一个cpu,与正常task不同,receiver是常驻线程
2. receiver个数 KafkaUtils.createStream调用次数决定,调用一次产生一个receiver3. al topicMap = Map("page_visits" -> 1) map的value对应的数值实际上是消费的线程个数。前情:基于reciver kafka java客户端消费者高阶API根据数据量来调整block的生成周期。5. receiver接收的block会放入blockmananger,每个executor都会有一个blockmanager实例,由于数据的本地性,那么存在recever的executor会被调度执行更多的task,就会导致某些executor比较空闲。a). 增加executorb). repartition增加分区6. kafka 082 高阶消费者api,有分组的概念。当然就会产生一个问题,消费者组内的线程数,和kafka分区数的对应关系。7. checkpoint 目的是从driver故障恢复或者恢复upstatebykey等状态9 限制消费者最大速率on yarn 模式kill的时候是立即终止程序的,无效。11. 在产生job的时候会将当前job有效范围的所有block组装成一个blockrdd,一个block对应一个分区。
图解
未加入wal的基于recevier的dstream
加入wal的Dstream
存checkpoint和wal的过程
故障恢复图解
视频
更多视频,加入浪尖知识星球,一起学习进步。
领取专属 10元无门槛券
私享最新 技术干货