概要描述
针对 Inceptor 的 GuardianMetastoreListener 在建表时向 Guardian 自动添加权限信息,导致 Guardian的 ApacheDS数据量过大。我们提供一个工具 ApacheDS cleaner,用于删除已有系统中 ApacheDS 中的冗余数据,如果生产集群中存在有大量表的,有可能会出现这个问题;
详细说明
其工作原理是将 Inceptor 中的表 owner 信息和 ApacheDS 中的权限信息分别保存到本地文件中,对这两个文件中的记录按顺序比对,发现 ApacheDS 中冗余的部分,将可以删除的数据条目保存到文件中,然后再将这些数据一并从 ApacheDS 中删除。
操作步骤
- 备份 apacheds 数据
- 使用清理工具清理冗余数据
备份 apacheds 数据
根据 ApacheDS 所在节点 /etc/guardian/conf/guardian-ds.properites
中 guardian.ds.ha.status
的值来判断 master
节点,如下图所示可以确定 tdh6-162 是 master 节点;
然后备份该 master 节点的数据文件,根据节点 /etc/guardian/conf/guardian-ds.properties
中 guardian.ds.database.dir
的值确定数据路径
如图中所示,数据文件为:/mnt/disk1/guardian/data/partitions/guardian/data.mdb
,cp 一份即可;
cp /mnt/disk1/guardian/data/partitions/guardian/data.mdb /root/
使用工具清理冗余数据
在 inceptor metastore 节点/root/路径下解压工具;工具的下载地址:
apacheds-cleaner-20-07-15.tar.gz
解压后得到一个 apacheds-cleaner 脚本;具体使用方法如下:
./apacheds-cleaner -H -P -d -s -p -S
# :
# guardian-ds.properties配置文件中guardian.ds.domain参数dc=后面的值
# :
# hive-site.xml中"hive.metastore.service.id"的值,如果没有该参数,则为"hive.service.id"的值
# 注意下面命令一次只能清理一个Inceptor metastore对应的冗余数据,如果有多个Inceptor metastore服务,需要使用不同的hive_metastore_service_id执行多次
需要先安装一个 openldap-clients,命令如下:yum install -y openldap-clients
然后执行清理脚本:
./apacheds-cleaner -H 172.22.22.162 -P 10389 -d tdh -s inceptor1 -p 123 -S hdfs1
输出如下为成功:
[+] run ldapdelete command to delete ApacheDS entrys based on entries-to-delete file
[+] Finished: delete abundant files