分享

关于hive-on-tez本地模式和hive-on-tez重要参数设置

helianthus 发表于 2015-12-6 21:15:41 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 24977
本帖最后由 helianthus 于 2015-12-6 22:29 编辑
问题导读:
1.tez local模式有什么好处?
2.本地模式和集群模式下,主要组件的运作过程有哪些区别?
3.hive-on-tez本地模式执行HQL,需要设置哪些参数?
4.hive-on-tez关键的内存参数设置有哪些?




================hive-on-tez local mode configuration===============
1.tez local mode 优势:
1)不用触发集群执行等操作,hadoop启动更快;
2)没有了分配资源、启动JVM等的代价,单元测试执行速度更快;
3)用户所有的代码执行都在一个JVM里面,很容易调试。

2.local mode VS. cluster
1)任务调度和container重用有所不同;
2)使用YARN的本地资源。local模式会在执行时,会在客户端加载必要的jars
3)本地模式在性能方面会有所提升(跳过了RPC调用,所以所有的执行都在一个JVM中进行)

3.hive-on-tez local mode需要设置的参数:
可以在hiveCLI中,通过执行set命令将如下参数及值进行设置,之后,再以hive-on-tez执行HQL就会是本地模式了:

set hive.user.install.directory=file:///tmp;
set fs.default.name<http://fs.default.name>=file:///;
set fs.defaultFS=file:///;
set tez.staging-dir=/tmp;
set tez.ignore.lib.uris=true;
set tez.runtime.optimize.local.fetch=true;
set tez.local.mode=true;
set hive.execution.engine=tez;

      
作为一名开发人员,比如为hive的扩展功能支持TEZ引擎,切换到local模式是很方便调试的。因为集群模式下,以hive-on-tez模式执行HQL,任务的切分以及数据的读取等等操作都是在集群中进行,我们无法DEBUG追踪。



================hive-on-tez RAM configuration===============

mapreduce任务之所以能够在hadoop集群上跑起来,主要依赖于:
1)集群上的可用资源:vCores和RAM;
2)应用程序需要的资源:每个task需要的vCores以及RAM
一台机器本身有多大的RAM,这个我们一般无法改动。但是可以改动vCres的个数以及可以为每个APPlication从新定义分配的RAM大小。对于hive-on-tez下执行HQL而言,比较关注的几个参数有:
(1)YARN scheduler:
yarn.scheduler.minimum-allocation-mb: 1536 -> 768yarn.nodemanager.resource.cpu-vcores: 8 -> 24
Advanced yarn-site:YARN Container Maximum vCores: 8 -> 24yarn.nodemanager.vmem-pmem-ratio //这个是物理内存和虚拟内存的比例,默认2.1
(2)tez general:
tez.am.resource.memory.mb: 1536 -> 768
tez.task.resource.memory.mb: 1536 -> 768
Custom tez-site:(change JVM memory options, very important!)
tez.am.java.opts: -Xmx1G -Xms1G  -> -Xmx560m -Xms560m
(3)hive general:
hive.tez.container.size: 1536 -> 768(change JVM memory options, very important!)
hive.tez.java.opts: -Xmx1G -Xms1G  -> -Xmx560m -Xms560m
    以上这些参数的设置对于hive-on-tez能否成功的执行是很重要的。如果设置不当,很可能出现OOM的情况(l类似。。。"Current usage: 1.5 GB of 1.5 GB physical memory used; 3.1GB of 7.5 GB virtual memory used. Killing container.")这时候,可能就要多多检查一下hive.tez.container.size和hive.tez.java.opts的值设置的是否有问题,当然还有其他几个与内存相关的参数。

已有(1)人评论

跳转到指定楼层
lmlm1234 发表于 2015-12-7 11:47:10
关于hive-on-tez本地模式和hive-on-tez重要参数设置
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条