根本:详解receiver based Dstream

深圳浪尖 浪尖聊大数据

使用注意事项

  1. receiver 会像正常task一样,由driver调度到executor,并占用一个cpu,与正常task不同,receiver是常驻线程
  2. receiver个数 KafkaUtils.createStream调用次数决定,调用一次产生一个receiver

  3. al topicMap = Map("page_visits" -> 1) map的value对应的数值实际上是消费的线程个数。

    前情:基于reciver kafka java客户端消费者高阶API

  4. receiver 默认 200ms 生成一个block,spark.streaming.blockInterval默认值是200ms。最小建议是50ms,小于该值,性能不好,比如task加载比重就比较大了。每秒钟大于50个任务,那么将任务加载分发执行就会成为一种负担。

根据数据量来调整block的生成周期。

  1. receiver接收的block会放入blockmananger,每个executor都会有一个blockmanager实例,由于数据的本地性,那么存在recever的executor会被调度执行更多的task,就会导致某些executor比较空闲。

a). 增加executor
b). repartition增加分区
c). 调整数据本地性 spark.locality.wait 假如任务都是3s以内执行结束,就会导致越来越多的任务调度到数据存在的executor上执行,最终导致executor执行的任务失衡。

  1. kafka 082 高阶消费者api,有分组的概念。当然就会产生一个问题,消费者组内的线程数,和kafka分区数的对应关系。

  2. checkpoint 目的是从driver故障恢复或者恢复upstatebykey等状态

  3. wal,预写日志,为了故障恢复,实现了最少一次消费。一是没必要多副本,尤其是基于hdfs的存储。然后为了效率,可以关闭wal。使能wal只需要将spark.streaming.receiver.writeAheadLog.enable配置为true,默认值是false

9 限制消费者最大速率

1. spark.streaming.backpressure.enabled默认是false,设置为true,就开启了背压机制。2. spark.streaming.backpressure.initialRate默认没设置,初始速率。第一次启动的时候每个receiver接受数据的最大值。3. spark.streaming.receiver.maxRate默认值没设置。每个接收器将接收数据的最大速率(每秒记录数)。 实际上,每个流每秒最多将消费此数量的记录。 将此配置设置为0或负数将不会对速率进行限制。

10。 spark.streaming.stopGracefullyOnShutdown

on yarn 模式kill的时候是立即终止程序的,无效。

  1. 在产生job的时候会将当前job有效范围的所有block组装成一个blockrdd,一个block对应一个分区。

图解

未加入wal的基于recevier的dstream

加入wal的Dstream

存checkpoint和wal的过程


故障恢复图解


视频

https://v.qq.com/x/page/x0704oo7k06.html

©著作权归作者所有:来自51CTO博客作者mob604756ed02fe的原创作品,如需转载,请注明出处,否则将追究法律责任

你的鼓励让我更有动力

赞赏

0人进行了赞赏支持

更多相关文章

  1. 这个数据分析师今年升职加薪了!他做对了什么?
  2. 前端插件:datatables的入门和使用
  3. 阿里巴巴大数据运维之道
  4. AIOps 如何优雅服务应用运维?看民生银行智能运维实践与探索
  5. 一个数据工作者的自白
  6. 一口气说穿数据中台-给你架构师的视角
  7. 用 Python 开发一个企业级的监控平台
  8. 面向千万级用户的运维事件管理之路
  9. 必会:关于SparkStreaming checkpoint那些事儿

随机推荐

  1. LeetCode数据库篇|175组合两个表
  2. 收藏|我的Mysql学习笔记
  3. 51CTO学员:PMP考后感言
  4. 实战|Python数据分析可视化并打包
  5. 深入理解跳跃链表[一]
  6. LeetCode数据库篇|181超过经理收入的员工
  7. Scrapy爬虫实战| 手把手教你使用CrawlSpid
  8. 520|解锁Python表白新姿势
  9. Android(安卓)Studio真机测试时生成的程
  10. Python办公自动化|批量处理文件,一学就会