CDH5.15.1 sentry BUG

Sentry 自带HDFS Sync功能,同步hive database/table/partition与对应hdfs权限。自版本CDH5.12.2后,这个功能黄了。。。追踪原因是CDH-21887 Sentry Service HA把MetastorePlugin给删除了。MetastorePlugin跑在hive metastore机器上,做为hive的plugin。

MetastorePlugin在database/table创建/partition新增时,向sentry同步相应权限。

再往下追,Hive1.2.0新推了一个功能:

需要配置MetaStoreEventListener接收事件并存储:

 hive.metastore.event.listeners除了配置sentry的org.apache.sentry.binding.metastore.SentryMetastorePostEventListener,还得配置org.apache.hive.hcatalog.listener.DbNotificationListener。这样才能把相应

另外加载数据时,也需要开启对应事件hive.metastore.dml.events(默认为false),


同时,Sentry要接收notification,就得开启HMSFollower功能(SentryService.java),得做更多的配置,官网文档没有说明,甚至错误说明。

1.以下两个配置开启hdfs sync(官网配置描述正确)

sentry.service.processor.factories : org.apache.sentry.provider.db.service.thrift.SentryPolicyStoreProcessorFactory,org.apache.sentry.hdfs.SentryHDFSServiceProcessorFactory

sentry.policy.store.plugins:          org.apache.sentry.hdfs.SentryPlugin 

2.sentry代码需要从hive config查找metastoreURI,这样就得在sentry classpath上扔一个hive-site.xml配置,里面包括metastoreURI(在/usr/bin/sentry设置export set HIVE_CONF_DIR即可)

cloudera文档越来越不靠谱,向着Parcel+CM靠,不管command line方式

原以为这样就可以了,后面发现sentry源码有bug,获取hiveconf时,通过SessionStates.get(),这个方法从theadlocal获取,搜索完整个工程,没地方启动SessionStates,运行时返回nullpointerexception,只能改源码。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容