J'utilise Cloudera sur une machine VM avec laquelle je joue. Malheureusement, je ne parviens pas à copier les données sur le HDFS. Je reçois le message suivant:
[cloudera@localhost ~]$ hadoop fs -mkdir input
mkdir: Permission denied: user=cloudera, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
Je ne suis pas trop préoccupé par la sécurité sur cette machine virtuelle. Y a-t-il un moyen de renforcer la sécurité sur HDFS?
L'utilisation de mkdir
dans hadoop nécessite les "autorisations de fichier hadoop". Dans votre exemple, vous pouvez voir que hdfs est un utilisateur autorisé à créer des dossiers. Donc si vous courez:
Sudo -u hdfs hadoop fs -mkdir /import
alors le dossier import
sera créé. Si vous voulez changer le propriétaire de ce dossier, lancez:
Sudo -u hdfs hadoop fs -chown new_user /import
Maintenant, new_user peut manipuler des fichiers dans le dossier import
Lorsque vous exécutez la commande ci-dessus, si le répertoire personnel hdfs (/ utilisateur/cloudera) n’est pas présent, ce répertoire sera créé en premier, puis l’entrée du répertoire sera créée sous/utilisateur/cloudera
Pour donner la permission à l'utilisateur cloudera de créer son propre répertoire, vous devez donner la permission. hdfs user est l'utilisateur admin dans hdfs, passez à hdfs puis exécutez la commande suivante
[hdfs@localhost~]$ hadoop fs -mkdir /user/cloudera ; hadoop fs -chmod 777 /user/cloudera
Ou
si vous n'êtes pas trop préoccupé par la sécurité hdfs, désactivez l'autorisation hdfs en définissant la propriété ci-dessous sur false dans hdfs-site.xml
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
après avoir défini cette propriété sur false, il est nécessaire de redémarrer hdfs.
Dans Cloudera Manager, vous pouvez modifier les paramètres: hdfs-> configuration-> afficher & modifier, décocher la case Vérifier les autorisations HDFS dfs.permissions et redémarrer le hdfs.
J'ai résolu le problème en créant un super-groupe dans /etc/group
et en mettant à jour les connexions de l'utilisateur. Je veux dire que l'utilisateur devrait faire partie du super-groupe HDFS pour avoir accès à l'écriture sur HDFS.
$vi /etc/group
supergroup:x:30000:root
Plus tard, a été capable d'écrire sur HDFS. J'espère que ça aide