Je suis nouveau dans le système de fichiers distribué hadoop, j’ai terminé l’installation complète du noeud unique hadoop sur ma machine.mais après cela, lorsque je vais télécharger des données sur hdfs, il donne un message d’erreur Permission Denied
.
Message du terminal avec commande:
hduser@ubuntu:/usr/local/hadoop$ hadoop fs -put /usr/local/input-data/ /input
put: /usr/local/input-data (Permission denied)
hduser@ubuntu:/usr/local/hadoop$
Après avoir utilisé Sudo et ajouté hduser à sudouser:
hduser@ubuntu:/usr/local/hadoop$ Sudo bin/hadoop fs -put /usr/local/input-data/ /inwe
put: org.Apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="":hduser:supergroup:rwxr-xr-x
hduser@ubuntu:/usr/local/hadoop$
J'ai résolu ce problème temporairement en désactivant l'autorisation dfs. En ajoutant ci-dessous le code de propriété à conf/hdfs-site.xml
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
J'ai eu une situation similaire et voici mon approche qui est un peu différente:
HADOOP_USER_NAME=hdfs hdfs dfs -put /root/MyHadoop/file1.txt /
Ce que vous faites en réalité est que vous lisiez le fichier local conformément à vos autorisations locales, mais lorsque vous placez un fichier sur HDFS, vous êtes authentifié comme l'utilisateur hdfs
. Vous pouvez le faire avec un autre ID (méfiez-vous de la configuration réelle des schémas d'authentification, mais ce n'est généralement pas le cas).
Avantages:
Sudo
.Vous rencontrez deux problèmes distincts ici:
hduser@ubuntu:/usr/local/hadoop$ hadoop fs -put /usr/local/input-data/ /input put: /usr/local/input-data (Permission denied)
Ici, l'utilisateur hduser
n'a pas accès au répertoire local /usr/local/input-data
. En d'autres termes, vos autorisations locales sont trop restrictives. Tu devrais le changer.
hduser@ubuntu:/usr/local/hadoop$ Sudo bin/hadoop fs -put /usr/local/input-data/ /inwe put: org.Apache.hadoop.security.AccessControlException: Permission denied: user=root, access=WRITE, inode="":hduser:supergroup:rwxr-xr-x
Ici, l’utilisateur root
(puisque vous utilisez Sudo) n’a pas accès au répertoire HDFS /input
. Comme vous pouvez le voir: hduser:supergroup:rwxr-xr-x
dit que seul hduser
a un accès en écriture. Hadoop ne respecte pas vraiment root
en tant qu'utilisateur spécial.
Pour résoudre ce problème, je vous suggère de modifier les autorisations sur les données locales:
Sudo chmod -R og+rx /usr/local/input-data/
Ensuite, essayez à nouveau la commande put
en tant qu’utilisateurdus.
Lancez un shell en tant qu’utilisateur hd (à partir de la racine) et lancez votre commande
Sudo -u hduser bash
hadoop fs -put /usr/local/input-data/ /input
[update] Notez également que l'utilisateur hdfs
est le super utilisateur et qu'il dispose de tous les privilèges r/w.
J'ai résolu ce problème en utilisant les étapes suivantes
su hdfs
hadoop fs -put /usr/local/input-data/ /input
exit