HDFS_NAMENODE_USER, HDFS_DATANODE_USER и HDFS_SECONDARYNAMENODE_USER не определены

Я новичок в Hadoop.
Я пытаюсь установить Hadoop на своем ноутбуке в псевдораспределенном режиме.
Я запускаю его под пользователем root, но получаю следующую ошибку.

root@debdutta-Lenovo-G50-80:~# $HADOOP_PREFIX/sbin/start-dfs.sh
WARNING: HADOOP_PREFIX has been replaced by HADOOP_HOME. Using value of HADOOP_PREFIX.
Starting namenodes on [localhost]
ERROR: Attempting to operate on hdfs namenode as root
ERROR: but there is no HDFS_NAMENODE_USER defined. 
Aborting operation.
Starting datanodes
ERROR: Attempting to operate on hdfs datanode as root
ERROR: but there is no HDFS_DATANODE_USER defined. 
Aborting operation.
Starting secondary namenodes [debdutta-Lenovo-G50-80]
ERROR: Attempting to operate on hdfs secondarynamenode as root
ERROR: but there is no HDFS_SECONDARYNAMENODE_USER defined. Aborting operation.
WARNING: HADOOP_PREFIX has been replaced by  HADOOP_HOME. Using value of HADOOP_PREFIX.

Кроме того, мне приходится запускать Hadoop от имени пользователя root, так как Hadoop не может получить доступ к сервису ssh от другого пользователя.
Как исправить то же самое?


person Sujata Roy    schedule 06.01.2018    source источник
comment
Пожалуйста, отредактируйте свой вопрос, чтобы уточнить, как вы установили Hadoop. Вы читаете официальную документацию?   -  person OneCricketeer    schedule 07.01.2018
comment
ниже приведена ссылка, которой я следую, чтобы установить hadoop.   -  person Sujata Roy    schedule 07.01.2018
comment
dzone.com/articles/getting-hadoop-and-running   -  person Sujata Roy    schedule 07.01.2018
comment
Этой статье 4 года, так что это не Hadoop 3. Все сценарии запуска изменены   -  person OneCricketeer    schedule 07.01.2018


Ответы (5)


просто делай то, что он просит:

export HDFS_NAMENODE_USER="root"
export HDFS_DATANODE_USER="root"
export HDFS_SECONDARYNAMENODE_USER="root"
export YARN_RESOURCEMANAGER_USER="root"
export YARN_NODEMANAGER_USER="root"
person guestasda    schedule 09.01.2018
comment
Это работает. Но каждый раз, когда я закрываю терминал, я теряю значения. Мне пришлось заново запускать всю команду экспорта. - person Sujata Roy; 16.01.2018
comment
Добавьте все эти команды в файл hadoop-env.sh, и все будет готово! - person Avik Aggarwal; 16.10.2018

Основная причина этой проблемы,

  1. Hadoop устанавливает для другого пользователя, и вы запускаете службу пряжи для другого пользователя. ИЛИ ЖЕ
  2. в конфигурации hadoop в файле hadoop-env.sh указан HDFS_NAMENODE_USER, а пользователь HDFS_DATANODE_USER — это что-то другое.

Следовательно, нам нужно исправить и сделать его последовательным во всех местах. Таким образом, простое решение этой проблемы — отредактировать файл hadoop-env.sh и добавить имя пользователя, для которого вы хотите запустить службу пряжи. Итак, продолжайте и отредактируйте $HADOOP_HOME/etc/hadoop/hadoop-env.sh, добавив следующие строки

export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

Теперь сохраните и запустите сервис yarn, hdfs и убедитесь, что он работает.

person Rajeev Rathor    schedule 04.11.2018
comment
убедитесь, что служба ssh запущена и работает, а datanode и namenode должны иметь доступ без пароля. вы можете проверить по ssh IPs/HostName - person Rajeev Rathor; 04.11.2018
comment
Как я могу сделать узлы данных и имена узлов доступными без пароля - person Siddharth Choudhary; 09.12.2018

Судя по первому предупреждению, HADOOP_PREFIX, вы неправильно определили HADOOP_HOME.

Это будет сделано в вашем /etc/profile.d.

hadoop-env.sh — это место, где определяются остальные переменные.

См. Руководство по оболочке UNIX

Hadoop не может получить доступ к ssh-сервису с другим пользователем

Это не имеет ничего общего с самим Hadoop. Это базовое управление учетной записью SSH. Тебе следует

  1. Создайте учетные записи hadoop (и другие, например, yarn) на всех машинах кластера (см. документацию по команде adduser)
  2. Скопируйте беспарольный SSH-ключ, используя, например, ssh-copy-id hadoop@localhost

Если вам не нужен распределенный режим и вы хотите использовать Hadoop локально, вы можете использовать Мини-кластер.

В документации также рекомендуется выполнить установку с одним узлом, прежде чем переходить к псевдораспределенной системе.

person OneCricketeer    schedule 06.01.2018

Vim ${HADOOP_HOME}sbin/start-dfs.sh и ${HADOOP_HOME}sbin/stop-dfs.sh, затем добавьте:

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs 
HDFS_NAMENODE_USER=root 
HDFS_SECONDARYNAMENODE_USER=root 
person bxtx999    schedule 25.04.2018

  1. Проверьте свой pdsh по умолчанию rcmd rsh

pdsh -q -w localhost - должно получиться что-то вроде этого

-- Параметры, специфичные для DSH -- Отдельный stderr/stdout Да Путь предшествует cmd none Добавляется к cmd none Команда: none Полный путь к программе /usr/bin/pdsh Путь к удаленной программе /usr/bin/pdsh

-- Общие параметры -- Локальное имя пользователя enock Локальный uid 1000 Удаленное имя пользователя enock Rcmd type rsh one ^C will kill pdsh Нет Время ожидания подключения (сек) 10 Время ожидания команды (сек) 0 Разветвление 32 Отображение меток имени хоста Да Отладка Нет

-- Целевые узлы -- localhost

  1. Измените файл rcmd по умолчанию для pdsh. Добавьте pdsh в bashrc nano ~/.bashrc -- добавьте эту строку ближе к концу export PDSH_RCMD_TYPE=ssh -- обновите источник ~/.bashrc

Это должно решить вашу проблему

C. sbin/start-dfs.sh

person Kavingwa Keya    schedule 26.09.2020