Hive通用基础优化
2021-02-24 本文已影响0人
八爪鱼下水
- hive基础优化
- 访问咨询主题看板_数据采集操作: 源数据 --> ODS层
- 访问咨询主题看板_清洗转换操作: ODS层 --> DWD层
- 访问咨询主题看板_数据分析的操作: DWD层 --> DWS层
1) HDFS的副本数量的调整
建议, 一般调整为3个, 如果数据不是特别重要, 可以调整为2
2) Nodemanager的相关基础配置
-
- CPU配置操作:
- 说明: 一般配置为和服务器的CPU核心数相同即可
如何查看服务器的核心数:
grep 'processor' /proc/cpuinfo | sort -u | wc -l
- 如何配置: yarn.nodemanager.resource.cpu-vcores
3) 内存的配置
- 说明: 根据当前服务器的剩余内存的80%的容量来配置
- 公式: 剩余内存 * 0.8
- 如何查看剩余内存:
- 命令: free -m
通过CM查询剩余内存:
- 命令: free -m
如何配置内存: yarn.nodemanager.resource.memory-mb
除了设置上述基础内存配置, 还有几个配置
yarn.scheduler.maximum-allocation-mb :
此值配置值为和 yarn.nodemanager.resource.memory-mb
保持一致
yarn.app.mapreduce.am.command-opts :
略小于
yarn.nodemanager.resource.memory-mb
大于为 0.9
4) 新增磁盘 挂载HDFS配置 本地目录配置: NodeManager
存储中间数据文件的本地文件系统中的目录列表
- 配置方案: 如果服务器中有多个磁盘, 此路径需要配置为多个, 每个路径代表的不同磁盘位置
- 配置项: yarn.nodemanager.local-dirs
6) MaperReduce的内存配置:
map阶段:
mapreduce.map.memory.mb :
每一个map默认申请的内存大小,
默认值为 0是自动推断.
mapreduce.map.java.opts :
每一个map的jvm的内存大小
注意:
mapreduce.map.java.opts
JVM一定要小于Map
mapreduce.map.memory.mb;
reduce阶段:
mapreduce.reduce.memory.mb :
每一个reduce默认申请的内存大小,
默认值为 0 表示自动获取
mapreduce.reduce.java.opts :
每一个reduce的jvm的内存大小
注意:
mapreduce.reduce.java.opts
一定要小于
mapreduce.reduce.memory.mb;
注意: MR中所有的内存配置, 都不能大于nodemanager的内存大小
7) hive的基础配置
- HiveServer2 的 Java 堆栈内存配置:
什么时候需要调整此配置呢?
搜索: JAVA堆栈大小
- 说明: 当出现hiveserver2异常退出的时候, 一般就需要配置此项内容
- 动态生成分区的线程数
- 说明: 在执行动态分区过程中, 可以运行多少个线程来生产分区数据, 线程数量越多, 执行效率越高, 前提是有资源
如何配置:
hive.load.dynamic.partitions.thread 默认值为 15
- 监听输入文件线程数
- 说明: hive在读取数据的线程数量配置, 此配置越高 读取数据效率越高, 前提是有资源
- 如何配置:
hive.exec.input.listing.max.threads 默认值为 15
8) 压缩的配置
yarn配置:
在CM中直接配置
mapreduce.map.output.compress
是否开启map端压缩配置 默认开启的
mapreduce.map.output.compress.codec
map端采用何种压缩方案
建议配置为: org.apache.hadoop.io.compress.SnappyCodec
mapreduce.output.fileoutputformat.compress
是否开启reduce端压缩配置 默认不开启的
mapreduce.output.fileoutputformat.compress.codec
reduce端需要采用何种压缩操作建议配置为:
org.apache.hadoop.io.compress.SnappyCodec
mapreduce.output.fileoutputformat.compress.type
采用压缩的方式 建议: block 块压缩
hive配置: 此配置需要在会话中执行
set hive.exec.compress.intermediate=true;
开启中间结果的压缩
set hive.exec.compress.output=true;
是否开启最终结果压缩
9) 执行引擎选择:
hive.execution.engine 配置
- 可选项: MR或者spark