sparkstreaming个别task执行时间过长
1.单机差异排查
通过streaming的web可看到运行的每个批的详细信息,我们注意到在运行时间上的批次里,基本都是少部分任务时间很长,大多数task还是很快的。可以看到75%的task在3秒内执行完,但是Max最大的确实1.2min,首先猜想的是机器性能差异,但是经过排查集群机器性能并无区别,且每台机器上执行的task比较均衡,基本上排除了单机性能差异问题,且在耗时较长的批次中,可以发现耗时长的task每次回出现在不同的机器上,因此也从侧面排除了机器性能差异问题。
2.网络因素排查,
大部分处于RACK_LOCAL,NODE_LOCAL且集群内网千兆口,网络不应该成为瓶颈,排除数据量差异的原因以及GC时间长的原因
3.百度spark.streaming.kafka.consumer.poll.ms
大致意思是5000ms内未从kafka中获取到任何数据信息,接下来会进行重试,原因找到了,之前未获取到消息会一直阻塞到大约延迟40秒拿到消息运行成功,现在是5秒内拿不到消息就重试,不长时间等待。
终于解决了~