`
乡里伢崽
  • 浏览: 109109 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

hive常用设置参数

    博客分类:
  • hive
 
阅读更多
hadoop 常用参数整理 (2013-01-16 15:06:22)转载▼
标签: 杂谈 分类: hadoop
hadoop 版本1.03

hadoop.tmp.dir  ---> mapred-site.xml
默认值: /tmp
说明: 尽量手动配置这个选项,否则的话都默认存在了里系统的默认临时文件/tmp里。并且手动配置的时候,如果服务器是多磁盘的,每个磁盘都设置一个临时文件目录,这样便于mapreduce或者hdfs等使用的时候提高磁盘IO效率

看默认配置,将许多参数的默认地址设为来该文件下面

fs.trash.interval  -->core-site.xml
默认值: 0
说明: 这个是开启hdfs文件删除自动转移到垃圾箱的选项,值为垃圾箱文件清除时间。一般开启这个会比较好,以防错误删除重要文件。单位是分钟。

io.sort.mb  -->mapred-site.xml
默认值:100
说明: 排序内存使用限制,这里设置200m。新版本看说明貌似改成了这个mapreduce.task.io.sort.mb。

io.sort.factor -->mapred-site.xml
默认值:10
说明:排序文件的时候一次同时最多可并流的个数,这里设置100。新版本为mapreduce.task.io.sort.factor。

dfs.blocksize  -->mapred-site.xml
默认值:67108864
说明: 这个就是hdfs里一个文件块的大小了,默认64M,这里设置134217728,即128M,太大的话会有较少map同时计算,太小的话也浪费可用map个数资源,而且文件太小namenode就浪费内存多。根据需要进行设置。
hive.metastore.execute.setugi:非安全模式,设置为true会令metastore以客户端的用户和组权限执行DFS操作,默认是false,这个属性需要服务端和客户端同时设置;
mapred-site.xml
mapred.compress.map.output
map的输出是否压缩
mapred.map.output.compression.codec
map的输出压缩方式
mapred.output.compress
reduce的输出是否压缩
mapred.output.compression.codec
reduce的输出压缩方式
set hive.exec.compress.output=true;控制是否将hive中最后的结果进行压缩的。如果将该参数设置为true的时候,文件类型一般会选择SequenceFile。
hive压缩 最终结果和中间结果  
hive>set mapred.output.compress=true;                                                
hive> set mapred.compress.map.output=true;      
set mapred.map.output.compression.type=block;               
hive> set hive.exec.compress.output=true;             
hive> set mapred.map.output.compression.codec=org.apache.hadoop.io.compress.BZip2Codec;

待确定
hive> set hive.exec.compress.intermediate=true;                                       
hive> set io.compression.codecs=org.apache.hadoop.io.compress.BZip2Codec;             
hive> SET io.seqfile.compression.type=BLOCK;     
因为SequenceFile的压缩可以按block的级别,压缩后也可以启用多个map来执行任务。
而当TextFile的时候则仅仅能按file来压缩,这样无论多大的文件也仅仅能采用一个map,效率差得不是一点半点。
io.compression.codecs 为整体的io方式而mapred.map.output.compression.codec为map的输出编码mapred.output.compress为mapreduce结束后的编码

3.hive压缩后的表,可以用使用sql+python调用,数据会自动解压。

说明:
最终的结果数据开启压缩:
<property>
  <name>hive.exec.compress.output</name>
  <value>true</value>
  <description> This controls whether the final outputs of a query (to a local/hdfs file or a hive table) is compressed. The compression codec and other options are determined from hadoop config variables mapred.output.compress* </description>
</property>

中间的结果数据是否压缩,当sql生成多个MR,最后mr输出不压缩,之前MR的结果数据压缩。
<property>
  <name>hive.exec.compress.intermediate</name>
  <value>true</value>
  <description> This controls whether intermediate files produced by hive between multiple map-reduce jobs are compressed. The compression codec and other options are determined from hadoop config variables mapred.output.compress* </description>
</property>
<property>
<name>hive.intermediate.compression.codec</name>
<value>org.apache.hadoop.io.compress.LzoCodec</value>
</property>
SET io.seqfile.compression.type=BLOCK;


控制每个任务合并小文件后的文件大小(默认256000000):hive.merge.size.per.task
告诉Hadoop什么样的文件属于小文件(默认16000000):hive.merge.smallfiles.avgsize
是否合并Map的输出文件(默认true):hive.merge.mapfiles
是否合并Reduce的输出文件(默认false):hive.merge.mapredfiles
对于只有map的压缩格式的输出的小文件不能合并 (因为reduce阶段会有汇总的过程)


hive 中 set mapred.reduce.tasks=3; 设置reduce数量,但设置map数量不生效。
可以在执行hive前,通过set mapred.map.tasks=24来设定
但由于使用hive,会操作多个input文件,所以hive默认会把map的任务数设置成输入的文件数目
即使你通过set设置了数目,也不起作用…


hive.exec.script.maxerrsize:一个map/reduce任务允许打印到标准错误里的最大字节数,为了防止脚本把分区日志填满,默认是100000;

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

hive.script.operator.id.env.var:在用户使用transform函数做自定义map/reduce时,存储唯一的脚本标识的环境变量的名字,默认HIVE_SCRIPT_OPERATOR_ID;

hive.exec.compress.output:控制hive的查询结果输出是否进行压缩,压缩方式在hadoop的mapred.output.compress中配置,默认不压缩false;

hive.exec.compress.intermediate:控制hive的查询中间结果是否进行压缩,同上条配置,默认不压缩false;

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

hvie.exec.parallel.thread.number:并行运算开启时,允许多少作业同时计算,默认是8;

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

hive.task.progress:控制hive是否在执行过程中周期性的更新任务进度计数器,开启这个配置可以帮助job tracker更好的监控任务的执行情况,但是会带来一定的性能损耗,当动态分区标志hive.exec.dynamic.partition开启时,本配置自动开启;

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

hive.exec.post.hooks:同上,执行后钩子,默认是空;

hive.exec.failure.hooks:同上,异常时钩子,在程序发生异常时执行,默认是空;

hive.mergejob.maponly:试图生成一个只有map的任务去做merge,前提是支持CombineHiveInputFormat,默认开启true;

hive.mapjoin.smalltable.filesize:输入表文件的mapjoin阈值,如果输入文件的大小小于该值,则试图将普通join转化为mapjoin,默认25MB;

hive.mapjoin.localtask.max.memory.usage:mapjoin本地任务执行时hash表容纳key/value的最大量,超过这个值的话本地任务会自动退出,默认是0.9;

hive.mapjoin.followby.gby.localtask.max.memory.usage:类似上面,只不过是如果mapjoin后有一个group by的话,该配置控制类似这样的query的本地内存容量上限,默认是0.55;

hive.mapjoin.check.memory.rows:在运算了多少行后执行内存使用量检查,默认100000;

hive.heartbeat.interval:发送心跳的时间间隔,在mapjoin和filter操作中使用,默认1000;

hive.auto.convert.join:根据输入文件的大小决定是否将普通join转换为mapjoin的一种优化,默认不开启false;

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

hive.script.serde:用户脚本转换输入到输出时的SerDe约束,默认是org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe;

hive.script.recordreader:从脚本读数据的时候的默认reader,默认是org.apache.hadoop.hive.ql.exec.TextRecordReader;

hive.script.recordwriter:写数据到脚本时的默认writer,默认org.apache.hadoop.hive.ql.exec.TextRecordWriter;

hive.input.format:输入格式,默认是org.apache.hadoop.hive.ql.io.CombineHiveInputFormat,如果出现问题,可以改用org.apache.hadoop.hive.ql.io.HiveInputFormat;

hive.udtf.auto.progress:UDTF执行时hive是否发送进度信息到TaskTracker,默认是false;

hive.mapred.reduce.tasks.speculative.execution:reduce任务推测执行是否开启,默认是true;

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

hive.enforce.bucketing:数据分桶是否被强制执行,默认false,如果开启,则写入table数据时会启动分桶,个人对分桶的理解可以参考这篇文章,写的较清楚,有示例,分桶在做全表查询和带有分区字段查询时感觉影响不大,主要作用在sampling;

hive.enforce.sorting:开启强制排序时,插数据到表中会进行强制排序,默认false;

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

hive.exec.dynamic.partition:在DML/DDL中是否支持动态分区,默认false;

hive.exec.dynamic.partition.mode:默认strict,在strict模式下,动态分区的使用必须在一个静态分区确认的情况下,其他分区可以是动态;

hive.exec.max.dynamic.partitions:动态分区的上限,默认1000;

hive.exec.max.dynamic.partitions.pernode:每个mapper/reducer节点可以创建的最大动态分区数,默认100;

hive.exec.max.created.files:一个mapreduce作业能创建的HDFS文件最大数,默认是100000;

hive.exec.default.partition.name:当动态分区启用时,如果数据列里包含null或者空字符串的话,数据会被插入到这个分区,默认名字是__HIVE_DEFAULT_PARTITION__;

hive.fetch.output.serde:FetchTask序列化fetch输出时需要的SerDe,默认是org.apache.hadoop.hive.serde2.DelimitedJSONSerDe;

hive.exec.mode.local.auto:是否由hive决定自动在local模式下运行,默认是false,关于满足什么条件开启localmode,可以参考这篇文章;
分享到:
评论

相关推荐

    常用设置参数解释

    HIVE常用设置参数解释

    Hive常用参数配置详细记录

    Hive常用参数配置详细记录,总结的知识希望能够帮到有需要的人。

    hive常用函数参数手册

    hive常用的函数参考手册,仅供参考,可能版本不一样,函数方法不一致,请以进官方文档为准,https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

    hive性能调优

    本文主要是从Hive参数配置及应用程序设计与开发的角度,总结几种常用的性能优化方法

    hive、oracle、phoenix常用函数对照表总结

    大数据hive sql 与 oracle sql 和 phoenix的 sql 函数 对照,不同数据仓库都有相同功能但是函数名不同、参数也不同使用方法也不同,顾总结在一起方便使用

    基于cloudera搭建hadoop集群

    4. hive 35 5. Oozie 35 八. 常用命令 37 1. 安全模式 37 2. 查看block大小 37 九. 其他 37 1. 修改修改centos bogon主机名 37 2. 安装ganglia 38 3. 安装redis 38 4. 安装VMware客户端 39 5. 60天使用到期. ...

    SparkSql技术

    4.2:常用操作 32 4.2.1 查看查询的schema 32 4.2.2 查看查询的整个运行计划 33 4.2.3 查看查询的Unresolved LogicalPlan 33 4.2.4 查看查询的analyzed LogicalPlan 33 4.2.5 查看优化后的LogicalPlan 33 4.2.6 查看...

    狙剑V2008-0218狙剑V2008-0218狙剑V2008-0218

    2、增加快捷菜单,可进行常用操作。 暂时锁定系统:锁定系统后,禁止狙剑以外的程序创建进程、创建文件、加载驱动、注入进程、写入操作表。 禁止关机重启:禁止关闭系统、重启系统。 3、注册表编辑器中增加了...

    PW2440嵌入式主板使用手册V1.2

    5.3 液晶屏参数修改 5.4 添加USB WIFI驱动 5.5 编译的各个功能选择 5.6 导出SDK 六 WinCE5.0 在PW2440上各个功能使用 6.1 MP4 播放器 6.2 USB 摄像头测试 6.3 Camera 摄像头测试 6.4 SD 卡 6.5 保存文件 6.5 USB ...

    TPC-H:benchmark sql database ( 大数据平台测评)

    标准中从4 个方面定义每个SELECT 语句,即商业问题、SELECT 的语法、参数和查询确认。这些SELECT 语句的复杂程度超过大多数实际的OLTP 应用,一个SELECT 执行时间少则几十秒,多则达15 小时以上,22 个查询语句执行...

    Linkis-其他

    5、统一上下文服务:统一用户和系统资源文件(JAR、ZIP、Properties等),用户、系统、计算引擎的参数和变量统一管理,一处设置,处处自动引用; 6、物料库:系统和用户级物料管理,可分享和流转,支持全生命周期...

    Sqoop同步数据命令

    Sqoop介绍 Sqoop是一个用来将Hadoop和关系型数据库中的数据相互转移的工具,可以使用Sqoop将数据从MySQL或Oracle等关系数据库管理系统(RDBMS)导入Hadoop分布式文件系统(HDFS),在Hadoop MapReduce...常用参数 -co

    DataX Web分布式数据同步工具-其他

    23、通过动态参数配置指定hive分区,也可以配合增量实现增量数据动态插入分区; 24、任务类型由原来DataX任务扩展到Shell任务、Python任务、PowerShell任务; 25、添加HBase数据源支持,JSON构建可通过HBase数据源...

Global site tag (gtag.js) - Google Analytics