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