AWS EMR与Hive用户持久化管理最优实现方案咨询
最优实现方案:基于外部持久化LDAP的Hive认证方案
该方案完全匹配你提出的所有需求,是大数据集群身份认证的行业通用标准方案,无需自定义开发,稳定性和兼容性更高。
- 首先搭建独立于EMR集群的持久化LDAP服务(可选OpenLDAP、Microsoft AD等实现),所有Hive用户的账号、密码、属性信息都存储在LDAP服务中,LDAP的数据挂载独立云盘或者使用托管服务存储,不会随EMR集群销毁丢失。
- 修改EMR集群的Hive配置,开启LDAP认证模式,你需要在
hive-site.xml中调整以下参数:<property> <name>hive.server2.authentication</name> <value>LDAP</value> </property> <property> <name>hive.server2.authentication.ldap.url</name> <value>ldap://你的LDAP服务地址:389</value> </property> <property> <name>hive.server2.authentication.ldap.baseDN</name> <value>ou=users,dc=yourcompany,dc=com</value> </property> - 将上述Hive配置固化到EMR集群模板中,新建或者重建EMR集群时直接套用模板即可,无需执行任何额外的用户创建操作,集群启动后自动对接LDAP中存储的所有用户。
- 新增用户时直接在LDAP服务中添加账号即可,不需要修改或重启EMR集群,新增用户实时生效,所有正在运行的EMR集群都可以直接识别新账号。
- 若需要实现表、列级的细粒度权限控制,可以搭配Apache Ranger做权限管理,将Ranger的策略存储在独立于EMR的外部数据库中,权限配置同样不会随EMR集群销毁丢失,也支持动态调整。
备选轻量方案:外部用户存储+动态同步agent
如果不想额外维护LDAP服务,可以基于你原有方案做优化,解决运行时新增用户的问题:
- 首先将Hive的元数据库替换为独立于EMR的外部RDS服务,不要使用EMR自带的本地元数据库,避免EMR重建时Hive元数据和权限配置丢失。
- 继续使用MongoDB存储所有用户的账号密码信息,开发轻量的用户管理操作入口,支持新增、禁用用户的操作。
- 在EMR集群上部署一个常驻的轻量同步agent,每隔固定周期(可配置为1-5分钟)拉取MongoDB中的全量用户列表,对比Hive中已有的用户,对新增用户自动执行
CREATE USER语句完成同步,同步逻辑增加幂等校验,避免重复创建报错。 - EMR重建时,在引导脚本中添加全量同步逻辑,集群启动时一次性将Mongo中存储的所有用户同步到Hive即可。
内容的提问来源于stack exchange,提问作者Tomin
相关产品推荐
相关产品推荐

