项目中使用了sparkStreaming去消费kafka中的数据。
发现了个问题,kafka一共30个分区,会起30个Task去拉取数据。在某些消费批次中会有个别Task从Kafka分区中拉取数据特别慢比别的Task慢了近10倍。直接拖慢了整个处理时间。
但从获取数据的数量上来看并没有发生数据倾斜。处理时间却相差这么多?![P_YP514V_N_KIN5O2CSZQ15](https://yqfile.alicdn.com/16d2d2e8407f593de5ce2cbe73f7e71351fc0f6d.png)
是不是使用$SPARK_HOME/sbin/start-all.sh启动spark集群,慢的那个worker节点是否按照slaves中配置的主机名启动(验证一下是不是按照ip启动,在默认8080端口可以看到),因为一方是主机名集合一方是ip地址集合结果造成字符串比较时找不到,本地化全部变成ANY,也就是随机获取计算节点那就意味着可能要将数据发送到计算节点上,会造成计算不均匀,不是本地化计算,基本上都没有在本机上节点运行,所以会产生大量IO,就会很慢
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。