hive优化之并行执行任务
2017-09-27 13:16
405 查看
1、与Oracle并行技术一样,hive在执行mapreduce作业时也可以执行并行查询。针对于不同业务场景SQL语句的执行情况,有些场景下SQL的执行是需要分割成几段去执行的,而且期间并不全是存在依赖关系。默认情况下,hive只会一段一段的执行mapreduce任务。使用并行的好处在于可以让服务器可以同时去执行那些不想关的业务场景,比如:select deptno,count(1) from emp01 group by deptnounion allselect deptno ,count(1) from emp02 group by deptno;或者from emp_fullinsert into table emp01 partitioned(pt='01')select empno,ename,sal,comm,hiredate,deptnoinsert into table emp02 partitioned(pt='02')select empno,ename,sal,comm,hiredate,deptno;2、hive中控制并行执行的参数有如下几个:$ bin/hive -e set | grep parallhive.exec.parallel=falsehive.exec.parallel.thread.number=8hive.stats.map.parallelism=1其中:hive.exec.parallel=false、hive.exec.parallel.thread.number=8分别控制着hive并行执行的特性。hive.exec.parallel=false表示默认没有启用并行参数,可以将其设置为true,在执行作业前进行session级别设置;hive.exec.parallel.thread.number=8表示每个SQL执行并行的线程最大值,默认是8.例如:set hive.exec.parallel=true;set hive.exec.parallel.thread.number=8;select deptno,count(1) from emp group by deptnounion allselect deptno ,count(1) from emp group by deptno;上面这个SQL的执行既可以启动并行,既可以同时执行不相关任务,而不需要一步一步顺序执行。3、注意点:在hadoop上自行mapreduce任务数是有限制的,针对于集群资源充足的情况,并行自行可以很大程度提高性能,但如果集群资源本身就很紧张,那么并行并不能启动有效效果。一个可能的hive作业设置为:set mapred.max.split.size=100000000;
set mapred.min.split.size.per.node=100000000;
set mapred.min.split.size.per.rack=100000000;
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;set hive.exec.reducers.bytes.per.reducer=1000000000;set hive.exec.reducers.max=256;set hive.merge.mapfiles=true;set hive.merge.mapredfiles =ture;set hive.merge.size.per.task=256000000;set hive.merge.smallfiles.avgsize=16000000;set hive.exec.compress.intermediate=true;set mapred.map.output.compression.codec= org.apache.hadoop.io.compress.SnappyCodec;set hive.exec.compress.output=true;set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;set hive.exec.parallel=true;set hive.exec.parallel.thread.number=8;select deptno,count(1) from emp group by deptnounion allselect deptno ,count(1) from emp group by deptno;
set mapred.min.split.size.per.node=100000000;
set mapred.min.split.size.per.rack=100000000;
set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;set hive.exec.reducers.bytes.per.reducer=1000000000;set hive.exec.reducers.max=256;set hive.merge.mapfiles=true;set hive.merge.mapredfiles =ture;set hive.merge.size.per.task=256000000;set hive.merge.smallfiles.avgsize=16000000;set hive.exec.compress.intermediate=true;set mapred.map.output.compression.codec= org.apache.hadoop.io.compress.SnappyCodec;set hive.exec.compress.output=true;set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;set hive.exec.parallel=true;set hive.exec.parallel.thread.number=8;select deptno,count(1) from emp group by deptnounion allselect deptno ,count(1) from emp group by deptno;
相关文章推荐
- hive实现任务并行执行
- [Hive]Hive调优:让任务并行执行
- Hive优化--并行执行
- [Hive]Hive调优:让任务并行执行
- 【Hadoop】Hive优化之——控制hive任务中的map数和reduce数
- 使用FutureTask执行并行耗时任务
- hive优化之------控制hive任务中的map数和reduce数
- Hive语句执行优化-简化UDF执行过程
- Hive任务优化--控制hive任务中的map数和reduce数
- hive优化之------控制hive任务中的map数和reduce数
- hive优化【增加执行的map数,reduce数】
- hive并行执行job
- c#并行任务多种优化方案分享(异步委托)
- Hive任务优化(1)
- spring batch 并行执行任务
- Azkaban实战,Command类型单一job示例,任务中执行外部shell脚本,Command类型多job工作flow,HDFS操作任务,MapReduce任务,HIVE任务
- hive优化之--控制hive任务中的map数和reduce数<转>
- hadoop & hive任务优化之数据详情预知
- Java7任务并行执行神器:Fork&Join框架
- Java7提供的并行执行任务框架:Fork、Join框架