内容提要
本文介绍了在EMR集群中实现Hive数据库中某个数据库下表的读写分离的方法,包括修改EMR集群的hive-site参数和创建只读用户。作者是亚马逊云科技高级架构师黄海波。
延伸解读
为何选择轻量级读写分离方案
文章指出,启用Kerberos和Ranger可实现细粒度控制,但会提升系统复杂度和运维难度。对于仅需表级读写分离的场景,通过修改hive-site参数和创建只读用户即可满足需求,且无需重启集群或启用额外安全组件,适合无法启用Kerberos和Ranger的现有EMR集群。
实施中的关键配置与权限设置
实现读写分离需在EMR控制台修改hive-site参数,启用Hive客户端授权并设置表创建者自动获得ALL权限。随后在Master节点创建Linux只读用户,为其分配HDFS目录权限,并通过GRANT命令授予特定表的SELECT权限。这些步骤需在集群所有实例组上同步配置。
验证只读用户权限的有效性
创建只读用户后,需登录该用户测试增删改操作是否被拒绝,并验证SELECT查询正常。文章示例中,只读用户执行truncate、drop、create、insert等操作应失败,而select操作应成功。这确保了BI团队只能读取数据,避免误操作影响数仓稳定性。
Q&A
如何在EMR集群中实现Hive数据库的读写分离?
可以通过修改EMR集群的hive-site参数和创建只读用户来实现Hive数据库的读写分离。
为什么需要在Hive数据库中实现读写分离?
为了避免BI分析团队误操作导致数仓系统崩溃,只提供只读访问权限。
在EMR集群中,如何配置hive-site参数以启用Hive客户端授权?
需要在EMR控制台配置hive.security.authorization.enabled为true,并设置hive.security.authorization.createtable.owner.grants为ALL。
如何创建只读用户并赋予Hive表的权限?
在Master节点上创建Linux用户,并通过GRANT命令将表的SELECT权限赋予该用户。
在没有启用Kerberos和Ranger的情况下,如何实现Hive的细粒度控制?
可以通过修改hive-site参数和创建只读用户来实现基本的细粒度控制,而不依赖于Kerberos和Ranger。
如何测试只读用户的操作权限是否正常?
可以通过登录只读用户并执行增删改查操作来测试其权限是否正常。