标签:资源 验证 cer yarn 参数设置 spl info size vco
1. 设置执行引擎
set hive.execution.engine=mr;
set hive.execution.engine=spark;
如果设置执行引擎为MR,那么调用Hadoop的maprecude来运行需要执行的job的程序;
如果设置执行引擎为spark,那么就会调用spark来执行任务,有条件的话就设置引擎为spark,因为实在是运行比Hadoop的MapReduce快了很多。
2.针对MR调优,可以设置参数(针对map端)
set map.red.max.split.size=1000000;
这个设置每个map处理数据的大小,如果现在有一个10M的数据,那么参数加上,运行可有有多少个map任务呢?
10 个 = 10M / 1000000
mapreduce.map.memory.mb=4096 // 设置申请map资源 内存 mapreduce.map.cpu.vcores=1 //设置申请cpu资源(useless)
第一个参数是设置Map申请的内存大小,单位是M,这是设置也就是4G;第二个参数设置是map的cpu资源,不过这个设置没有效果(在实验的过程中因为在yarn的配置中并没有做这个配置,所以导致失效,也就是不管设置为多少其占用都是1个;如果要观察到实验效果,那么可以考虑配置集群yarn相关配置);
那假设现在有144个map任务,集群资源为:3子节点*8G内存*8核cpu,启动Hive的MR任务,同时会有多少个任务在运行呢?
要回答这个问题,就需要梳理下MapReduce运行任务时,YARN资源分配的流程;
1)YARN启动MR任务时,会首先启动一个ApplicationMaster来管理当前任务,所以启动后,这个ApplicationMaster会占用一定资源,比如我这里占用资源2G内存,1核cpu,会被随机分配到一个节点上,比如我这里的slave1节点:
2) 接下来怎么判断可以同时运行多少个Map任务呢?
现在集群还剩资源= 22G内存+23核cpu ,如果map任务配置内存为4G,核心为1核那么,能同时运行:
5 = min(22G/4G = 5 , 23/ 1 = 23 )
也就是同时运行5个map任务,如下:
3)那这时集群还剩多少资源呢?
(3*8G内存 + 3*8核CPU )- (1核CPU,2G内存) - 5 * (4G内存,1核CPU) = (2G内存,18核CPU)
验证一下:
3 . 针对mr调优,可以设置参数(针对reduce端),这个暂时没有实验,暂时给出一个参考:
mapreduce.job.reduces=2(可手工设置) Hive.exec.reducers.max (hive设置的最大可用reducer) hive.exec.reducers.bytes.per.reducer (hive默认每1G文件分配一个reduce) 分配算法 num_reduce_tasks=min[maxReucers,input.size/perReducer]
转载:http://blog.csdn.NET/fansy1990
标签:资源 验证 cer yarn 参数设置 spl info size vco
原文地址:https://www.cnblogs.com/caiyongjiesmile/p/14280728.html