根本:详解receiver based Dstream

使用注意事项

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的过程

故障恢复图解

视频

更多视频,加入浪尖知识星球,一起学习进步。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180916G0DRLU00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券