Столкнулся с проблемой при настройке oozie с помощью безопасного кластера MapR

#hadoop #hadoop2 #oozie #mapr

#hadoop #hadoop2 #oozie #mapr

Вопрос:

Мы столкнулись с проблемой при настройке службы oozie с защищенным кластером mapr.

Мы используем установщик MapR для настройки кластера MapR. Ниже приведены конфигурация и шаги, которые мы выполнили.

Версия MapR — 6.1

ОС — Ubuntu 16.04

Аутентификация — Kerberos

Узлы — один узел

  1. Мы включили защиту Mapr, используя Enable Secure Cluster опцию в программе установки.

Справочный документ — https://docs.datafabric.hpe.com/61/AdvancedInstallation/using_enable_secure_cluster_option.html

  1. Мы установили kerberos на компьютере.

Справочный документ — https://linuxconfig.org/how-to-install-kerberos-kdc-server-and-client-on-ubuntu-18-04

  1. Ниже приведены команды, которые мы выполнили для настройки аутентификации kerberos для кластера MapR

Справочные документы — 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
 
  1. Конфигурация Oozie с проверкой подлинности kerberos
    Справочный документ — 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>
 
  1. Мы проверяем статус oozie с помощью bin/oozie admin -status -auth KERBEROS команды, мы получаем сообщение об ошибке ниже.

java.io.IOException: ошибка при подключении сервера Oozie. Нет попыток = 1. Исключение = Не удалось пройти аутентификацию, ошибка аутентификации, статус: 302

Пожалуйста, помогите нам решить эту проблему

Ответ №1:

Oozie — это чертов кошмар в целом. Добавление Kerberos не упростит задачу. Просто говорю.

Проблема, которую вы описываете, заключается в том, что какой-то компонент не получает памятку об используемом вами идентификаторе Kerberos или не имеет доступа / разрешений для проверки доступа. Это распространенная проблема, которая обычно требует пошагового взаимодействия для работы с тем, что известно, а что еще неизвестно (но часто предполагается). Однако я определенно не эксперт по такого рода проблемам.

Здесь у вас есть действительно отличный отчет о проблеме, который может быть использован командой поддержки.

Есть ли у вас активная поддержка или партнер?

Комментарии:

1. Привет, Тед, спасибо за ваши комментарии. У нас есть активный партнер, но от них нет помощи по этому вопросу.

2. Мы должны перейти непосредственно к этому. Вы можете найти мою контактную информацию в открытом доступе. Используйте любой адрес электронной почты, ссылку или адрес Twitter, который вы найдете.