web-dev-qa-db-fra.com

Autorisation refusée sur hdfs

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$ 
38
Vignesh Prajapati

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>
62
Vignesh Prajapati

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:

  1. Les autorisations sont conservées sur HDFS.
  2. Vous n'avez pas besoin de Sudo.
  3. Vous n'avez pas du tout besoin d'un utilisateur local 'hdfs' réellement approprié.
  4. Vous n'avez pas besoin de copier quoi que ce soit ou de modifier les autorisations en raison des points précédents.
50
Roman Nikitchenko

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 puten tant qu’utilisateurdus.

14
Donald Miner

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.

5
Martin Tapp

J'ai résolu ce problème en utilisant les étapes suivantes

su hdfs
hadoop fs -put /usr/local/input-data/ /input
exit
4
java_dev