版权声明:本文为博主原创文章,未经博主允许不得转载。博客地址:http://www.fanlegefan.com/ https://blog.csdn.net/woloqun/article/details/83514925
环境:
apache-hive-2.3.3-bin
apache-sentry-2.1.0-bin
尝试将sentry集成到hive中去,启动hiveserver2的时候出现这个错
java.lang.ClassNotFoundException: org.apache.sentry.binding.metastore.SentryMetastorePostEventListener
去sentry的mater分支上查了下,这个类已经废弃掉了;看了下hive-site.xml中hive.metastore.event.listeners这个参数的意思
A comma separated list of Java classes that implement the org.apache.hadoop.hive.metastore.MetaStoreEventListener interface.
The metastore event and corresponding listener method will be invoked in separate JDO transactions. Alternatively, configure
hive.metastore.transactional.event.listeners to ensure both are invoked in same JDO transaction
大致说需要实现org.apache.hadoop.hive.metastore.MetaStoreEventListener这个接口,于是去sentry找了下实现这个接口的类只有一个:org.apache.sentry.binding.metastore.SentrySyncHMSNotificationsPostEventListener,所以hive-site.xml修改如下
vi hive-site.xml
<property>
<name>hive.metastore.event.listeners</name>
<value>org.apache.sentry.binding.metastore.SentrySyncHMSNotificationsPostEventListener</value>
</property>