1. 首页
  2. 编程语言
  3. 其他
  4. spark通过kafka-appender指定日志输出到kafka引发的死锁问题

spark通过kafka-appender指定日志输出到kafka引发的死锁问题

上传者: 2021-07-10 13:43:19上传 PDF文件 150.55 KB 热度 20次

在采用起初是这么配置spark日志输出到kafka的:这里用发现问题后,尝试将输出到kafka的规则去掉,问题解除!通过其他测试,证实目标kafka其实是正常的,这就非常奇怪了。查看yarn的ResourceManager日志,发现有如下超时。表明,yarn本身是接收任务的,但是发现任务迟迟没有启动。在spark的场景下其实是指只有driver启动了,但是没有启动executor。这里我把结果贴的全一点到这里,已经确定是死锁,导致driver一开始就运行停滞,那么当然无法提交executor执行。两个线程其实都是卡在打日志上了,观察堆栈可以发现,两个线程同时持有了同一个log对象。而这个log对象实际上是kafka-appender。而kafka-appender本质上持有kafka-client,及其内部的Metadata对象。log4j的doAppend为了保证线程安全也用于是事情开始了:

用户评论