上手步骤解析,快速实现 Hive 数据库表的读写分离!

0b47ed6780cff5e200f867b9a24ecfe8.gif

背景

为了在 Hive 数据库中实现对数据表操作的细粒度控制,我们在创建 Amazon EMR 集群的时候,需要启用 Kerberos 和 Apache Ranger 等安全组件。默认情况下,集群本身并不会具备细粒度的控制,例如对数据表的增删改查操作等。但是,引入 Kerberos 和 Apache Ranger 会让系统变的更复杂,管理和运维难道也增加。

有时候我们可能并不需要对数据表中的内容进行非常细粒度的控制,例如某个字段的读写控制,而只是希望让数据表本身能够实现读写分离。例如,我们希望产生数据的应用系统能够对数据表进行增删改查操作;而对于分析团队,只需要提供只读操作。

本文将详细描述如何在 EMR 集群里对 Hive 下的某个数据库中的表实现读写分离。

客户实际场景和架构说明

6a02d6aafe615e3d46d21e4f35d5c6d3.png

1.初始状态:整个数仓系统采用 Hive,构建在 Amazon EMR 上,数仓的访问权限只能通过其 CDP/MA 应用进行访问,不对外开放其它用户。

2.经过一段时间运行后,系统积累了大量的数据。企业的 BI 分析团队,也希望能够通过 BI 工具访问数仓系统。系统提供方不希望 BI 团队能够修改和删除数仓中的表,避免因为误操作导致系统崩溃。

3.在运行的EMR 集群上无法 Enable Kerbose和 Ranger。

现状的 EMR 集群的配置信息

  1. EMR 版本号 :6.10.0

  2. 组件:Hive 3.1.3

  3. Master(1 台):xlarge,Core(3 台):m5.2xlarge

具体实现步骤

修改 EMR 集群 hive-site 参数

在 EMR 控制台配置如下 hive-site 参数:

< property>
    < name>hive.security.authorization.enabled< /name>
    < value>true< /value>
     < description>enable or disable the hive client authorization< /description>
 < /property>< property>
     < name>hive.security.authorization.createtable.owner.grants< /name>
     < value>ALL< /value>
     < description>the privileges automatically granted to the owner whenever a table gets created. An example like "select,drop" will grant select and drop privilege to the owner of the table< /description>
< /property>

左右滑动查看更多

1、进入 EMR 集群

43cc4d84bf4376b8177abe488f250db0.png

2、进入配置页面

782f5eaf11218ba019fe8233755a3126.png

3、对集群节点的 Instance group configurations 进行配置

6157046e728b64a07ede83fcbf97bcf6.png

选择实例组,点击右上角的 Reconfigure,添加上面说的两项内容,然后保存

3c98ed37379ee1a62414d831c57f50bb.png

对其它实例组做同样的配置。

在 master 节点上创建 linux 的只读用户

1、先进入集群

1961627a103d5358e43605c1794744d6.png

2、打开 Master 节点的控制 console

9108dc16a9c074ceeb6962f38f8811cd.png

依次执行如下命令:

1)创建一个 linux 用户:adduser pingyou

2)切换到 hadoop 用户:sudo su – hadoop

3)通过 hadoop 创建一个 pingyou 的用户目录,让 pingyou 这个用户有权限访问hdfs

  1. 执行如下命令:hadoop fs -mkdir /user/pingyou

  2. 然后给 pingyou 这个用户相应的权限:hadoop fs -chown pingyou:supergroup /user/pingyou

64ac80737e6087400afb32eaa7c4171b.png

4)进入 hive (进入 hive 的一定是创建数据库和表的这个用户,我这边用的是 hadoop 这个用户)

执行 grant 权限,将相应的表的 select 权限赋予 pingyou 这个用户

进入自己的数据库,然后给权限:GRANT SELECT ON TABLE my_table TO USER pingyou;

如下图所示:

252b1597726ff2b1d11cf2c8262c78e8.png

测试验证

1、用上一步创建的用户 pingyou 登陆

退出 hive,退出当前 hadoop 用户,然后进入到刚才创建的 pingyou 这个用户

ca111ed1caa7372d460d219306e4fbf7.png

2、测试增删改操作

进入 hive,进入数据库:use test_db;

执行 truncate,drop,create,insert 操作,测试验证

e9b4abe5a70c8f01a3b6672498c8d616.png

3、测试 select 操作

a83f64383d1e0ca9fc3028a613a11aa5.png

本篇作者

46df7e3513cccfb7716d24d222ed33f5.jpeg

黄海波

亚马逊云科技高级架构师。负责亚马逊云科技合作伙伴相关解决方案的建设以及合作伙伴生态合作。与合作伙伴一起,根据客户需求,分析其在技术架构层面所遇到的挑战和未来的方向,设计和落地基于亚马逊云科技平台和合作伙伴产品的架构方案。有丰富的系统设计和研发经验。

1c8670df9e555f6144a65ebbd1664a18.png

叶骏

亚马逊云科技资深解决方案架构师。拥有超过 18 年的零售行业、制造行业以及数字营销领域的技术产品研发和解决方案架构经验。目前专注于将亚马逊云科技的技术应用于实际解决方案,为客户实现技术创新和成功的技术落地。

e185540aa6add22d7e0e30e663f7bf64.png

9d3be23f14d85aa87615485507e3e55d.gif

星标不迷路,开发更极速!

关注后记得星标「亚马逊云开发者」

点击阅读原文查看博客,获得更详细内容

听说,点完下面4个按钮

就不会碰到bug了!

b77a4b921e5629755024bef1a3a00161.gif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值