spark streaming 写hdfs问题

xiaoxiao2021-02-28  96

spark streaming 里面在做 foreach 操作时要注意数据与节点与进程「jvm」之间的关系;「这一点往往大家比较容易混淆」

我总结了一下,供大家参考

dstream.foreachRDD { rdd =>      do something.....// 在driver内执行      rdd.foreach { recordsinworker =>          do something // 在worker上执行 「作用域是一个node」                }     rdd.foreachPartition{ recordsintask =>          do someting // 在task上执行 「作用域是一个进程一个jvm」               }

}

所以如果你的spark streaming code 在 dstream.foreachrdd 里面直接处理业务数据就是把所有的数据都拉到driver端进行处理,

1:dirver的生命周期是伴随程序的,也就是说它会固定在某个节点运行

2:   hdfs client 读写优先local

这样就会导致数据在当前节点肯定会有一份,从而导致数据分散不开。

转载请注明原文地址: https://www.6miu.com/read-43391.html

最新回复(0)