Sentry无法在HDFS文件和Hive表之间同步ACL

时间:2019-06-30 04:42:17

标签: java hdfs thrift apache-sentry

Sentry无法将HIVE表访问控制列表的完整图像快照发送到HDFS,因此HDFS acl和hive表acl不同步。

我正在运行Cloudera CDH 5.14.2,其中包含哨兵1.5.1和hadoop 2.6.0。 我已启用Sentry和ACL与HDFS同步。 最近,我们重新启动集群以刷新hdfs log4j中的某些配置,但是,在系统返回后,我们发现hive表和hdfs文件之间的acl不同步。

然后,我们回滚log4j配置并再次重新启动集群,但是,hive表和hdfs文件之间的acl仍然不同步。

经过一些调查,我们发现它可能是由Hive中的大量分区和表引起的(实际上,Hive中有数百万个表和分区)是根据sentry-2183得出的。因此,我们将元存储服务器的hive-site.xml文件中的sendry.hdfs.service.client.server.rpc-connection-timeout配置更改为1800000,但这是行不通的。

我们注意到在岗哨和hdfs日志中有警告和错误消息。 在哨兵日志中,它显示有关以下内容的警告 “ WARN org.apache.thrift.transport.TIOStreamTransport:关闭输出流时出错。java.net.SocketException:套接字已关闭”

在HDFS中,它显示错误

“错误orgapache.sentry.core.common.transport.RetryClientInvocationHandler:无法执行getAllUpdateFrom java.lang.reflect.InvocationTargetException”,原因是 “ org.apache.thrift.transport.TTransportException:java.net.SocketTimeoutExcpetion:读取超时”

enter image description here

有什么想法吗?

1 个答案:

答案 0 :(得分:-1)

我们有相当多的Hadoop集群,并且面临同样的问题。 在本例中,我们为哨兵数据库重建事后索引。这会有所帮助。 使用btree(“ AUTHZ_OBJ_ID”)在“ AUTHZ_PATH”上创建索引“ AUTHZ_PATH_FK_IDX”;

根据Cloudera手册: 甲骨文: 在“ AUTHZ_PATH”(“ AUTHZ_OBJ_ID”)上创建索引“ AUTHZ_PATH_FK_IDX”; Apache Derby: 在AUTHZ_PATH上创建索引AUTHZ_PATH_FK_IDX(AUTHZ_OBJ_ID); IBM Db2: 在AUTHZ_PATH上创建索引AUTHZ_PATH_FK_IDX(AUTHZ_OBJ_ID);

https://www.cloudera.com/documentation/enterprise/release-notes/topics/cdh_rn_sentry_ki.html