Autorisation refusée à hdfs
Je suis nouveau sur hadoop distributed file system, j'ai fait l'installation complète de hadoop single node sur ma machine.mais après cela, quand je vais télécharger des données sur hdfs, il donne un message d'erreur Permission Denied
.
Message du terminal avec la 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$
5 réponses
J'ai résolu ce problème temporaire en désactivant le dfs permission.By ajout du code de propriété ci-dessous pour 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 quelque peu différente:
HADOOP_USER_NAME=hdfs hdfs dfs -put /root/MyHadoop/file1.txt /
Ce que vous faites réellement est de lire le fichier local conformément à vos autorisations locales, mais lorsque vous placez un fichier sur HDFS, vous êtes authentifié comme user 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 un cas).
Avantages:
- les autorisations sont conservées sur HDFS.
- Vous n'avez pas besoin de
sudo
. - Vous n'avez pas besoin en fait, l'utilisateur local approprié 'hdfs' du tout.
- vous n'avez pas besoin de copier quoi que ce soit ou de modifier les autorisations en raison des points précédents.
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
. Autrement dit, vos autorisations locales sont trop restrictives. Vous devriez 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 corriger cela, 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 que hduser .
Démarrez un shell en tant que hduser (à partir de la racine) et exécutez votre commande
sudo -u hduser bash
hadoop fs -put /usr/local/input-data/ /input
[mise à jour]
Notez également que l'utilisateur hdfs
est le super utilisateur et 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