热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hive调优之优化hivesite.xml配置

为什么80%的码农都做不了架构师?***************hive多级目录作为输入-begin!hive.mapred.supports.s

为什么80%的码农都做不了架构师?>>>   hot3.png

***************hive多级目录作为输入-begin

!hive.mapred.supports.subdirectories=false。是否将多级子目录作为输入,默认false是只能当前目录的文件。推荐使用如下配置:

<property>

<name>hive.mapred.supports.subdirectoriesname>

<value>truevalue>

<description>

Whether the version of Hadoop which is running supports sub-directories for tables/partitions.

Many Hive optimizations can be applied if the Hadoop version supports sub-directories for

tables/partitions. It was added by MAPREDUCE-1501

description>

property>

&#xff01;mapreduce.input.fileinputformat.input.dir.recursive&#61;false。是否将多级子目录作为输入&#xff0c;默认false是只能

当前目录的文件。推荐使用如下配置&#xff1a;

<property>

<name>mapreduce.input.fileinputformat.input.dir.recursivename>

<value>truevalue>

<description>

Whether the version of Hadoop which is running supports sub-directories for tables/partitions.

Many Hive optimizations can be applied if the Hadoop version supports sub-directories for

tables/partitions. It was added by MAPREDUCE-1501

description>

property>

参考之前的博客&#xff1a;Hive和MapReduce将多级子目录作为输入

***************hive多级目录作为输入-end

***************hive优化之打开本地模式-begin

hive本地模式&#xff0c;当job数据量较小时&#xff0c;本地模式运行速度将更快。

&#xff01;hive.exec.mode.local.auto&#61;false。是否使用本地模式&#xff0c;推荐打开此功能&#xff0c;所以推荐使用如下配置

<property>

<name>hive.exec.mode.local.autoname>

<value>truevalue>

<description>Let Hive determine whether to run in local mode automaticallydescription>

property>

&#xff01;hive.exec.mode.local.auto.inputbytes.max&#61;134217728&#xff0c;推荐使用默认配置。hive本地模式的job输入数据大小

&#xff01;hive.exec.mode.local.auto.tasks.max&#61;4&#xff0c;推荐使用默认配置。hive本地模式的map个数

参考&#xff1a;hive使用本地模式

***************hive优化之打开本地模式-end

***************hive优化之打开并发执行-begin

在同一个sql中的不同的job是否可以同时运行

&#xff01;hive.exec.parallel&#61;false&#xff0c;默认是不能并发执行的&#xff0c;推荐使用如下配置

<property>

<name>hive.exec.parallelname>

<value>truevalue>

property>

参考&#xff1a;hive.exec.parallel参数

&#xff01;hive.exec.parallel.thread.number&#61;8&#xff0c;推荐使用默认配置&#xff0c;控制对于同一个sql来说同时可以运行的job的最大值&#xff0c;如果你的job更多&#xff0c;而资源也够&#xff0c;可以设置更大一点。

参考&#xff1a;参数hive.exec.parallel.thread.number说明

***************hive优化之打开并发执行-end

***************hive优化之调整limit限制-begin

&#xff01;hive.limit.optimize.enable&#61;false&#xff0c;推荐使用如下配置&#xff0c;是否打开hive limit优化

<property>

<name>hive.limit.optimize.enablename>

<value>truevalue>

property>

&#xff01;hive.limit.row.max.size&#61;100000&#xff0c;推荐使用默认配置&#xff0c;limit最大行数

&#xff01;hive.limit.optimize.limit.file&#61;10&#xff0c;推荐使用默认配置&#xff0c;limit最多限制文件数

***************hive优化之调整limit限制-end

***************hive优化之启用严格模式-begin

&#xff01;hive.mapred.mode&#61;nonstrict&#xff0c;推荐使用如下设置&#xff0c;注意如果表中一定有动态分区的查询&#xff0c;这里也可以使用非严格模式。严格模式只是防止数据量过大的查询。

<property>

<name>hive.mapred.modename>

<value>strictvalue>

property>

用严格模式可以禁止 3 种类型的查询&#xff1a;

&#xff08; 1 &#xff09;对于分区表&#xff0c;不加分区字段过滤条件&#xff0c;不能执行。

&#xff08; 2 &#xff09;对于 order by 语句&#xff0c;必须使用 limit 语句。

&#xff08; 3 &#xff09;限制笛卡尔积的查询&#xff08; join 的时候不使用 on &#xff0c;而使用 where 的&#xff09;。

***************hive优化之启用严格模式-end

&#xff01;mapred.job.reuse.jvm.num.tasks&#61;1&#xff0c;推荐使用如下配置&#xff0c;hive-site.xml找不到。表示一个JVM上最多可以顺序执行的task数目&#xff08;属于同一个Job&#xff09;&#xff0c;默认一个task启一个JVM

<property>

<name>mapred.job.reuse.jvm.num.tasksname>

<value>10value>

property>

参考&#xff1a;Hadoop的JVM重用

***************hive优化之推测执行-begin

hadoop的推测执行&#xff0c;但是有些时候如果推测执行没利用好&#xff0c;反而有可能造成相反的作用&#xff0c;具体参考&#xff1a;mapred.map.tasks.speculative.execution参数影响性能

&#xff01;mapred.map.tasks.speculative.execution&#61;true&#xff0c;推荐使用默认配置

&#xff01;mapred.reduce.tasks.speculative.execution&#61;true&#xff0c;推荐使用默认配置

***************hive优化之推测执行-end

&#xff01;hive.multigroupby.singlereducer&#61;true&#xff0c;推荐使用默认配置。在hive-site.xml中有这个属性的解释&#xff0c;翻译一下就是&#xff0c;是否将多group by的查询优化成单个M/R任务计划&#xff0c;如果多个group by查询具有相同的group by key&#xff0c;它将优化生成单个M/R任务。

在hive1.1.0版本中是这个属性名。但是在别的版本中有可能是下面这个属性名&#xff0c;其实它们的意义是一样的。

&#xff01;hive.multigroupby.singlemr&#61;false&#xff0c;推荐使用如下配置。将多个group by产出为一个单一map/reduce任务计划&#xff0c;当然约束前提是group by有相同的key。

<property>

<name>hive.multigroupby.singlemrname>

<value>truevalue>

property>

&#xff01;hive.optimize.multigroupby.common.distincts&#61;true&#xff0c;推荐使用默认配置。官方的英文也有点看不懂&#xff0c;大概意思就是当有相同的distinct列时&#xff0c;会进行对job plan进行优化。

&#xff01;hive.groupby.skewindata&#61;false&#xff0c;推荐使用如下配置。用于控制负载均衡的。当数据出现倾斜时&#xff0c;如果该变量设置为true&#xff0c;那么Hive会自动进行负载均衡。

<property>

<name>hive.groupby.skewindataname>

<value>truevalue>

property>

当为false时&#xff0c;能在聚合两个不同的distinct列&#xff0c;如果为true&#xff0c;则只能有一个distinct列

参考&#xff1a;Hive - hive.groupby.skewindata环境变量与负载均衡

***************hive优化之map输入合并-begin

&#xff01;mapred.max.split.size&#61;256000000&#xff0c;推荐是用默认配置&#xff0c;hive-site.xml找不到。每个Map最大输入大小&#xff0c;决定合并后的文件数&#xff0c;是否应该根据block大小调整&#xff1f;

&#xff01;mapred.min.split.size.per.node&#61;1&#xff0c;推荐使用如下配置&#xff0c;hive-site.xml找不到。一个节点上split的至少的大小 &#xff0c;决定了多个data node上的文件是否需要合并

<property>

<name>mapred.min.split.size.per.nodename>

<value>100000000value>

property>

&#xff01;mapred.min.split.size.per.rack&#61;1&#xff0c;推荐使用如下配置&#xff0c;hive-site.xml找不到。一个交换机下split的至少的大小&#xff0c;决定了多个交换机上的文件是否需要合并

<property>

<name>mapred.min.split.size.per.rackname>

<value>100000000value>

property>

&#xff01;hive.input.format&#61;org.apache.hadoop.hive.ql.io.CombineHiveInputFormat&#xff0c;推荐使用默认配置。执行Map前进行小文件合并

参考&#xff1a;Hive小文件合并

***************hive优化之map输入合并-end

***************hive优化之输出合并-begin

&#xff01;hive.merge.mapfiles&#61;true&#xff0c;推荐使用默认配置。在map-only job后合并文件。

&#xff01;hive.merge.mapredfiles&#61;false&#xff0c;推荐使用如下配置。在map-reduce job后合并文件。

<property>

<name>hive.merge.mapredfilesname>

<value>truevalue>

property>

&#xff01;hive.merge.size.per.task&#61;256000000&#xff0c;推荐使用默认配置。合并后每个文件的大小&#xff0c;是否应该根据block大小调整&#xff1f;

&#xff01;hive.merge.smallfiles.avgsize&#61;16000000&#xff0c;推荐使用默认配置。平均文件大小&#xff0c;是决定是否执行合并操作的阈值&#xff0c;是否应该根据block大小调整&#xff1f;

参考&#xff1a;Hive小文件合并    hive 小文件的合并 hive.merge.mapredfiles

***************hive优化之输出合并-end

***************hive优化之调整reduce数目-begin

&#xff01;hive.exec.reducers.bytes.per.reducer&#61;256000000&#xff0c;推荐使用如下配置。每个reduce任务处理的数据量。

<property>

<name>hive.exec.reducers.bytes.per.reducername>

<value>1073741824value>

property>

&#xff01;hive.exec.reducers.max&#61;1009&#xff0c;推荐使用默认值。每个任务最大的reduce数。

&#xff01;mapreduce.job.reduces&#61;1&#xff0c;推荐使用默认值。手动指定job的reduce数量。

注意&#xff0c;在hadoop2中&#xff0c;mapred.reduce.tasks改名为mapreduce.job.reduces了&#xff0c;但是这两个参数你都可以使用&#xff0c;只是第一个参数过时了。

***************hive优化之调整reduce数目-end

————————————————————————————————————————————————————————————

随着任务的不同&#xff0c;而应该使用set 重新设置的参数如下&#xff0c;这里属性设置的大小&#xff0c;应该和你的机器配置、数据有关&#xff0c;而不能一概而论。比如如果机器配置好一点&#xff0c;reduce处理的数据应该就可以稍微设置的大一点了。

***************hive优化之map输入合并-begin

&#xff01;mapred.max.split.size&#61;256000000。每个Map最大输入大小&#xff0c;如果map的处理逻辑不是很复杂&#xff0c;就可以设置的大一点。比如如果输入仅2个字段&#xff0c;而且处理逻辑稍微复杂一点&#xff0c;需要每行都处理逻辑&#xff0c;那么这个值就可以稍微设置小一点。如果不是很清楚&#xff0c;可使用默认值。即最大输入大小256M

&#xff01;mapred.min.split.size.per.node&#61;1。每个分片split的最小的数据大小&#xff0c;决定了小的split是否需要合并&#xff0c;默认是1&#xff0c;是不需要合并的&#xff0c;所以这里肯定要设置让它合并&#xff0c;可以根据机器配置&#xff0c;设置对应的大小。如果不是很清楚&#xff0c;可使用100000000。即分片大小不能小于100M

一个恰当的map并行度是大约每个节点10-100个map&#xff0c;且最好每个map的执行时间至少一分钟。

参考&#xff1a;Hive小文件合并 Hadoop MapReduce Job性能调优——修改Map和Reduce个数

***************hive优化之map输入合并-end

***************hive优化之输出合并-begin

&#xff01;hive.merge.size.per.task&#61;256000000&#xff0c;推荐使用默认配置。合并后每个文件的大小。如果不是很清楚&#xff0c;可使用默认值。256M一个文件的大小。

&#xff01;hive.merge.smallfiles.avgsize&#61;16000000&#xff0c;推荐使用默认配置。平均文件大小&#xff0c;是决定是否执行合并操作的阈值。如果不是很清楚&#xff0c;可使用默认值。

参考&#xff1a;Hive小文件合并    hive 小文件的合并 hive.merge.mapredfiles

***************hive优化之输出合并-end

***************hive优化之调整reduce数目-begin

&#xff01;hive.exec.reducers.bytes.per.reducer&#61;256000000&#xff0c;推荐使用如下配置。每个reduce任务处理的数据量。如果不是很清楚&#xff0c;可使用默认值。

&#xff01;mapreduce.job.reduces&#61;1&#xff0c;推荐使用默认值。手动指定job的reduce数量。如果不是很清楚&#xff0c;可使用默认值。

注意&#xff0c;在hadoop2中&#xff0c;mapred.reduce.tasks改名为mapreduce.job.reduces了&#xff0c;但是这两个参数你都可以使用&#xff0c;只是第一个参数过时了。

具体参考&#xff1a;Hadoop MapReduce Job性能调优——修改Map和Reduce个数

***************hive优化之调整reduce数目-end


转:https://my.oschina.net/cjun/blog/666532



推荐阅读
  • 本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ... [详细]
  • iOS超签签名服务器搭建及其优劣势
    本文介绍了搭建iOS超签签名服务器的原因和优势,包括不掉签、用户可以直接安装不需要信任、体验好等。同时也提到了超签的劣势,即一个证书只能安装100个,成本较高。文章还详细介绍了超签的实现原理,包括用户请求服务器安装mobileconfig文件、服务器调用苹果接口添加udid等步骤。最后,还提到了生成mobileconfig文件和导出AppleWorldwideDeveloperRelationsCertificationAuthority证书的方法。 ... [详细]
  • 【Java面试】简单说一下你对序列化和反序列化的理解
    Hi,大家好,我是Mic一个工作4年的粉丝,投了很多简历好不容易接到一个互联网公司的面试邀约。在面试第一轮就被干掉了,原因是对主流互联网技术理解太浅了。其中就有一个这样的问题:“简 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Linux如何安装Mongodb的详细步骤和注意事项
    本文介绍了Linux如何安装Mongodb的详细步骤和注意事项,同时介绍了Mongodb的特点和优势。Mongodb是一个开源的数据库,适用于各种规模的企业和各类应用程序。它具有灵活的数据模式和高性能的数据读写操作,能够提高企业的敏捷性和可扩展性。文章还提供了Mongodb的下载安装包地址。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • Hibernate延迟加载深入分析-集合属性的延迟加载策略
    本文深入分析了Hibernate延迟加载的机制,特别是集合属性的延迟加载策略。通过延迟加载,可以降低系统的内存开销,提高Hibernate的运行性能。对于集合属性,推荐使用延迟加载策略,即在系统需要使用集合属性时才从数据库装载关联的数据,避免一次加载所有集合属性导致性能下降。 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 在单位的一台4cpu的服务器上部署了esxserver,挂载了6个虚拟机,目前运行正常。在安装部署过程中,得到了cnvz.net论坛精华区 ... [详细]
  • ZooKeeper 学习
    前言相信大家对ZooKeeper应该不算陌生。但是你真的了解ZooKeeper是个什么东西吗?如果别人面试官让你给他讲讲ZooKeeper是个什么东西, ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringCloudRibbon部分源码相关的知识,希望对你有一定的参考价值。1:ribbon是提供通过servi ... [详细]
  • LVS-DR直接路由实现负载均衡示例
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
author-avatar
廊坊0316慢摇酒吧_196
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有