消息丢失问题记录

506 阅读1分钟

项目架构是数据实时数据写入到kafka中, sparkstreaming通过direct消费kafka并将offset保存至zookeeper中 批处理时间间隔是1S,然后数据保存到HBase

  • 使用Spark-On-Yarn模式
  • 正常重新启动spark程序

1ms写入kafka一条数据,测试了500万条,spark正常处理, 正常写入到HBase

证明offset正常保存,正常写入到HBase

但是过了一天

1ms写入kafka一条数据,测试了100万条 消息丢失率大概为18%左右

20ms写入kafka一条数据,正常处理,正常写入

查看了yarn web历史数据,显示executor被杀死

然后考虑是因为executor资源被占用导致内存不足,造成消息丢失

Executor被杀死但是资源没有释放

之前executor给的资源是2G,上调至4G重启sparkstreaming程序, 当天测试没问题

第二天又出现消息丢失问题, 流失率也在19%左右, 所以感觉是executor虽然被杀死,但是没释放,不知道如何处理

小初杂货铺