INFO-Hive2.1.1归档功能开启

适用模块
Hive
仅完成Hive2.1.1版本验证,支持客户试用,不提供SLA保障
具体说明
由于HDFS设计,文件系统中文件数量直接影响namenode中的内存消耗; 使用Hadoop Archives功能是减少小文件数量的一种方法;Hive支持将分区中的文件转换为Hadoop存档(HAR)的内置支持,因此曾经可能包含大量小文件的分区可以缩减为个位数,但从HAR读取会带来额外的开销,查询性能明显下降;
功能配置

一、 拷贝归档Jar包至Hive路径下

通过easyops查看Hiveserver2服务所在节点,如存在多个节点,则需逐个节点完成以下操作;
#!/bin/bash
# $HADOOP_HOME默认路径一般为/usr/easyops/hdfs/default_hdfs/client/2023041209360881676b27d20/current,其中2023041209360881676b27d20为部署时自动生成,需根据客户环境进行替换
# $HIVE_HOME默认路径一般为/usr/easyops/hive/default_hive/hiveserver/20230417150238445eb5593f0/current/,其中20230417150238445eb5593f0为部署时自动生成,需根据客户环境进行替换

cd  $HADOOP_HOME
cp /share/hadoop/tools/lib/hadoop-archives-2.9.2.jar   $HIVE_HOME/lib

二、开放参数白名单

通过easyops修改hive-site.xml配置文件,增加归档相关参数到白名单中;
参数名为:hive.security.authorization.sqlstd.confwhitelist.append (如不存在则点击添加字段,新增该参数)
参数值为:hive.archive.enabled|har.partfile.size|hive.archive.har.parentdir.settable 修改完成后保存,重启HiveServer服务并勾选同步配置(如存在多个节点则均需重启)

INFO-Hive2.1.1归档功能开启 - 图1

三、功能验证

-- 启用归档

set hive.archive.enabled=true;
sethar.partfile.size=1099511627776;

alter table bdms.demo ARCHIVE PARTITION(dt = '2024-01-01');

-- 恢复归档

alter table bdms.demo UNARCHIVE PARTITION(dt = '2024-01-01');

四、已知问题

  • 默认的HiveHarFileSystem.getFileBloclLocations(),没有locality,这意味着将会导致更高的网络负载进而影响整个集群的性能;
  • 多个任务同时归档同一个分区,将会引发未知问题;

作者:Semon