【发布时间】:2021-01-18 09:14:17
【问题描述】:
我们在使用安全的 mapr 集群设置 oozie 服务时遇到问题。
我们正在使用 MapR 安装程序来设置 MapR 集群。以下是我们遵循的配置和步骤。
MapR 版本 - 6.1
操作系统 - Ubuntu 16.04
身份验证 - Kerberos
节点 - 单个节点
- 我们使用安装程序中的
Enable Secure Cluster选项启用了 Mapr 安全性。
参考文档 - https://docs.datafabric.hpe.com/61/AdvancedInstallation/using_enable_secure_cluster_option.html
- 我们已经在机器中安装了 kerberos。
参考文档 - https://linuxconfig.org/how-to-install-kerberos-kdc-server-and-client-on-ubuntu-18-04
- 以下是我们为设置 MapR 集群的 kerberos 身份验证而执行的命令
参考文档 - https://docs.datafabric.hpe.com/61/SecurityGuide/Configuring-Kerberos-User-Authentication.html https://docs.datafabric.hpe.com/61/SecurityGuide/ConfiguringSPNEGOonMapR.html
sudo kadmin.local
addprinc -randkey mapr/my.cluster.com
ktadd -k /opt/mapr/conf/mapr.keytab mapr/my.cluster.com
addprinc -randkey HTTP/<instance-name>@<realm-name>
ktadd -k /opt/mapr/conf/http.keytab HTTP/<instance-name>@<realm-name>
addprinc -randkey mapr/<instance-name>@<realm-name>
ktadd -k /opt/mapr/conf/mapr2.keytab mapr/<instance-name>@<realm-name>
sudo chown mapr:mapr /opt/mapr/conf/mapr.keytab /opt/mapr/conf/http.keytab /opt/mapr/conf/mapr2.keytab
sudo chmod 777 /opt/mapr/conf/mapr.keytab /opt/mapr/conf/http.keytab /opt/mapr/conf/mapr2.keytab
ktutil
rkt /opt/mapr/conf/mapr.keytab
rkt /opt/mapr/conf/http.keytab
rkt /opt/mapr/conf/mapr2.keytab
wkt /opt/mapr/conf/mapr.keytab
sudo /opt/mapr/server/configure.sh -N my.cluster.com -C <CLDB Node>:7222 -Z <ZookeeperNode>:5181 -K -P "mapr/my.cluster.com@<realm-name>"
注意:
文档中提到的命令(configure.sh -K -P "<cldbPrincipal>")会抛出错误,但上述命令有效。
kinit
maprlogin kerberos
hadoop fs -ls
3.1 ) 我们可以访问 mapr 文件系统。
3.2) 我们正在使用以下命令运行一个简单的 mapreduce 作业,它运行良好。
hadoop jar /opt/mapr/hadoop/hadoop-2.7.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.0-mapr-1808.jar pi 16 1000
- 带有 kerberos 身份验证的 Oozie 配置 参考文档 - https://docs.datafabric.hpe.com/61/Oozie/ConfiguringOozieonaSecureCluster.html
我们在 oozie-site.xml 中添加了以下属性
<property>
<name>oozie.authentication.type</name>
<value>kerberos</value>
<description>
Defines authentication used for Oozie HTTP endpoint.
Supported values are: simple | kerberos | #AUTHENTICATION_HANDLER_CLASSNAME#
</description>
</property>
<property>
<name>oozie.service.HadoopAccessorService.keytab.file</name>
<value>/opt/mapr/conf/mapr.keytab</value>
<description>
Location of the Oozie user keytab file.
</description>
</property>
<property>
<name>local.realm</name>
<value>{local.realm}</value>
<description>
Kerberos Realm used by Oozie and Hadoop. Using 'local.realm' aligns with Hadoop configuration
</description>
</property>
<property>
<name>oozie.service.HadoopAccessorService.kerberos.principal</name>
<value>mapr/<hostname>@${local.realm}</value>
<description>
Kerberos principal for Oozie service.
</description>
</property>
<property>
<name>oozie.authentication.kerberos.principal</name>
<value>HTTP/<hostname>@${local.realm}</value>
<description>
Indicates the Kerberos principal to be used for the HTTP endpoint. The principal MUST start with 'HTTP/' per the Kerberos HTTP SPNEGO specification.
</description>
</property>
- 我们正在使用
bin/oozie admin -status -auth KERBEROS命令检查 oozie 状态,我们遇到以下错误。
java.io.IOException:连接 Oozie 服务器时出错。重试次数 = 1。异常 = 无法验证,验证失败,状态:302
请帮助我们解决此问题
【问题讨论】: