[不看会报错]-Atlas开启准备工作
# 一、HBase 权限准备(Atlas 首要依赖)
Atlas 开启 Kerberos 后,最先暴露的问题通常是 向 HBase 写入元数据失败。
因此,第一件事就是给 Atlas 主体分配 HBase 权限。
操作说明
执行 HBase 授权前,需要先用 hbase.service.keytab 完成 kinit。
# 1、初始化 HBase 身份凭证
kinit -kt /etc/security/keytabs/hbase.service.keytab hbase/dev1@TTBIGDATA.COM
echo "grant 'atlas','RWXCA','@default'" | hbase shell -n
1
2
2
授权后 Atlas 才能正常向 HBase 写入实体、类型、关系等元数据。
如果权限缺失,将触发:
- Atlas 启动失败
- 无法写入实体
- HBase 返回权限不足(AccessDeniedException)
更多报错可参考:
# 二、修复 Solr 访问 401(Atlas 搜索能力依赖)
完成 HBase 权限后,Atlas 会继续初始化搜索索引。 此时如果出现 Solr 401 Unauthorized,说明 Solr 的 HTTPClient 还未启用 Kerberos。
相关排查请参考:
# 1、修改 atlas-env.sh,开启 Solr Kerberos HTTPClient
找到 Ambari 模板:
/usr/bigtop/current/atlas-server/conf/atlas-env.sh
1
在启用 Kerberos 的区块中加入:
{% if security_enabled %}
export ATLAS_OPTS="{{metadata_opts}} \
-Dzookeeper.sasl.client.username={{zk_principal_user}} \
-Djava.security.auth.login.config={{atlas_jaas_file}} \
-Dsolr.kerberos.jaas.appname=Client \
-Djavax.security.auth.useSubjectCredsOnly=false \
-Dsolr.httpclient.builder.factory=org.apache.solr.client.solrj.impl.Krb5HttpClientBuilder \
-Dsun.security.krb5.debug=true"
{% else %}
export ATLAS_OPTS="{{metadata_opts}}"
{% endif %}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
版本提示
若 Atlas 使用 2.2.1 及以上版本,此段配置已经在 Ambari 中适配,无需重复添加。
# 三、Kafka 授权(Atlas Hook 通道必备)
Atlas 的 Hook 依赖 Kafka 完成通知分发:
- Hive Hook → Kafka → Atlas
- HBase Hook → Kafka → Atlas
因此若 Kafka ACL 未配置,Atlas 会报:
- GroupAuthorizationException
- TopicAuthorizationException
下面三步是启用 Kerberos 后必做的 ACL 授权。
# 1、授权消费组权限(Group)
./kafka-acls.sh \
--authorizer-properties zookeeper.connect=dev1:2181,dev2:2181,dev3:2181 \
--add --allow-principal "User:atlas" \
--group atlas --operation Read --operation Describe --resource-pattern-type LITERAL
1
2
3
4
2
3
4
# 2、授权 Topic 消费权限(ATLAS_HOOK)
./kafka-acls.sh \
--authorizer-properties zookeeper.connect=dev1:2181,dev2:2181,dev3:2181 \
--add --allow-principal "User:atlas" \
--topic ATLAS_HOOK --operation Read --operation Describe --resource-pattern-type LITERAL
1
2
3
4
2
3
4
# 3、授权 Topic 写入权限(ATLAS_ENTITIES)
./kafka-acls.sh \
--authorizer-properties zookeeper.connect=dev1:2181,dev2:2181,dev3:2181 \
--add --allow-principal "User:atlas" \
--topic ATLAS_ENTITIES --operation Write --operation Describe --resource-pattern-type LITERAL
1
2
3
4
2
3
4
Kafka 相关报错分析可参考:
- 03
- Ranger Admin 证书快速导入脚本02-15