Hive配置文件hive-site.xml中参数说明和用法
参数说明
参数名称 | 默认值 | 用法 |
---|---|---|
hive.metastore.uris | - | Hive元数据存储的URI。 |
hive.metastore.client.socket.timeout | 600 | Hive元数据客户端套接字超时时间。 |
hive.metastore.warehouse.dir | /user/hive/warehouse | Hive数据仓库目录。 |
hive.warehouse.subdir.inherit.perms | true | 子目录是否继承权限。 |
hive.auto.convert.join | true | 自动转换连接类型的Join操作。 |
hive.auto.convert.join.noconditionaltask.size | 10000000 | 自动转换连接类型的Join操作时条件不满足的最大数据量。 |
hive.optimize.bucketmapjoin.sortedmerge | false | 是否优化Bucket Map Join的Sorted Merge。 |
hive.smbjoin.cache.rows | 10000 | SMB Join操作缓存的行数。 |
hive.server2.logging.operation.enabled | false | 是否启用Hive Server2日志记录操作。 |
hive.server2.logging.operation.log.location | ${system:java.io.tmpdir}/ ${system:user.name} /operation_logs | Hive Server2操作日志的存储位置。 |
mapred.reduce.tasks | - | MapReduce作业的Reduce任务数。 |
hive.exec.reducers.bytes.per.reducer | 67108864 | 每个Reduce任务的数据量。 |
hive.exec.copyfile.maxsize | 33554432 | 最大允许复制文件的大小。 |
hive.exec.reducers.max | -1 | 同时运行的最大Reduce任务数。 |
hive.vectorized.groupby.checkinterval | 100000 | Vectorized Group By操作的检查间隔。 |
hive.vectorized.groupby.flush.percent | 0.1 | Vectorized Group By操作的Flush比例。 |
hive.compute.query.using.stats | true | 是否使用统计信息来优化查询计划。 |
hive.vectorized.execution.enabled | false | 是否启用向量化执行引擎。 |
hive.vectorized.execution.reduce.enabled | false | 是否在Reduce阶段启用向量化执行。 |
hive.vectorized.use.vectorized.input.format | false | 是否使用向量化输入格式。 |
hive.vectorized.use.checked.expressions | false | 是否使用检查表达式的向量化执行。 |
hive.vectorized.use.vector.serde.deserialize | false | 是否使用向量化序列化和反序列化。 |
hive.vectorized.adaptor.usage.mode | off | 向量化适配器的使用模式。 |
hive.vectorized.input.format.excludes | - | 排除的向量化输入格式列表。 |
hive.merge.mapfiles | true | 是否合并Map输出的小文件。 |
hive.merge.mapredfiles | false | 是否合并MapReduce输出的小文件。 |
hive.cbo.enable | false | 是否启用CBO优化。 |
hive.fetch.task.conversion | none | Fetch任务转换级别。 |
hive.fetch.task.conversion.threshold | -1 | 触发Fetch任务转换的数据量阈值。 |
hive.limit.pushdown.memory.usage | 0.1 | Limit操作的内存使用百分比。 |
hive.merge.sparkfiles | false | 是否合并Spark任务输出的小文件。 |
hive.merge.smallfiles.avgsize | -1 | 合并小文件时的平均大小。 |
hive.merge.size.per.task | -1 | 每个任务合并的数据量。 |
hive.optimize.reducededuplication | true | 是否启用重复消除优化。 |
hive.optimize.reducededuplication.min.reducer | 4 | 最小Reduce任务数以启用重复消除优化。 |
hive.map.aggr | false | 是否启用Map端聚合。 |
hive.map.aggr.hash.percentmemory | 0.5 | Map端聚合的哈希表内存比例。 |
hive.optimize.sort.dynamic.partition | false | 是否优化动态分区排序。 |
hive.execution.engine | mr | Hive执行引擎类型。 |
spark.executor.memory | 1g | Spark Executor的内存大小。 |
spark.driver.memory | 1g | Spark Driver的内存大小。 |
spark.executor.cores | 1 | 每个Spark Executor的核心数。 |
spark.yarn.driver.memoryOverhead | 384 | Spark Driver的内存Overhead。 |
spark.yarn.executor.memoryOverhead | 384 | Spark Executor的内存Overhead。 |
spark.dynamicAllocation.enabled | false | 是否启用动态资源分配。 |
spark.dynamicAllocation.initialExecutors | -1 | 动态资源分配的初始Executor数量。 |
spark.dynamicAllocation.minExecutors | -1 | 动态资源分配的最小Executor数量。 |
spark.dynamicAllocation.maxExecutors | -1 | 动态资源分配的最大Executor数量。 |
hive.metastore.execute.setugi | false | 是否在Hive元数据存储中执行setugi操作。 |
hive.support.concurrency | true | 是否支持并发操作。 |
hive.zookeeper.quorum | - | ZooKeeper服务器列表。 |
hive.zookeeper.client.port | - | ZooKeeper客户端端口号。 |
hive.zookeeper.namespace | default | Hive使用的ZooKeeper命名空间。 |
hive.cluster.delegation.token.store.class | org.apache.hadoop.hive .thrift.MemoryTokenStore | 集群委派令牌存储类。 |
hive.server2.enable.doAs | false | 是否启用Hive Server2用户代理模式。 |
hive.metastore.sasl.enabled | false | 是否启用Hive元数据存储的SASL认证。 |
hive.server2.authentication | NONE | Hive Server2的认证方式。 |
hive.metastore.kerberos.principal | - | Hive元数据存储的Kerberos主体名称。 |
hive.server2.authentication.kerberos.principal | - | Hive Server2的Kerberos主体名称。 |
spark.shuffle.service.enabled | true | 是否启用Spark Shuffle服务。 |
hive.strict.checks.orderby.no.limit | true | 是否在没有Limit操作的OrderBy语句中执行严格检查。 |
hive.strict.checks.no.partition.filter | true | 是否在没有分区过滤条件的查询中执行严格检查。 |
hive.strict.checks.type.safety | true | 是否执行严格的类型安全性检查。 |
hive.strict.checks.cartesian.product | false | 是否执行严格的笛卡尔积检查。 |
hive.strict.checks.bucketing | true | 是否执行严格的桶排序检查。 |
参数示例
<configuration>
<!-- Hive元数据存储的URI -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://myhost:9083</value>
</property>
<!-- Hive元数据客户端套接字超时时间(以毫秒为单位) -->
<property>
<name>hive.metastore.client.socket.timeout</name>
<value>300</value>
</property>
<!-- Hive数据仓库目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<!-- 子目录是否继承权限 -->
<property>
<name>hive.warehouse.subdir.inherit.perms</name>
<value>true</value>
</property>
<!-- 自动转换连接类型的Join操作 -->
<property>
<name>hive.auto.convert.join</name>
<value>true</value>
</property>
<!-- 自动转换连接类型的Join操作时条件不满足的最大数据量(以字节为单位) -->
<property>
<name>hive.auto.convert.join.noconditionaltask.size</name>
<value>20971520</value>
</property>
<!-- 是否优化Bucket Map Join的Sorted Merge -->
<property>
<name>hive.optimize.bucketmapjoin.sortedmerge</name>
<value>false</value>
</property>
<!-- SMB Join操作缓存的行数 -->
<property>
<name>hive.smbjoin.cache.rows</name>
<value>10000</value>
</property>
<!-- 是否启用Hive Server2日志记录操作 -->
<property>
<name>hive.server2.logging.operation.enabled</name>
<value>true</value>
</property>
<!-- Hive Server2操作日志的存储位置 -->
<property>
<name>hive.server2.logging.operation.log.location</name>
<value>/var/log/hive/operation_logs</value>
</property>
<!-- MapReduce作业的Reduce任务数 -->
<property>
<name>mapred.reduce.tasks</name>
<value>-1</value>
</property>
<!-- 每个Reduce任务的数据量(以字节为单位) -->
<property>
<name>hive.exec.reducers.bytes.per.reducer</name>
<value>67108864</value>
</property>
<!-- 最大允许复制文件的大小(以字节为单位) -->
<property>
<name>hive.exec.copyfile.maxsize</name>
<value>33554432</value>
</property>
<!-- 同时运行的最大Reduce任务数 -->
<property>
<name>hive.exec.reducers.max</name>
<value>1099</value>
</property>
<!-- Vectorized Group By操作的检查间隔 -->
<property>
<name>hive.vectorized.groupby.checkinterval</name>
<value>4096</value>
</property>
<!-- Vectorized Group By操作的Flush比例 -->
<property>
<name>hive.vectorized.groupby.flush.percent</name>
<value>0.1</value>
</property>
<!-- 是否使用统计信息来优化查询计划 -->
<property>
<name>hive.compute.query.using.stats</name>
<value>false</value>
</property>
<!-- 是否启用向量化执行引擎 -->
<property>
<name>hive.vectorized.execution.enabled</name>
<value>true</value>
</property>
<!-- 是否在Reduce阶段启用向量化执行 -->
<property>
<name>hive.vectorized.execution.reduce.enabled</name>
<value>true</value>
</property>
<!-- 是否使用向量化输入格式 -->
<property>
<name>hive.vectorized.use.vectorized.input.format</name>
<value>true</value>
</property>
<!-- 是否使用检查表达式的向量化执行 -->
<property>
<name>hive.vectorized.use.checked.expressions</name>
<value>true</value>
</property>
<!-- 是否使用向量化序列化和反序列化 -->
<property>
<name>hive.vectorized.use.vector.serde.deserialize</name>
<value>false</value>
</property>
<!-- 向量化适配器的使用模式 -->
<property>
<name>hive.vectorized.adaptor.usage.mode</name>
<value>chosen</value>
</property>
<!-- 排除的向量化输入格式列表 -->
<property>
<name>hive.vectorized.input.format.excludes</name>
<value>org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat</value>
</property>
<!-- 是否合并Map输出的小文件 -->
<property>
<name>hive.merge.mapfiles</name>
<value>true</value>
</property>
<!-- 是否合并MapReduce输出的小文件 -->
<property>
<name>hive.merge.mapredfiles</name>
<value>false</value>
</property>
<!-- 是否启用CBO优化 -->
<property>
<name>hive.cbo.enable</name>
<value>false</value>
</property>
<!-- Fetch任务转换级别 -->
<property>
<name>hive.fetch.task.conversion</name>
<value>minimal</value>
</property>
<!-- 触发Fetch任务转换的数据量阈值(以字节为单位) -->
<property>
<name>hive.fetch.task.conversion.threshold</name>
<value>268435456</value>
</property>
<!-- Limit操作的内存使用百分比 -->
<property>
<name>hive.limit.pushdown.memory.usage</name>
<value>0.1</value>
</property>
<!-- 是否合并Spark任务输出的小文件 -->
<property>
<name>hive.merge.sparkfiles</name>
<value>true</value>
</property>
<!-- 合并小文件时的平均大小(以字节为单位) -->
<property>
<name>hive.merge.smallfiles.avgsize</name>
<value>16777216</value>
</property>
<!-- 每个任务合并的数据量(以字节为单位) -->
<property>
<name>hive.merge.size.per.task</name>
<value>268435456</value>
</property>
<!-- 是否启用重复消除优化 -->
<property>
<name>hive.optimize.reducededuplication</name>
<value>true</value>
</property>
<!-- 最小Reduce任务数以启用重复消除优化 -->
<property>
<name>hive.optimize.reducededuplication.min.reducer</name>
<value>4</value>
</property>
<!-- 是否启用Map端聚合 -->
<property>
<name>hive.map.aggr</name>
<value>true</value>
</property>
<!-- Map端聚合的哈希表内存比例 -->
<property>
<name>hive.map.aggr.hash.percentmemory</name>
<value>0.5</value>
</property>
<!-- 是否优化动态分区排序 -->
<property>
<name>hive.optimize.sort.dynamic.partition</name>
<value>false</value>
</property>
<!-- Hive执行引擎类型(mr、tez、spark) -->
<property>
<name>hive.execution.engine</name>
<value>mr</value>
</property>
<!-- Spark Executor的内存大小 -->
<property>
<name>spark.executor.memory</name>
<value>2572261785b</value>
</property>
<!-- Spark Driver的内存大小 -->
<property>
<name>spark.driver.memory</name>
<value>3865470566b</value>
</property>
<!-- 每个Spark Executor的核心数 -->
<property>
<name>spark.executor.cores</name>
<value>4</value>
</property>
<!-- Spark Driver的内存Overhead -->
<property>
<name>spark.yarn.driver.memoryOverhead</name>
<value>409m</value>
</property>
<!-- Spark Executor的内存Overhead -->
<property>
<name>spark.yarn.executor.memoryOverhead</name>
<value>432m</value>
</property>
<!-- 是否启用动态资源分配 -->
<property>
<name>spark.dynamicAllocation.enabled</name>
<value>true</value>
</property>
<!-- 动态资源分配的初始Executor数量 -->
<property>
<name>spark.dynamicAllocation.initialExecutors</name>
<value>1</value>
</property>
<!-- 动态资源分配的最小Executor数量 -->
<property>
<name>spark.dynamicAllocation.minExecutors</name>
<value>1</value>
</property>
<!-- 动态资源分配的最大Executor数量 -->
<property>
<name>spark.dynamicAllocation.maxExecutors</name>
<value>2147483647</value>
</property>
<!-- 是否在Hive元数据存储中执行setugi操作 -->
<property>
<name>hive.metastore.execute.setugi</name>
<value>true</value>
</property>
<!-- 是否支持并发操作 -->
<property>
<name>hive.support.concurrency</name>
<value>true</value>
</property>
<!-- ZooKeeper服务器列表 -->
<property>
<name>hive.zookeeper.quorum</name>
<value>myhost04,myhost03,myhost02</value>
</property>
<!-- ZooKeeper客户端端口号 -->
<property>
<name>hive.zookeeper.client.port</name>
<value>2181</value>
</property>
<!-- Hive使用的ZooKeeper命名空间 -->
<property>
<name>hive.zookeeper.namespace</name>
<value>hive_zookeeper_namespace_hive</value>
</property>
<!-- 集群委派令牌存储类 -->
<property>
<name>hive.cluster.delegation.token.store.class</name>
<value>org.apache.hadoop.hive.thrift.MemoryTokenStore</value>
</property>
<!-- 是否启用Hive Server2用户代理模式 -->
<property>
<name>hive.server2.enable.doAs</name>
<value>true</value>
</property>
<!-- 是否启用Hive元数据存储的SASL认证 -->
<property>
<name>hive.metastore.sasl.enabled</name>
<value>true</value>
</property>
<!-- Hive Server2的认证方式 -->
<property>
<name>hive.server2.authentication</name>
<value>kerberos</value>
</property>
<!-- Hive元数据存储的Kerberos主体名称 -->
<property>
<name>hive.metastore.kerberos.principal</name>
<value>hive/_HOST@MY.COM</value>
</property>
<!-- Hive Server2的Kerberos主体名称 -->
<property>
<name>hive.server2.authentication.kerberos.principal</name>
<value>hive/_HOST@MY.COM</value>
</property>
<!-- 是否启用Spark Shuffle服务 -->
<property>
<name>spark.shuffle.service.enabled</name>
<value>true</value>
</property>
<!-- 是否在没有Limit操作的OrderBy语句中执行严格检查 -->
<property>
<name>hive.strict.checks.orderby.no.limit</name>
<value>false</value>
</property>
<!-- 是否在没有分区过滤条件的查询中执行严格检查 -->
<property>
<name>hive.strict.checks.no.partition.filter</name>
<value>false</value>
</property>
<!-- 是否执行严格的类型安全性检查 -->
<property>
<name>hive.strict.checks.type.safety</name>
<value>true</value>
</property>
<!-- 是否执行严格的笛卡尔积检查 -->
<property>
<name>hive.strict.checks.cartesian.product</name>
<value>false</value>
</property>
<!-- 是否执行严格的桶排序检查 -->
<property>
<name>hive.strict.checks.bucketing</name>
<value>true</value>
</property>
</configuration>
具体用途:
- hive.metastore.uris:Hive元数据存储的URI。
- hive.metastore.client.socket.timeout:Hive元数据客户端套接字超时时间。
- hive.metastore.warehouse.dir:Hive数据仓库目录。
- hive.warehouse.subdir.inherit.perms:子目录是否继承权限。
- hive.auto.convert.join:自动转换连接类型的Join操作。
- hive.auto.convert.join.noconditionaltask.size:自动转换连接类型的Join操作时条件不满足的最大数据量。
- hive.optimize.bucketmapjoin.sortedmerge:是否优化Bucket Map Join的Sorted Merge。
- hive.smbjoin.cache.rows:SMB Join操作缓存的行数。
- hive.server2.logging.operation.enabled:是否启用Hive Server2日志记录操作。
- hive.server2.logging.operation.log.location:Hive Server2操作日志的存储位置。
- mapred.reduce.tasks:MapReduce作业的Reduce任务数。
- hive.exec.reducers.bytes.per.reducer:每个Reduce任务的数据量。
- hive.exec.copyfile.maxsize:最大允许复制文件的大小。
- hive.exec.reducers.max:同时运行的最大Reduce任务数。
- hive.vectorized.groupby.checkinterval:Vectorized Group By操作的检查间隔。
- hive.vectorized.groupby.flush.percent:Vectorized Group By操作的Flush比例。
- hive.compute.query.using.stats:是否使用统计信息来优化查询计划。
- hive.vectorized.execution.enabled:是否启用向量化执行引擎。
- hive.vectorized.execution.reduce.enabled:是否在Reduce阶段启用向量化执行。
- hive.vectorized.use.vectorized.input.format:是否使用向量化输入格式。
- hive.vectorized.use.checked.expressions:是否使用检查表达式的向量化执行。
- hive.vectorized.use.vector.serde.deserialize:是否使用向量化序列化和反序列化。
- hive.vectorized.adaptor.usage.mode:向量化适配器的使用模式。
- hive.vectorized.input.format.excludes:排除的向量化输入格式列表。
- hive.merge.mapfiles:是否合并Map输出的小文件。
- hive.merge.mapredfiles:是否合并MapReduce输出的小文件。
- hive.cbo.enable:是否启用CBO优化。
- hive.fetch.task.conversion:Fetch任务转换级别。
- hive.fetch.task.conversion.threshold:触发Fetch任务转换的数据量阈值。
- hive.limit.pushdown.memory.usage:Limit操作的内存使用百分比。
- hive.merge.sparkfiles:是否合并Spark任务输出的小文件。
- hive.merge.smallfiles.avgsize:合并小文件时的平均大小。
- hive.merge.size.per.task:每个任务合并的数据量。
- hive.optimize.reducededuplication:是否启用重复消除优化。
- hive.optimize.reducededuplication.min.reducer:最小Reduce任务数以启用重复消除优化。
- hive.map.aggr:是否启用Map端聚合。
- hive.map.aggr.hash.percentmemory:Map端聚合的哈希表内存比例。
- hive.optimize.sort.dynamic.partition:是否优化动态分区排序。
- hive.execution.engine:Hive执行引擎类型。
- spark.executor.memory:Spark Executor的内存大小。
- spark.driver.memory:Spark Driver的内存大小。
- spark.executor.cores:每个Spark Executor的核心数。
- spark.yarn.driver.memoryOverhead:Spark Driver的内存Overhead。
- spark.yarn.executor.memoryOverhead:Spark Executor的内存Overhead。
- spark.dynamicAllocation.enabled:是否启用动态资源分配。
- spark.dynamicAllocation.initialExecutors:动态资源分配的初始Executor数量。
- spark.dynamicAllocation.minExecutors:动态资源分配的最小Executor数量。
- spark.dynamicAllocation.maxExecutors:动态资源分配的最大Executor数量。
- hive.metastore.execute.setugi:是否在Hive元数据存储中执行setugi操作。
- hive.support.concurrency:是否支持并发操作。
- hive.zookeeper.quorum:ZooKeeper服务器列表。
- hive.zookeeper.client.port:ZooKeeper客户端端口号。
- hive.zookeeper.namespace:Hive使用的ZooKeeper命名空间。
- hive.cluster.delegation.token.store.class:集群委派令牌存储类。
- hive.server2.enable.doAs:是否启用Hive Server2用户代理模式。
- hive.metastore.sasl.enabled:是否启用Hive元数据存储的SASL认证。
- hive.server2.authentication:Hive Server2的认证方式。
- hive.metastore.kerberos.principal:Hive元数据存储的Kerberos主体名称。
- hive.server2.authentication.kerberos.principal:Hive Server2的Kerberos主体名称。
- spark.shuffle.service.enabled:是否启用Spark Shuffle服务。
- hive.strict.checks.orderby.no.limit:是否在没有Limit操作的OrderBy语句中执行严格检查。
- hive.strict.checks.no.partition.filter:是否在没有分区过滤条件的查询中执行严格检查。
- hive.strict.checks.type.safety:是否执行严格的类型安全性检查。
- hive.strict.checks.cartesian.product:是否执行严格的笛卡尔积检查。
- hive.strict.checks.bucketing:是否执行严格的桶排序检查。
这些参数的具体值可以根据实际需求进行修改和配置,以满足您的Hive和Spark环境的要求。