Spark集群采用的是主/从结构,主是驱动器节点driver,其他是工作节点executor,之间通过集群管理器来连接。
驱动器在Spark应用有两个职责:
执行器进程两大作用:负责运行组成Spark应用的任务,并把结果返还驱动器进程;通过自身的块管理器(Block Manager)为用户程序中要求缓存的RDD提供内存存储,进行内存计算。
当调用行动操作,会向上回溯,访问父节点,父节点的父节点,然后执行转化操作。
Spark提供了两种方法来对操作的并行度进行调优,第一种方法是在数据混洗操作时,使用参数的方式为混洗后的RDD指定并行度,第二种方法时对于任务已有的RDD,可以进行重新分区来获取更多或更少的分区数。
当Spark需要通过网络传输数据,或将数据溢写到磁盘上,就需要数据序列化为二进制格式。序列化会在混洗操作时发生。
当数据混洗操作时,Spark会创建出一些中间缓存区来存储数据混洗的部分缓存数据。用户也可以申请内存空间。默认情况下60%内存空间给RDD,20%给数据混洗,20%给用户。
如果分区空间不够,旧分区会被删除或写入磁盘。
原文:https://www.cnblogs.com/chenshaowei/p/12499352.html