Я успешно настроил кластер HDP 2.2 (1 NM, 3 DN и 1 клиент). Учетные записи пользователей для доступа к кластеру HDP создаются в клиенте и проверяются, что эти пользователи могут отправлять задания по SSH на клиентский узел и запускать образцы заданий.
На следующем шаге я включил аутентификацию Kerberos и создал участников-пользователей, соответствующих пользователям в клиенте. Все прошло как положено. Затем я подключаюсь по SSH к клиентскому ПК в качестве пользователя, генерирую kinit билета Kerberos, затем я пытался запустить образец задания, но отправка задания завершилась неудачно: user <user name> not found
сообщение.
Нужно ли мне создавать пользователя на всех узлах кластера, чтобы выполнить задание в качестве пользователя в кластере Secure HDP?
Коротко:
Да, при запуске Hadoop с Kerberos аутентифицированный пользователь должен существовать в файле passwd (или в эквивалентном каталоге пользователя, таком как LDAP) на каждом узле, где запускается TaskTracker (MRv1) или YARN nodemanager.
Для MRv1 TaskTracker запускает программу, называемую контроллером задач, перед запуском каждой задачи. Контроллер задач - это корневой инструмент setuid, который позволяет сопоставленному пользователю изменять пользователя времени выполнения задачи. Думайте об этом как об эквиваленте TaskTracker, выполняющего
sudo -u youruser /usr/bin/java yourtask
Если пользователя не удается найти в файле passwd, тогда контроллер задач не может завершить переключение на этого пользователя, что приведет к сбою.
Пряжа имеет похожий механизм.
В отсутствие защищенного кластера TaskTracker НЕ использует его. Вместо этого задача фактически запускается от имени сопоставленного пользователя на каждом узле, но JobTracker сообщает об этом как об отправившем пользователе.
На этом этапе у вас есть следующие варианты:
Вы не упоминаете, какой дистрибутив вы используете, поэтому трудно указать вам дальше этого.