趁我未失忆之前,记录过去曾经的自己
前言
在当要对某些用户在hive上操作可以对某些表或是数据的权限做控管时,就需要安装Sentry。通常会一起搭配Kerberos。cdh版本的hadoop在对数据安全上的处理通常采用Kerberos+Sentry的结构。kerberos主要负责平台用户的用户认证,sentry则负责数据的权限管理。
一、Sentry是什么?
1.Sentry介绍
Apache Sentry是Cloudera公司发布的一个Hadoop开源组件。Sentry为Hadoop集群上的经过身份验证的用户和应用程序提供了控制和实施数据特权级别的功能。目前Sentry当前可以与Apache Hive,Hive Metastore / HCatalog,Apache Solr,Impala和HDFS(仅限于Hive表数据)一起使用。Sentry被设计为Hadoop组件的可插入授权引擎。 它允许您定义授权规则,以验证用户或应用程序对Hadoop资源的访问请求。 Sentry是高度模块化的,可以支持对Hadoop中各种数据模型的授权。官网介绍
2.最佳性能
从官方网站上阐述有几点关于性能,要注意事项:
-
创建roles (也就是privilege的集合,每个读写规则),使用5000或更少效能叫佳。
-
HMS heap 设置至少10 GB,因为默认情况下,Sentry使用12个连接与HMS通信。所以通过CM打开Hive服务,单击Configuration 在搜索框打上Java Heap Size of Hive Metastore Server in Bytes. v想我这里就设定8所以要改一下。
-
每个Sentry节点最好2.25GB内存
-
确保 JVM heap size 设置为适合内存需求的值。通过CM打开S 服务,单击Configuration 在搜索框打上Java Heap Size of Sentry Server in Bytes。 将该属性设置为Java process heap内存的最大大小。
-
随着Hive数据库中objects(DB+tables+partitions)数量的增加,Sentry所需的内存量呈线性增加。下图根据Hive对象的数量显示了Sentry所需的内存。
-
為了減少一次获取所有HMS通知的开销,我們可以一次配置Sentry从HMS提取的通知数量。这在运行大型DDL作业时特别有用。首先去CM中打开Sentry服务,单击Configuration 在搜索框打上Sentry Service Advanced Configuration Snippet (Safety Valve) for sentry-site.xml。单击加号(+)添加新参数。在name字段中, 输入sentry.hms.fetch.size。在Value字段中,输入您希望Sentry一次获取的事件数。例如,如果Sentry需要获取1,000个事件,则可以在“值”字段中输入100,Sentry将获取100次事件10次,而不是同一次获取所有1,000个事件。
-
增加,Sentry所需的内存量呈线性增加。下图根据Hive对象的数量显示了Sentry所需的内存。
二、添加Sentry服务与各组件集成配置
1.Sentry服务安装
进入CM首页–>选择集群Cluster1–>Add Service:
选择Sentry,点击Continue:
给Sentry分配主机,选择一台节点作为Sentry Server,Gateway可以选择集群内所有主机,点击Continue:
ˋ注记:添加Sentry服务后,可以在启用Sentry High Availability添加主机,如何启用Sentry High Availability请参考Sentry High Availability
进行数据库设置,可以透过Test Connection测试是否连接上数据库,然后点击Continue:
等待Sentry服务第一次运行并启动成功,等待运行成功后,点击Continue:
点击Finish:
回到Cloudera Manager主页发现Sentry服务运行正常,显示为绿色
自此Sentry服务安装完毕。