Hive相关属性以及参数配置

Hive基本运行配置

  1. Hive安装解压安装即可
    说明:Hive实际上可理解为一个MapReduce的客户端,只需在一个节点上安装即可
  2. Hive运行环境配置
    只需配置hive-env.sh(初始文件为hive-env.sh.template)
    在文件中指定HADOOP_HOME以及HIVE_CONF_DIR(Hadoop的安装路径以及Hive配置文件夹)
    3)Hive中元数据存储数据库配置
    说明:Hive默认自带的元数据存储数据库为derby,不支持并发进行操作,将元数据存储数据库修改为MySQL。
  1. 安装MySQL
  2. 配置hive-site.xml(注该文件默认不存在,存在hive-default.xml)
    在hive-site.xml中写入相关配置信息(实际上采用JDBC将hive与MySQL数据库进行连接)
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> javax.jdo.option.ConnectionURL jdbc:mysql://node102:3306/metastore?createDatabaseIfNotExist=true javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver javax.jdo.option.ConnectionUserName root javax.jdo.option.ConnectionPassword root

4)查询信息显示配置(操作时显示当前所使用的数据库名以及查询的表头名)
<!—显示当前表头 —>

hive.cli.print.header
true

hive.cli.print.current.db true 5)hive表中的数据,存储在hdfs上的位置 默认值:/user/hive/warehouse hive.metastore.warehouse.dir /user/hive/warehouse 6)hive运行日志信息配置 1.将hive-log4j.properties.template 文件修改为hive-log4j.properties 2.编辑文件,指定hive.log.dir=/opt/modules/hive-1.2.2/logs 说明:hive采用log4j输出日志文件,该配置指定hive的日志文件输出位置。 Hive运行参数以及优化配置 1) 在hive客户端中set可以查看当前hive的所有配置信息 2) 修改hive运行参数的三种方式 1. 在用户自定义配置的文件hive-site.xml中进行修改(系统默认为hive-default.xml),需创建hive-site.xml覆盖系统默认 2. 启动hive时,添加-hiveconf param=value(param为相关属性名,如上文中提到的jdbc配置的相关属性名等,value则为想要配置的值),注:配置仅限当次启动有效 3. 在启动hive客户端后用 set param=value进行配置,注:配置仅限当次启动有效

说明:建议使用第三种,其次第二种,其次第一种,但是对于某些系统级别的配置(和系统启动相关,如log4j的配置),必须在启动前进行配置,则必须采用第一种或第二种。
3) hive常用运行参数配置

  1. 设置reduceTask进程开启数
    默认值为-1,此时hive会自动计算所需的reduceTask进程数
    Set mapreduce.job.reduces=-1

  2. 设置mapTask进程开启数量
    注:mapTask进程数量不可直接设置,由Mapreduce中InputFormat环节的切片机制依据hdfs块大小和相关参数共同决定。
    说明:设置如下参数可达到控制切片大小的目的,从而决定mapTask开启数量
    Set mapreduce.input.fileinputformat.split.maxsize=256000000
    Set mapreduce.input.fileinputformat.split.minsize=1
    Math.max(minSize,Math.min(maxSize,blockSize));//此公式决定切片大小,注意还有当文件大小小于1.1默认切片大小时,任然视为一个切片
    切片大小默认为块大小,若想调小切片大小,只需调小maxSize,使之小于块大小,若想调大切片大小,只需调大minSize,使之大于块大小。以此达到控制mapTask进程数。

  3. 压缩优化配置
    1> map输出阶段启动压缩
    ① 开启hive中间传输数据压缩
    set hive.exec.compress.intermediate=true;
    ② 开启map输出压缩
    set mapreduce.map.output.compress=true;
    ③ 设置map输出数据的压缩方式
    Set mapreduce.map.output.compress.codec= org.apache.hadoop.io.compress.SnappyCodec;//Snappy压缩方式需配置
    2> Reduce输出阶段启动压缩
    ① 开启hive最终输出数据启动压缩
    set hive.exec.compress.output=true;
    ② 开启mapreduce最终输出数据压缩
    set mapreduce.output.fileoutputformat.compress=true;
    ③ 设置mapreduce最终输出数据的压缩方式
    set mapreduce.output.fileoutputformat.compress.codec = org.apache.hadoop.io.compress.SnappyCodec;

  4. fetch抓取设置
    Fetch抓取是指,Hive中对某些情况的查询可以不必使用MapReduce计算。例如:SELECT * FROM employees;在这种情况下,Hive 可以简单地读取 employee 对应的存储目录下的文 件,然后输出查询结果到控制台。
    在 hive-default.xml.template 文件中 hive.fetch.task.conversion 默认是 more,老版本 hive 默认是 minimal,该属性修改为 more 以后,在全局查找、字段查找、limit 查找等都不走 mapreduce。
    set hive.fetch.task.conversion=none;

  5. 本地模式设置(local mr)
    set hive.exec.mode.local.auto=true;//此次设置只在当此hive启动有效
    可以在hive-site.xml中添加属性配置使hive根据处理的文件大小决定是否启动本地模式
    hive.exec.mode.local.auto=true; //开启本地 mr
    hive.exec.mode.local.auto.inputbytes.max= 134217728;//当输入数据量小于该值(128MB,默认值)时启动local mr
    hive.exec.mode.local.auto.input.files.max=4;//当输入文件数量小于该值时启动local mr

  6. 动态分区优化设置
    (1)开启动态分区功能(默认 true,开启)
    hive.exec.dynamic.partition=true
    (2) 设置为非严格模式(动态分区的模式,默认 strict,表示必须指定至少一个分区为静态分区,nonstrict 模式表示允许所有的分区字段都可以使用动态分区。)
    hive.exec.dynamic.partition.mode=nonstrict
    (3)在所有执行 MR 的节点上,最大一共可以创建多少个动态分区。
    hive.exec.max.dynamic.partitions=1000
    (4)在每个执行 MR 的节点上,最大可以创建多少个动态分区。该参数需要根据实际的数据来设定。比如:源数据中包含了一年的数据,即 day 字段有 365 个值,那么该参数就需要设置成大于 365,如果使用默认值 100,则会报错。
    hive.exec.max.dynamic.partitions.pernode=100
    (5)整个 MR Job 中,最大可以创建多少个 HDFS 文件。
    hive.exec.max.created.files=100000
    (6)当有空分区生成时,是否抛出异常。一般不需要设置。
    hive.error.on.empty.partition=false

  7. 严格模式设置
    Hive 提供了一个严格模式,可以防止用户执行那些可能意向不到的不好的影响的查询。
    set hive.mapred.mode=strict;(默认为nostrict)
    说明:
    1) 对于分区表,除非 where 语句中含有分区字段过滤条件来限制范围,否则不允许执行。
    2)对于使用了 order by 语句的查询,要求必须使用 limit 语句。(注意hive中limit的用法和MySQL有区别)
    3)限制笛卡尔积的查询。

  8. 设置JVM重用
    说明:JVM 重用可以使得 JVM 实例在同一个 job 中重新使用 N 次。(设置合理的JVM重用次数可以避免JVM启动带来的开销,从而达到优化的目的)
    Set mapreduce.job.jvm.numtasks=1;

  9. 推测执行机制
    方式一:
    Set mapreduce.map.speculative=true;
    Set mapreduce.reduce.speculative=true;
    方式二:对hive配置
    Set hive.mapred.reduce.tasks.speculative.execution=true;

猜你喜欢

转载自blog.csdn.net/weixin_43695091/article/details/88926060
今日推荐