spark中提交任务参数的详解及spark运算调优


任务中只有一个action算子操作,只会产生一个job,这一个job会根据rdd之间一系列的操作,首先会生成一个DAG有向无环图,然后根据我们在代码里面创建new SparkContext 这个操作里面会帮我们创建DAGScheduler和TaskScheduler
DAGScheduler根据宽依赖把DAG有向无环图进行stage换分,只有一个宽依赖,整个DAG被划分成2个stage
每一个stage中都有很多task,把这些可以并行运行的task封装在一个taskSet集合中
通过TaskScheduler把对应的taskSet集合依次提交给worker节点中的Executor进程中去运行

stage0中有100个task,这些task都需要运行在executor进程中,以线程的方式运行在excutor进程里面

--executor -memory 1g
当前这个参数便是每个executor分配的内存大小
这个参数大小决定了任务在运行的时候,操作数据的速度
内存肯定是越大越好
内存过小的话,在写入数据的时候会产生内存溢出或数据部分会被写入到磁盘中.降低效率


--total-executor-cores 2
决定了任务并行处理的粒度(有多少个CPU,就意味着同时最多可以跑多少的task)
指定整个任务需要的总的CPU核数,在同一时间一个cpu对应只能够处理一个task
在这里,我们设置了总的CPU核数是2,也就意味着针对于每一个stage来说,同时运行的task个数只能为2,在stage0中,由于有100个task,这里也就意味着想要处理完成整个stage0中所有的task,这个时候需要100/2=50个批次才能把所有的task运行完成

一般给定任务的CPU核数,最好保证1个cpu处理2-3个task就可以了

总结:增大以上2个参数都可以提高任务运行的效率,提升整体性能
当然你不能够随意增大,你要看看有没有任务在集群中运行,以及spark集群还剩的资源.
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值