web-dev-qa-db-fra.com

Comment trouver le répertoire Hadoop hdfs sur mon système?

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.

7
N..

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

11
BruceWayne

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.

1
michael

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.

1
ArifMustafa