最近、HadoopとMahoutを学び始めました。 Hadoopファイルシステムディレクトリ内のディレクトリへのパスを知りたい。
Hadoop-1.2.1/conf/core-site.xmlで、次のように指定しました。
<property>
<name>hadoop.tmp.dir</name>
<value>/Users/Li/File/Java/hdfstmp</value>
<description>A base for other temporary directories.</description>
</property>
Hadoopファイルシステムには、次のディレクトリがあります。
lis-macbook-pro:Java Li$ hadoop fs -ls
Found 4 items
drwxr-xr-x - Li supergroup 0 2013-11-06 17:25 /user/Li/output
drwxr-xr-x - Li supergroup 0 2013-11-06 17:24 /user/Li/temp
drwxr-xr-x - Li supergroup 0 2013-11-06 14:50 /user/Li/tweets-seq
-rw-r--r-- 1 Li supergroup 1979173 2013-11-05 15:50 /user/Li/u.data
/ user/Li/outputディレクトリはどこですか?
私は試した:
lis-macbook-pro:usr Li$ cd /user/Li/output
-bash: cd: /user/Li/output: No such file or directory
/ user/Li/outputは絶対パスではなく相対パスだと思います。
次に、/ Users/Li/File/Java/hdfstmpで検索します。 2つのフォルダーがあります。
dfs
マップされた
しかし、それでも/ Users/Li/File/Java/hdfstmp内に/ user/Li/outputが見つかりません。
hadoop fs -ls
への最初の呼び出しは、現在のユーザーがHDFSの/user/${user.name}
と呼ばれるディレクトリをルートとする通常の相対ディレクトリリストです。したがって、あなたのhadoop fs -ls
コマンドは、この場所に関連するファイル/ディレクトリをリストしています-あなたの場合は/user/Li/
Abooluteリストを実行してこれをアサートし、コンテンツ/出力の一致を確認できるはずです:hadoop fs -ls /user/Li/
これらのファイルはHDFSにあるため、ローカルファイルシステム上で見つけることができません。それらはクラスターノード全体にブロック(実際のファイルの場合)およびメタデータエントリ(ファイルとディレクトリの場合)としてNameNodeに分散されます。
すべてのファイルは、Hadoop分散ファイルシステムであるhdfsの下にあります。したがって、これらのファイルはファイルシステムまたはディレクトリ構造に存在しません
hdfs内では、これらは次のように保存されます
Path("hdfs://Host:port/file"));
ポートの設定は、hadoop $ HADOOP_HOME/etc/hadoop/core-site.xmlの構成ディレクトリの下のxmlファイルにあります。
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9010</value>
</property>
コマンドラインを使用して、hdfsの下にあるファイルを表示できます
hdfs dfs -ls
基本的なLinuxコマンドはコマンドラインから実行できます
hdfs dfs -<Command>
これの助けを借りて、dir delete fileまたはdirなどを作成することもできます