hive配置官网翻译2017版(更新中...)

hive.execution.engine
默认值:mr
添加时间:Hive 0.13.0 with HIVE-6103 and HIVE-6098

— 选择执行引擎。选项: mr (Map reduce, 默认值)、tez ( Hadoop 2 only)、or spark (Hive 1.1.0 版本及之后)。


mapred.reduce.tasks
默认值:-1
添加时间:Hive 0.1.0

— 每个job中reduce tasks 的默认个数。通常设置一个最优值接近可用主机的数量,忽略当mapred.job.tracker=local,hadoop平台设置默认值为1;然而Hive用-1作为默认值,通过设置-1为默认值,Hive会自动计算出reducers的数量。


hive.exec.reducers.bytes.per.reducer
默认值: 1,000,000,000 (Hive 0.14.0之前)、 256 MB (256,000,000) 在 Hive 0.14.0 之后
添加时间: Hive 0.2.0;default changed in 0.14.0 with HIVE-7158 (and HIVE-7917)

— 每个reduceer的大小。在Hive0.14.0之前是默认1G,即,如果输入大小为10GB,则将用到10个reducers;在Hive0.14.0之后默认256MB,即,如果输入大小为1GB,则将产生4个reducers。


hive.exec.reducers.max
默认值:999 ( Hive 0.14.0之前)、1009 (Hive 0.14.0之后)
添加时间:Hive 0.2.0; default changed in 0.14.0 with HIVE-7158 (and HIVE-7917)

— 可被用到的最大reducers的个数。如果配置文件中指定mapred.reduce.tasks 为负数,则当自动决定reducers的个数时,Hive将使用此值作为reducers的最大限定值。


hive.jar.path
默认值: 空
添加时间:Hive 0.2.0 or earlier

— 当在一个独立的jvm中提交jobs时hive_cli.jar的位置。


hive.aux.jars.path
默认值:空
添加时间:Hive 0.2.0 or earlier

— 引入jars包的位置(包含用户自定义函数UDFs和串行器的执行)。
注意:1,目前只支持file://也就是本地文件,暂不支持HDFS,也不支持文件夹。2,多个文件使用逗号分隔。3,不能换行。

<property>  
     <name>hive.aux.jars.path</name>  
     <value>file:///jarpath/all_new1.jar,file:///jarpath/all_new2.jar</value>  
</property> 

hive.exec.scratchdir
默认值:
/tmp/{user.name} in Hive 0.2.0 through 0.8.0;
/tmp/hive-${user.name} in Hive 0.8.1 through 0.14.0;
/tmp/hive in Hive 0.14.0 and later;
添加时间:Hive 0.2.0; default changed in 0.8.1 and in 0.14.0 with HIVE-6847 and HIVE-8143

— HDFS路径,用于存储不同 map/reduce 阶段的执行计划和这些阶段的中间输出结果。


hive.scratch.dir.permission
默认值:700
添加时间:Hive 0.12.0 with HIVE-4487

— 创建的临时目录的权限,默认是700;


hive.metastore.warehouse.dir
默认值: /user/hive/warehouse
添加时间: Hive 0.2.0

— 默认数据仓库的位置,通常为 HDFS 可写的路径。


hive.hadoop.supports.splittable.combineinputformat
默认值:false
添加时间: Hive 0.6.0

— 是否合并小的输入文件,从而减小mappers的个数。


hive.map.aggr
默认值:true in Hive 0.3 and later; false in Hive 0.2
添加时间: Hive 0.2.0

— 在Hive的group by 查询的时候是否开启map-side聚合


hive.groupby.skewindata
默认值: false
添加时间:Hive 0.3.0

— 决定 group by 操作是否支持倾斜的数据。


hive.groupby.mapaggr.checkinterval
默认值: 100000
添加时间:Hive 0.3.0

— 这个是group的键对应的记录条数,超过这个值则会进行优化。


hive.mapred.local.mem
默认值: 0
添加时间:Hive 0.3.0

— mappers/reducers 在本地模式的最大内存量,以字节为单位,0为不限制。


hive.map.aggr.hash.force.flush.memory.threshold
默认值:0.9
添加时间:Hive 0.7.0 with HIVE-1830

— map端聚合时hash表的最大可用内存,如果超过该值则进行flush数据,默认是0.9;


hive.map.aggr.hash.percentmemory
默认值:0.5
添加时间:Hive 0.2.0

— map端聚合时hash表所占用的内存比例,默认0.5,这个在map端聚合开启后使用


hive.map.aggr.hash.min.reduction
默认值:0.5
添加时间: Hive 0.4.0

— 如果哈希表大小和输入行之间的比率大于这个数字,哈希聚合将关闭。设置为1以确保哈希聚合是永远不会关闭。


hive.optimize.groupby
默认值:true
添加时间:Hive 0.5.0

— 在做分区和表查询时是否做分桶group by,默认开启true;


hive.multigroupby.singlereducer
默认值: true
添加时间: Hive 0.9.0 with HIVE-2621

— 将多个group by产出为一个单一map/reduce任务计划,当然约束前提是group by有相同的key。


hive.optimize.index.filter
默认值:false
添加时间: Hive 0.8.0 with HIVE-1644

— 自动使用索引,默认不开启false;(性能优化)


hive.join.emit.interval
默认值:1000
添加时间: Hive 0.2.0

— 在发出join结果之前对join最右操作缓存多少行的设定,默认1000;


hive.join.cache.size
默认值:25000
添加时间: Hive 0.5.0

— 在做表join时缓存在内存中的行数,默认25000.


hive.mapjoin.bucket.cache.size
默认值: 100
添加时间:Hive 0.5.0 (replaced by hive.smbjoin.cache.rows in Hive 0.12.0)

— mapjoin时内存cache的每个key要存储多少个value,默认100


hive.smbjoin.cache.rows
默认值:10000
添加时间:Hive 0.12.0 (replaces hive.mapjoin.bucket.cache.size)

— 每个排序合并桶联接表,多少具有相同键值的行数应缓存在内存中。


hive.optimize.skewjoin
默认值:false
添加时间: Hive 0.6.0

— 是否开启数据倾斜的join优化。默认false;


hive.skewjoin.key
默认值:100000
添加时间:Hive 0.6.0

— 判断数据倾斜的阈值,如果在join中发现同样的key超过该值则认为是该key是倾斜的join key,默认是100000;


hive.skewjoin.mapjoin.map.tasks
默认值:10000
添加时间:Hive 0.6.0

— 在数据倾斜join时map join的map数控制,默认是10000;


hive.skewjoin.mapjoin.min.split
默认值:33554432
添加时间:Hive 0.6.0

— 数据倾斜join时map join的map任务的最小split大小,默认是33554432,该参数要结合hive.skewjoin.mapjoin.map.tasks参数共同使用来进行细粒度的控制;


hive.mapred.mode
默认值:
Hive 0.x: nonstrict
Hive 1.x: nonstrict
Hive 2.x: strict (HIVE-12413)
添加时间: Hive 0.3.0

— hive操作执行时的模式,默认是nonstrict非严格模式,如果是strict模式,很多有风险的查询会被禁止运行,比如笛卡尔积的join和动态分区;全表的扫描被阻止;order by 需要加一个limit条件。


hive.exec.script.maxerrsize
默认值:100000(100K)
添加时间:Hive 0.2.0

— 一个map/reduce任务允许打印到标准错误里的最大字节数,为了防止脚本把分区日志填满,默认是100000(一般不用修改);


hive.script.auto.progress
默认值: false
添加时间: Hive 0.4.0

— hive的transform/map/reduce脚本执行时是否自动的将进度信息发送给TaskTracker来避免任务没有响应被误杀,本来是当脚本输出到标准错误时,发送进度信息,但是开启该项后,输出到标准错误也不会导致信息发送,因此有可能会造成脚本有死循环产生,但是TaskTracker却没有检查到从而一直循环下去;


hive.exec.script.allow.partial.consumption
默认值:false
添加时间: Hive 0.5.0

— hive是否允许脚本不从标准输入中读取任何内容就成功退出,默认关闭false;


hive.exec.compress.output
默认值:false
添加时间:Hive 0.2.0

— 控制hive的查询结果输出是否进行压缩,压缩方式在hadoop的mapred.output.compress中配置,默认不压缩false;
— set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
— set mapred.output.compression.type=BLOCK;


hive.exec.compress.intermediate
默认值:false
添加时间: Hive 0.2.0

— 控制hive的查询中间结果是否进行压缩,同上条配置,默认不压缩false;
— set mapred.map.output.compression.codec=org.apache.hadoop.io.compress.SnappyCodec(官网)
— set hive.intermediate.compression.codec=org.apache.hadoop.io.compress.SnappyCodec;(常用)
— set hive.intermediate.compression.type=BLOCK;


hive.exec.parallel
默认值: false
添加时间:Hive 0.5.0

— hive的执行job是否并行执行,默认不开启false,在很多操作如join时,子查询之间并无关联可独立运行,这种情况下开启并行运算可以大大加速;


hive.exec.parallel.thread.number
默认值:8
添加时间: Hive 0.6.0

— 并行运算开启时,允许多少作业同时计算,默认是8;


hive.exec.rowoffset
默认值: false
添加时间:Hive 0.8.0

— 是否提供行偏移量的虚拟列,默认是false不提供,Hive有两个虚拟列:一个是INPUT__FILE__NAME,表示输入文件的路径,另外一个是BLOCK__OFFSET__INSIDE__FILE,表示记录在文件中的块偏移量,这对排查出现不符合预期或者null结果的查询是很有帮助的;


hive.exec.pre.hooks
默认值: (empty)
添加时间: Hive 0.4.0

— 执行前置条件,一个用逗号分隔开的实现了org.apache.hadoop.hive.ql.hooks.ExecuteWithHookContext接口的java class列表,配置了该配置后,每个hive任务执行前都要执行这个执行前钩子,默认是空;


hive.exec.post.hooks
默认值: (empty)
添加时间: Hive 0.5.0

— 同上,执行后钩子,默认是空;


hive.exec.failure.hooks
默认值: (empty)
添加时间: Hive 0.8.0

— 同上,异常时钩子,在程序发生异常时执行,默认是空;


hive.merge.mapfiles
默认值:true
添加时间:Hive 0.4.0

— 在只有map的作业结束时合并小文件,默认开启true;


hive.merge.mapredfiles
默认值:false
添加时间:Hive 0.4.0

— 在一个map/reduce作业结束后合并小文件,默认不开启false;


hive.merge.size.per.task
默认值:256000000
添加时间:Hive 0.4.0

— 作业结束时合并文件的大小,默认256MB;


hive.merge.smallfiles.avgsize
默认值:16000000
添加时间:Hive 0.5.0

— 在作业输出文件小于该值时,起一个额外的map/reduce作业将小文件合并为大文件,小文件的基本阈值,设置大点可以减少小文件个数,需要hive.merge.mapfiles和hive.merge.mapredfiles为true,默认值是16MB;

  • 【拓展】
    • 通过以下方法来在map执行前合并小文件,减少map数:
    • 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;
    • 大概解释一下,100000000表示100M,
    • set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;这个参数表示执行前进行小文件合并。
    • 前面三个参数确定合并文件块的大小,大于文件块大小128m的,按照128m来分隔,小于128m,大于100m的,按照100m来分隔,把那些小于100m的(包括小文件和分隔大文件剩下的),进行合并。

hive.auto.convert.join
默认值:false in 0.7.0 to 0.10.0;true in 0.11.0 and later (HIVE-3297)
添加时间: 0.7.0 with HIVE-1642

— 是否根据输入小表的大小,自动将 Reduce 端的 Common Join 转化为 Map Join,从而加快大表关联小表的 Join 速度。 (提醒:在hive-default.xml.template 中错误的给出了默认为false在Hive 0.11.0 到 0.13.1.的版本中)


hive.auto.convert.join.noconditionaltask
默认值:true
添加时间:0.11.0 with HIVE-3784 (default changed to true with HIVE-4146)

— 是否将多个mapjoin合并为一个。如果多个mapjoin转换为1个,要求是所有小表的文件大小总和小于hive.auto.convert.join.noconditionaltask.size 设置的值(默认是10MB)


hive.auto.convert.join.noconditionaltask.size
默认值:10000000
添加时间:0.11.0 with HIVE-3784

— 多个mapjoin转换为1个时,所有小表的文件大小总和的最大值。默认是10MB.


hive.udtf.auto.progress
默认值:false
添加时间:Hive 0.5.0

— UDTF执行时hive是否发送进度信息到TaskTracker,默认是false;用户应该谨慎,因为这可能阻止TaskTracker杀死任务,从而无限循环。


hive.mapred.reduce.tasks.speculative.execution
默认值:true
添加时间:Hive 0.5.0

— reduce任务推测执行是否开启,默认是true;

  • 【拓展】
    mapred.map.tasks.speculative.execution=true
    mapred.reduce.tasks.speculative.execution=true
    • 这两个是推测执行的配置项,它们默认值是true
    • 所谓的推测执行,就是当所有task都开始运行之后,Job Tracker会统计所有任务的平均进度,如果某个task所在的task node机器配置比较低或者CPU load很高(原因很多),导致任务执行比总体任务的平均执行要慢,此时Job Tracker会启动一个新的任务(duplicate task),然后原有任务和新任务哪个先执行完就把另外一个kill掉,这也是我们经常在Job Tracker页面看到任务执行成功,但是总有些任务被kill,就是这个原因。
    • 有以下几种情况最好是将那个参数设为false:
      1.当执行的任务相比集群其他任务执行时间非常长,占用的slot数很多。
      这种情况下会推断为任务执行的较慢,会启动更多的task,而slot资源本身就非常的紧张,又翻倍往上长,集群上的其他任务就根本抢不到slot了,对集群是危害很大的事情。
      2.当任务是操作redis,hbase这种中间存储层的时候。
      像对这些中间存储层进行读写操作的时候,它们本身就承担着压力,推断执行一开,我勒个去了,压力就要翻倍,这对于性能是一件非常不好的事情。

hive.exec.counters.pull.interval
默认值:1000
添加时间:Hive 0.6.0

— 运行中job轮询JobTracker的时间间隔,设置小会影响JobTracker的load,设置大可能看不出运行任务的信息,要去平衡,默认是1000;


hive.enforce.bucketing
默认值:
Hive 0.x: false
Hive 1.x: false
Hive 2.x: removed, which effectively makes it always true (HIVE-12331)【被移除,总true】
添加时间:Hive 0.6.0

— 是否开启强制分桶。如果为true,则当insert into 表的时候,会强制分桶。


hive.enforce.sorting
默认值:
Hive 0.x: false
Hive 1.x: false
Hive 2.x: removed, which effectively makes it always true (HIVE-12331)【被移除,总true】
添加时间: Hive 0.6.0

— 开启强制排序时,插数据到表中会进行强制排序;


hive.optimize.bucketingsorting
默认值:true
添加时间:Hive 0.11.0 with HIVE-4240

— 如果 hive.enforce.bucketing 或者 hive.enforce.sorting 为 true, 不会为强制分桶、排序而创建一个 reducer去查询表单。(在 Hive 2.0.0 and later, 这个参数不再依赖于 hive.enforce.bucketing 或者hive.enforce.sorting.)


hive.optimize.reducededuplication
默认值:true
添加时间:Hive 0.6.0

— 是否优化 reduce 冗余。如果数据已经根据相同的key做好聚合,那么去除掉多余的map/reduce作业,此配置是文档的推荐配置,建议打开,默认是true;


hive.optimize.reducededuplication.min.reducer

Default Value: 4
Added In: Hive 0.11.0 with HIVE-2340

Reduce deduplication merges two RSs (reduce sink operators) by moving key/parts/reducer-num of the child RS to parent RS. That means if reducer-num of the child RS is fixed (order by or forced bucketing) and small, it can make very slow, single MR. The optimization will be disabled if number of reducers is less than specified value.

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值