Comment trouver le répertoire Hadoop HDFS sur mon système? J'ai besoin de cela pour exécuter la commande suivante -
hadoop dfs -copyFromLocal <local-dir> <hdfs-dir>
Dans cette commande, je ne connais pas mon répertoire hdfs.
Je ne sais pas si c'est utile ou non, mais j'ai exécuté la commande suivante et obtenu cette sortie -
hdfs dfs -ls
-rw-r--r-- 3 popeye hdfs 127162942 2016-04-01 19:47 .
Dans hdfs-site.xml, j'ai trouvé l'entrée suivante -
<property>
<name>dfs.datanode.data.dir</name>
<value>/hadoop/hdfs/data</value>
<final>true</final>
</property>
J'ai essayé d'exécuter la commande suivante mais cela donne une erreur -
[root@sandbox try]# hdfs dfs -copyFromLocal 1987.csv /hadoop/hdfs/data
copyFromLocal: `/hadoop/hdfs/data': No such file or directory
Pour info - je fais tout cela sur le sandbox hortonworks sur le serveur Azure.
Votre approche est fausse ou peut-être la compréhension est fausse
dfs.datanode.data.dir
, est l'endroit où vous souhaitez stocker vos blocs de données
Si vous tapez hdfs dfs -ls /
vous obtiendrez la liste des répertoires en hdfs. Ensuite, vous pouvez transférer des fichiers du local vers le hdfs en utilisant -copyFromLocal
ou -put
dans un répertoire particulier ou en utilisant -mkdir
vous pouvez créer un nouveau répertoire
Référez-vous au lien ci-dessous pour plus d'informations
http://hadoop.Apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html
Si vous exécutez:
hdfs dfs -copyFromLocal foo.txt bar.txt
le fichier local foo.txt sera copié dans votre propre répertoire hdfs /user/popeye/bar.txt
(où popeye
est votre nom d'utilisateur.) Par conséquent, ce qui suit obtient le même résultat:
hdfs dfs -copyFromLocal foo.txt /user/popeye/bar.txt
Avant de copier un fichier dans hdfs, assurez-vous de créer d'abord le répertoire parent. Vous n'avez pas besoin de mettre des fichiers dans ce répertoire "home", mais (1) mieux pour ne pas encombrer "/" avec toutes sortes de fichiers, et (2) suivre cette convention aidera à éviter les conflits avec d'autres utilisateurs.
Selon la première réponse, je l'élabore en détail pour Hadoop 1.x
-
Supposons que vous exécutez ce script sur un pseudo modèle de distribution, vous obtiendrez probablement une ou deux listes d'utilisateurs (NameNodes) illustrées -
sur notre modèle de distribution complète, vous avez d'abord les droits d'administrateur pour effectuer ces choses et il y aura N nombre de liste de NameNodes (utilisateurs).
Alors maintenant, nous passons à notre point -
Accédez d'abord à votre répertoire personnel Hadoop et à partir de là, exécutez ce script -
bin/hadoop fs -ls /
Le résultat sera comme ça -
drwxr-xr-x - xuiob78126arif supergroup 0 2017-11-30 11:20 /user
alors ici xuiob78126arif
est mon nœud de nom (maître/utilisateur) et le répertoire NameNode (utilisateur) est -
/user/xuiob78126arif/
vous pouvez maintenant accéder à votre navigateur et rechercher l'adresse -
http://xuiob78126arif:50070
et à partir de là, vous pouvez obtenir le Cluster Summary, NameNode Storage
, etc.
Remarque: le script ne fournira des résultats que dans une seule condition, si au moins un fichier ou un répertoire existe dans DataNode, sinon vous obtiendrez -
ls: Cannot access .: No such file or directory.
donc, dans ce cas, vous mettez d'abord un fichier par bin/hadoop fs -put <source file full path>
et là après exécuter le bin/hadoop fs -ls /
script.
et maintenant j'espère que vous en avez un peu sur votre problème, merci.