清理 apacheds 冗余数据

  其他常见问题
内容纲要

概要描述

针对 Inceptor 的 GuardianMetastoreListener 在建表时向 Guardian 自动添加权限信息,导致 Guardian的 ApacheDS数据量过大。我们提供一个工具 ApacheDS cleaner,用于删除已有系统中 ApacheDS 中的冗余数据,如果生产集群中存在有大量表的,有可能会出现这个问题;


详细说明

其工作原理是将 Inceptor 中的表 owner 信息和 ApacheDS 中的权限信息分别保存到本地文件中,对这两个文件中的记录按顺序比对,发现 ApacheDS 中冗余的部分,将可以删除的数据条目保存到文件中,然后再将这些数据一并从 ApacheDS 中删除。


操作步骤

  1. 备份 apacheds 数据
  2. 使用清理工具清理冗余数据
备份 apacheds 数据

根据 ApacheDS 所在节点 /etc/guardian/conf/guardian-ds.properitesguardian.ds.ha.status 的值来判断 master 节点,如下图所示可以确定 tdh6-162 是 master 节点;

file

file

然后备份该 master 节点的数据文件,根据节点 /etc/guardian/conf/guardian-ds.propertiesguardian.ds.database.dir 的值确定数据路径

file

如图中所示,数据文件为:/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

file

解压后得到一个 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

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。