厦门个人建网站,wordpress用户邮箱验证,微信小程序推荐,室内设计用什么软件比较好spark是master-worker结构的#xff0c;master负责资源调度#xff0c;类似RM#xff0c;worker掌握所在节点的信息#xff0c;类似于NM。
执行时候物理结构分为driver-executor#xff0c; driver负责执行mian方法#xff0c;将程序转为job#xff1b;负责在executor之…spark是master-worker结构的master负责资源调度类似RMworker掌握所在节点的信息类似于NM。
执行时候物理结构分为driver-executor driver负责执行mian方法将程序转为job负责在executor之间调度任务负责在UI上展示运行情况 executor是一个工作节点负责在spark作业中运行任务并返回任务信息给driver任务键互相独立通过自身的blockManager为用户应用程序中要求缓存的rdd提供内存式存储rdd存在executor内因此运行快。
分别从逻辑结构和物理结构上阐述spark中任务划分方式。 逻辑结构 job-stage-rdd 1个action算子划分为一个job例如count 1个宽依赖划分为一个stage例如group by 、join 向上合并1个stage的计算可能被分配到多个task上执行但是一个task只能计算一个stage的逻辑 1个算子生成一个rdd 1个stage可能有多个rdd组成具体看算子类型
物理结构master-worker-driver-executor-task task是spark的最小执行单元一个executor可能同时运行多个task
**
spark常见参数设置原则
** 1.核数设定 set spark.executor.cores3 cpu核数一般设置为2-4cores代表的是并行度一般起码要2以上以充分使用cpu资源的并行特性。
2.内存设定 set spark.executor.memory12G-20G 内存可根据集群资源情况设定设定原则是memory/cores4G如果遇到部分task spill情况可以适当调整比例值增加单核分配到的内存以避免spill
3.executor数量设定 set spark.executor.instancesxxx executor设置原则一般需要根据数据量来确定数量设置为总数据量/coresexecutors 300-500MB 一般来说可以将 spark.executor.instances 参数值设置为集群中 Worker 节点数量的 2 到 3 倍。 **coresexecutors 计算的是 Spark 应用程序可以同时运行的 最大 Task 数量** set spark.sql.shuffle.partitions100;设置的是shuffle阶段的并行度但是这个值一般不设定固定存在数据倾斜时候用以下参数更合适。
一般来说shuffle阶段会设置 set spark.sql.adaptive.shuffle.enabledtrue; set spark.sql.adaptive.shuffle.targetPostShuffleInputSize 10GB具体数值根据计算资源情况以及任务情况设定最大不能超过单个executor分配的内存容量 argetPostShuffleInputSize参数的作用: 指定了每个 Reducer 读取 Shuffle 输出的目标数据量。 Spark 会尽量将每个分区的输出数据量控制在这个目标值附近以避免数据倾斜和提高并行度。
对于资源密集型任务可以适当提高 spark.executor.instances 参数值。 资源密集型任务对 计算资源的利用率 较高通常需要多个 CPU 核、大量内存和高带宽网络。