KafkaConsumer is not safe for multi-threaded
报错内容:线程不安全
原因分析:Kafka consumer是非线程安全的

解决方法

1.(每个线程维护一个KafkaConsumer),这个办法其实就是为缓存在map中的CachedKafkaConsumer对应的key增加了一个参数是线程id,使得不让多个线程使用同一个consumer。

2 .(单个(或多个)consumer,多个worker线程)对spark-streaming-kafka中的CacheKafkaConsumer进行了重构。

缺点

1.更多的TCP连接开销(每个线程都要维护若干个TCP连接)
consumer数受限于topic分区数,扩展性差
频繁请求导致吞吐量下降
线程自己处理消费到的消息可能会导致超时,从而造成rebalance

2.实现麻烦
通常难于维护分区内的消息顺序
处理链路变长,导致难以保证提交位移的语义正确性

spark Kafka 线程安全问题相关推荐

  1. Spark 学习(六) Spark 的线程安全和序列化问题

    一,必备知识 1.1 经典14问 1.2 问题前提 二,序列化问题 2.1 Spark序列化出现情况 2.2 Spark序列化问题解决 三,线程安全问题 3.1 Spark线程安全出现情况 3.2 S ...

  2. 关于 智能指针 的线程安全问题

    先说结论,智能指针都是非线程安全的. 多线程调度智能指针 这里案例使用的是shared_ptr,其他的unique_ptr或者weak_ptr的结果都是类似的,如下多线程调度代码: #include ...

  3. hash是线程安全的吗?怎么解决?_这次进程、线程、多线程和线程安全问题,一次性帮你全解决了...

    1. 什么是进程 一个软件,在操作系统中运行时,我们称其为进程. 进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元. 2. 什么是线程 在一个进程中,每个独立的功能都需要独立的去运行,这 ...

  4. iOS多线程全套:线程生命周期,多线程的四种解决方案,线程安全问题,GCD的使用,NSOperation的使用(上)

    2017-07-08 remember17 Cocoa开发者社区 目的 本文主要是分享iOS多线程的相关内容,为了更系统的讲解,将分为以下7个方面来展开描述. 多线程的基本概念 线程的状态与生命周期 ...

  5. struts2学习笔记--线程安全问题小结

    在说struts2的线程安全之前,先说一下,什么是线程安全?这是一个网友讲的, 如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码.如果每次运行结果和单线程运行的结果是一样 ...

  6. servlet单实例多线程 ---线程安全问题是由实例变量造成的,只要在Servlet里面的任何方法里面都不使用实例变量,那么该Servlet就是线程安全的。(所有建议不要在servlet中定义成员变

    Servlet 单例多线程 Servlet如何处理多个请求访问? Servlet容器默认是采用单实例多线程的方式处理多个请求的: 1.当web服务器启动的时候(或客户端发送请求到服务器时),Servl ...

  7. 线程安全问题产生的原因

    //前提 1:多个线程操作同一个数据 2:操作共享数据的线程代码有多条 当一个线程在执行操作共享数据的多条代码过程中,其他线程参与了运算 就会导致线程安全问题的产生. 解决思路: 就是将多线程操作共享 ...

  8. java dateformat 线程安全_SimpleDateFormat线程安全问题深入解析

    背景 众所周知,Java中的SimpleDateFormat不是线程安全的,在多线程下会出现意想不到的问题.本文将解析SimpleDateFormat线程不安全的具体原因,从而加深对线程安全的理解. ...

  9. 获取返回值作为变量_解决多线程间共享变量线程安全问题的大杀器——ThreadLocal...

    微信公众号:Zhongger 我是Zhongger,一个在互联网行业摸鱼写代码的打工人! 关注我,了解更多你不知道的[Java后端]打工技巧.职场经验等- 上一期,讲到了关于线程死锁.用户进程.用户线 ...

最新文章

  1. 树上分块 - Successor HDU - 4366
  2. 小白都看得懂的监督学习与无监督学习
  3. Django从理论到实战(part51)--User模型
  4. python对word提取数据,如何使用Python从doc / docx文件中提取数据
  5. P4288 [SHOI2014]信号增幅仪 最小圆覆盖
  6. C语言 嵌入式 面试小知识点(一)
  7. 基于Redis的微博的注册
  8. java注释越多_java 注释+常便量
  9. 数据抓取的艺术(三)
  10. Atitit.提升软件稳定性---基于数据库实现的持久化 循环队列 环形队列
  11. 面试题---jmeter
  12. java 对象转换成map_Java中对象(Object)转换成Map
  13. 利用github和hexo一步步生成个人博客(2)---基本配置和发表文章
  14. .glusterfs_如何在Ubuntu 20.04上使用GlusterFS创建冗余存储池
  15. Notepad++ 替换换行符
  16. Tektronix泰克DPO4054示波器
  17. 为内部业务系统(LOB)使用Exchange Online发送匿名邮件
  18. cesium接入高德、osm、谷歌、arcgis、mapbox地图(cesium篇.3)
  19. 玩转路由之 AsusWRT-Merlin 与 Entware
  20. Windows内核--内核空间和用户空间(3.6)

热门文章

  1. python学习记录三:关于ImageFont.truetype(‘Arial.ttf‘, 36)执行报错以及解决方案
  2. SIFT算法原理(2)-极值点的精确定位
  3. matlab不规则碎片拼接,一种不规则破碎单面图像快速拼接方法
  4. mist linux64,Mist钱包的安装与使用
  5. 昊鼎王五:高级运维工程师的成长之路,总有一款适合你^_^
  6. 安防摄像头有这么多种类,如何正确选择?
  7. HTML与CSS的使用与总结
  8. php实现一个简单的访客统计功能
  9. 基于数字证书的UKEY安全登录 与身份认证技术研究
  10. 电话用计算机接听,怎么用电脑打电话-现在你可以在电脑上接听安卓手机的电话了...