开发者社区> 问答> 正文

spark消费kafka 从kafka拉取数据部分Task特变慢

项目中使用了sparkStreaming去消费kafka中的数据。

发现了个问题,kafka一共30个分区,会起30个Task去拉取数据。在某些消费批次中会有个别Task从Kafka分区中拉取数据特别慢比别的Task慢了近10倍。直接拖慢了整个处理时间。
但从获取数据的数量上来看并没有发生数据倾斜。处理时间却相差这么多?![P_YP514V_N_KIN5O2CSZQ15](https://yqfile.alicdn.com/16d2d2e8407f593de5ce2cbe73f7e71351fc0f6d.png)

展开
收起
游客tpv44ii4se2r4 2019-06-11 18:36:43 4839 0
2 条回答
写回答
取消 提交回答
  • 是不是使用$SPARK_HOME/sbin/start-all.sh启动spark集群,慢的那个worker节点是否按照slaves中配置的主机名启动(验证一下是不是按照ip启动,在默认8080端口可以看到),因为一方是主机名集合一方是ip地址集合结果造成字符串比较时找不到,本地化全部变成ANY,也就是随机获取计算节点那就意味着可能要将数据发送到计算节点上,会造成计算不均匀,不是本地化计算,基本上都没有在本机上节点运行,所以会产生大量IO,就会很慢

    2020-03-29 22:31:52
    赞同 展开评论 打赏
  • 确定具体慢的task对应的kafka的分区id,确定分区id所在的物理环境,排查机器是否有问题

    2020-03-19 19:59:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Java Spring Boot开发实战系列课程【第16讲】:Spring Boot 2.0 实战Apache Kafka百万级高并发消息中间件与原理解析 立即下载
MaxCompute技术公开课第四季 之 如何将Kafka数据同步至MaxCompute 立即下载
消息队列kafka介绍 立即下载