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$ 
35
demandé sur Roman Nikitchenko 2012-07-21 19:19:36

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>
57
répondu Vignesh Prajapati 2016-01-24 20:04:12

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:

  1. les autorisations sont conservées sur HDFS.
  2. Vous n'avez pas besoin de sudo.
  3. Vous n'avez pas besoin en fait, l'utilisateur local approprié 'hdfs' du tout.
  4. vous n'avez pas besoin de copier quoi que ce soit ou de modifier les autorisations en raison des points précédents.
47
répondu Roman Nikitchenko 2014-08-28 15:15:29

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 .

14
répondu Donald Miner 2012-07-22 21:01:51

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.

5
répondu Martin Tapp 2014-05-15 12:39:48

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

su hdfs
hadoop fs -put /usr/local/input-data/ /input
exit
3
répondu java_dev 2014-10-10 07:05:48