web-dev-qa-db-fra.com

HDFS_NAMENODE_USER, HDFS_DATANODE_USER et HDFS_SECONDARYNAMENODE_USER non définis

Je suis nouveau sur hadoop.
J'essaie d'installer hadoop sur mon ordinateur portable en mode pseudo-distribué.
Je l’utilise avec l’utilisateur root, mais je reçois l’erreur ci-dessous.

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.

De plus, je dois exécuter hadoop dans l'utilisateur root, étant donné que hadoop n'est pas en mesure d'accéder au service ssh avec un autre utilisateur.
Comment résoudre le même problème? 

7
Sujata Roy

faites juste ce qu'il vous demande:

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"
7
guestasda

Sur la base du premier avertissement, HADOOP_PREFIX, on dirait que vous n'avez pas défini HADOOP_HOME correctement.

Cela serait fait dans votre /etc/profile.d.

hadoop-env.sh est l'endroit où le reste de ces variables sont définies. 

Veuillez vous référer au UNIX Shell Guide

hadoop n'est pas en mesure d'accéder au service ssh avec un autre utilisateur

Cela n'a rien à voir avec Hadoop lui-même. C'est la gestion de compte SSH de base. Tu dois 

  1. Créez les comptes hadoop (et autres comptes similaires) sur toutes les machines d'un cluster (voir la documentation relative à la commande adduser)
  2. Copiez une clé SSH sans mot de passe en utilisant ssh-copy-id hadoop@localhost, par exemple

Si vous n'avez pas besoin du mode distribué et souhaitez simplement utiliser Hadoop localement, vous pouvez utiliser un Mini Cluster .

La documentation recommande également de procéder à l’installation d’un seul nœud avant de continuer à utiliser pseudo-distribué. 

2
cricket_007

La cause première de ce problème, 

  1. hadoop installer pour différents utilisateurs et vous démarrez le service de fil pour différents utilisateurs. OU
  2. dans hadoop config, hadoop-env.sh a spécifié HDFS_NAMENODE_USER et l'utilisateur HDFS_DATANODE_USER est différent.

Nous devons donc le corriger et le rendre cohérent à chaque endroit. Une solution simple à ce problème consiste donc à modifier votre fichier hadoop-env.sh et à ajouter le nom d'utilisateur pour lequel vous souhaitez démarrer le service de fil. Alors allez-y et éditez $HADOOP_HOME/etc/hadoop/hadoop-env.sh en ajoutant les lignes suivantes 

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

Maintenant, enregistrez et démarrez yarn, service hdfs et vérifiez que cela fonctionne.

2
Rajeev Rathor

Vim ${HADOOP_HOME}sbin/start-dfs.sh & ${HADOOP_HOME}sbin/stop-dfs.sh, puis ajoutez:

HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs 
HDFS_NAMENODE_USER=root 
HDFS_SECONDARYNAMENODE_USER=root 
0
bxtx999