spark资源申请、与分区、task联系

粗浅理解,不完全准确:

  申请资源、计算节点数、虚拟cpu核数、并行度、并发度关系,分区、task数量:
 * 一个nodemanager 上可能有多个executor
 * spark-shell --num-executors 3 \
 * --driver-memory 5g --executor-cores 2 \   //每个executor的虚拟核数
 * --executor-memory 2g
 * 这种情况下最大并发度是是6=计算节点数*虚拟CPU核数
 * 如果实际资源满足,就是并行度,否则并发度
 * 一般task设置为最大并发度的2-3倍,避免资源浪费
 * 创建RDD的时候,填入分区数量;一般的转换算子并不会改变分区数量;
 * coalesce根据数据量缩减分区,用于大数据集过滤后,提高小数据集的执行效率
 * 当 spark 程序中,存在过多的小任务的时候,可以通过 coalesce 方法,收缩合并分区,减少分区的个数,减小任务调度成本
 * repartition一般用来扩大分区
 * partitionBy将数据按照指定Partitioner 重新进行分区。Spark 默认的分区器是HashPartitioner

RDD 任务划分

RDD 任务切分中间分为:Application、Job、Stage 和 Task

    • Application:初始化一个 SparkContext 即生成一个Application;
    • Job:一个Action 算子就会生成一个Job
    • Stage:Stage 等于宽依赖(ShuffleDependency)的个数加 1;
    • Task:一个 Stage 阶段中,最后一个RDD 的分区个数就是Task 的个数。注意:Application->Job->Stage->Task 每一层都是 1 n 的关系。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值