基于CDH环境下的Hive数仓配置及优化

YARN的基础配置

NodeManager CPU配置

  • 在YARN界面中,点击配置,然后搜索配置项:yarn.nodemanager.resource.cpu-vcores
    在这里插入图片描述
    在这里插入图片描述
  • 此选项表示该节点服务器上yarn可以使用的虚拟CPU个数,默认值是8,推荐将值配置与物理CPU线程数相同,如果节点CPU核心不足8个,要调小这个值,yarn不会智能的去检测物理核心数(实际生产环境要比这个大很多,测试环境核数比较小)。
  • 在CDH主机的界面中我们可以看到每台虚机的核数,如下图所示:
    在这里插入图片描述
    在这里插入图片描述
  • 同样我们也可以在使用命令linux上面查看每台虚机的CPU核数:
  grep 'processor' /proc/cpuinfo | sort -u | wc -l

在这里插入图片描述

NodeManager 内存配置

  • 在YARN界面中,点击配置,然后搜索配置项:yarn.nodemanager.resource.memory-mb
    在这里插入图片描述
  • 设置该NodeManager节点上可以为容器分配的总内存,默认为8G,如果节点内存资源不足8G,要减少这个值,yarn不会智能的去检测内存资源,一般按照服务器剩余可用内存资源进行配置。生产上根据经验一般要预留15-20%的内存,那么可用内存就是实际内存*0.8。
  • Tips:注意要同时设置yarn.scheduler.maximum-allocation-mb为一样的值,yarn.app.mapreduce.am.command-opts(JVM内存)的值要同步修改为略小的值。
    在这里插入图片描述
    在这里插入图片描述
  • 在CDH主机的界面中我们可以看到每台虚机的内存,如下图所示:
    在这里插入图片描述
  • 同样我们也可以在使用命令linux上面查看每台虚机的内存:
  free -mh

在这里插入图片描述

NodeManager 本地目录

  • 在YARN界面中,点击配置,然后搜索配置项:yarn.nodemanager.local-dirs,NodeManager 存储中间数据文件的本地文件系统中的目录列表。如果单台服务器上有多个磁盘挂载,则配置的值应当是分布在各个磁盘上目录,这样可以充分利用节点的IO读写能力。

在这里插入图片描述

MapReduce内存配置

  • 当MR内存溢出时,可以根据服务器配置进行调整

  • 为作业的每个 Map 任务分配的物理内存量(MiB),默认为0,自动判断大小配置项为:mapreduce.map.memory.mb。
    在这里插入图片描述

  • 为作业的每个 Reduce 任务分配的物理内存量(MiB),默认为0,自动判断大小配置项为:mapreduce.reduce.memory.mb。。
    在这里插入图片描述

  • Map和Reduce的JVM配置选项,配置项为:mapreduce.map.java.opts、mapreduce.reduce.java.opts。
    在这里插入图片描述
    在这里插入图片描述

  • Tips:
    mapreduce.map.java.opts一定要小于mapreduce.map.memory.mb(大约为0.9倍)。
    mapreduce.reduce.java.opts一定要小于mapreduce.reduce.memory.mb(大约为0.9倍)。

HDFS副本数配置

  • 在HDFS界面中,点击配置,然后搜索配置项:
    在这里插入图片描述

  • 文件副本数通常默认值为3,此配置项不建议修改,如果在开发或测试环境中只有两台node,建议讲此数值修改为2。

  • hadoop3.x以上的版本, 支持设置副本数量为 1.5。其中 0.5 不是指的存储了一半, 而是采用纠删码来存储这一份数据的信息, 而纠删码只占用数据的一半。

Hive配置及优化

HiveServer2的Java堆栈

  • 如果Hiveserver2异常退出,导致连接失败的问题,如下图
    在这里插入图片描述
  • 此类报错通常情况下是OOM的情况,需要修改HiveServer2的Java堆栈。在Hive界面中,点击配置,然后搜索配置项:HiveServer2 的 Java 堆栈大小
    在这里插入图片描述
  • 设置完成之后重启Hive服务即可。

Hive动态生成分区的线程数

  • 在Hive界面中,点击配置,然后搜索配置项:hive.load.dynamic.partitions.thread。
    在这里插入图片描述

  • 此配置项用于加载动态生成的分区的线程数。加载需要将文件重命名为它的最终位置,并更新关于新分区的一些元数据。默认值为 15 。

  • 当有大量动态生成的分区时,增加这个值可以提高性能。根据服务器配置修改。

Hive监听输入文件线程数

  • 在Hive界面中,点击配置,然后搜索配置项:hive.exec.input.listing.max.threads。
    在这里插入图片描述
  • 此配置项用来监听输入文件的最大线程数。默认值:15。
  • 当需要读取大量分区时,增加这个值可以提高性能。根据服务器配置进行调整。

压缩配置

Map输出压缩

  • 除了创建表时指定保存数据时压缩,在查询分析过程中,Map的输出也可以进行压缩。由于map任务的输出需要写到磁盘并通过网络传输到reducer节点,所以通过使用LZO、LZ4或者Snappy这样的快速压缩方式,是可以获得性能提升的,因为需要传输的数据减少了。
  • 在YARN界面中,点击配置,然后搜索配置项:mapreduce.map.output.compress/mapreduce.map.output.compress.codec。
    在这里插入图片描述
  • 此配置项设置是否启动map输出压缩,默认为false。在需要减少网络传输的时候,可以设置为true。
  • 此配置项map输出压缩编码解码器,默认org.apache.hadoop.io.compress.DefaultCodec,推荐使用SnappyCodec:org.apache.hadoop.io.compress.SnappyCodec。

Reduce结果压缩

  • 是否对任务输出结果压缩,默认值false。对传输数据进行压缩,既可以减少文件的存储空间,又可以加快数据在网络不同节点之间的传输速度。
  • 在YARN界面中,点击配置,然后搜索配置项:mapreduce.output.fileoutputformat.compress
    mapreduce.output.fileoutputformat.compress.codec
    mapreduce.output.fileoutputformat.compress.type

在这里插入图片描述

  • 是否启用 MapReduce 作业输出压缩
  • 指定要使用的压缩编码解码器,推荐SnappyCodec
  • 指定MapReduce作业输出的压缩方式,默认值RECORD,可配置值有:NONE、RECORD、BLOCK,推荐使用BLOCK(批量压缩)。

Hive多个Map-Reduce中间数据压缩

  • 控制Hive在多个map-reduce作业之间生成的中间文件是否被压缩。压缩编解码器和其他选项由上面Hive通用压缩mapreduce.output.fileoutputformat.compress.*确定。
  • 通常在hue的查询页面中输入以下命令:
  set hive.exec.compress.intermediate=true;

Hive最终结果压缩

  • 控制是否压缩查询的最终输出(到 local/hdfs 文件或 Hive table)。压缩编解码器和其他选项由 上面Hive通用压缩mapreduce.output.fileoutputformat.compress.*确定。
  • 通常在hue的查询页面中输入以下命令:
  set hive.exec.compress.output=true;
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CDH 6.2 中配置 Hive,需要执行以下步骤: 1. 安装 MySQL 或 MariaDB 数据库,并创建一个新的数据库和用户,用于 Hive 元数据存储。 2. 在 Hive 配置文件中设置元数据存储的 JDBC 连接参数。打开 `/etc/hive/conf/hive-site.xml` 文件,添加以下内容: ```xml <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://<mysql_host>:<mysql_port>/<hive_metastore_db_name>?createDatabaseIfNotExist=true</value> <description>metadata is stored in a MySQL server</description> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>MySQL JDBC driver class</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value><hive_metastore_db_user></value> <description>user name for connecting to mysql server</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value><hive_metastore_db_password></value> <description>password for connecting to mysql server</description> </property> ``` 其中,`<mysql_host>` 为 MySQL 主机名或 IP 地址,`<mysql_port>` 为 MySQL 端口号,`<hive_metastore_db_name>` 为 Hive 元数据存储的数据库名称,`<hive_metastore_db_user>` 和 `<hive_metastore_db_password>` 分别为连接 MySQL 数据库的用户名和密码。 3. 配置 Hadoop HDFS,创建 Hive 所需的 HDFS 目录。例如,可以执行以下命令: ```bash hdfs dfs -mkdir /user/hive/warehouse hdfs dfs -chmod g+w /user/hive/warehouse ``` 4. 启动 Hive Metastore 服务。可以使用以下命令启动: ```bash sudo systemctl start hive-metastore ``` 5. 启动 HiveServer2 服务。可以使用以下命令启动: ```bash sudo systemctl start hive-server2 ``` 6. 使用 Hive 命令行客户端测试配置是否成功。可以使用以下命令: ```bash hive ``` 如果成功配置,将会进入到 Hive 命令行界面。 以上就是在 CDH 6.2 中配置 Hive 的步骤,如果有需要可以参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值