码迷,mamicode.com
首页 > 其他好文 > 详细

hive性能调优

时间:2021-01-15 12:15:21      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:资源   验证   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

 

hive性能调优

标签:资源   验证   cer   yarn   参数设置   spl   info   size   vco   

原文地址:https://www.cnblogs.com/caiyongjiesmile/p/14280728.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!