如果深入思考spark的分布式集群工作过程,就会发现有一些问题是分布式多节点需要考虑解决的。如一些变量在集群节点之间的拷贝。如我们在应用程序中编写代码,实际运行时候是将相关的代码分发个各节点进行运行,在spark中application应用程序向spark集群提交请求,申请相关运算资源;spark master节点分配好相关节点运算资源之后,在work节点启动相关的excutor以task线程来处理application中的计算任务。在一般情况下excutor中task进程中运行时所涉及的变量是独立的互不干扰的,这样就需要每一个task通过网络拷贝application中定义的相关变量(如下图绿色所示意的过程)。
阅读更多