摘要:
Storage负责管理Spark计算过程中产生的数据,包括Disk和Memory,其中持久化的动作都是由Storage模块完成的 Storage模块采用Master/Slave架构,Master负责整个App的Block元数据信息的管理和维护,Slave将Block更新状态上传到Master,并接收 阅读全文
摘要:
创建与分配Executor的方式根据各种资源调度方式的不同而有差异,但拿到Executor后每种资源调度方式下的Executor的运作都一样,并由Executor完成最终的计算 Task在Executor中执行时涉及到依赖环境的创建和分发、任务执行、任务结果的处理、Driver端的处理(书中有详细介 阅读全文
摘要:
部署方式有:Standalone(Spark的Deploy模块)、Mesos、YARN、EC2、Local SparkContext创建时,通过传入的Master URL不同,创建不同的SchedulerBackend和TaskScheduler,在spark.SparkContext#create 阅读全文
摘要:
Shuffle是性能调优的重点,Shuffle是为了汇聚有共同特征的一类数据到一个计算节点上进行计算。 Shuffle过程非常复杂:数据量大、将数据汇聚到正确的Partition和节点时产生多次磁盘交互、节省带宽而无可避免的压缩、网络传输所需的序列化 Shuffle需要持久化计算的中间结果,因为一旦 阅读全文
摘要:
多个Job如何分配计算资源: 调度模块分为:DAGScheduler和TaskScheduler 计算任务按DAG分阶段提交集群 用户只需要关心如何创建RDD来操作,无需关注底层的调度,除非要优化 DAGScheduler负责分析应用,建立DAG,划分Stage,Stage由并发Task(Task逻 阅读全文