2012-01-04 9 views
3

なぜ私はdestを指定する必要があるのですか?私がhdfsに入れているファイルは、必ずしも完全にローカルマシン上にあるわけではないので、コマンドでdestを指定するのはどういう意味ですか。hadoop dfs -copyFromLocal src dest

私は、コマンド嘘を経由してコマンドを実行し、その後、私はHDFSに記載されたばかりの私のファイルを見ることができるのHadoopのDFS -lsを行うが、私は後で、その後プロ文法的に

FileSystem fs  = FileSystem.get(conf); 
Path filenamePath = new Path("hello.txt"); 
fs.create(filenamePath); 

を使用してファイルを作成したときにdo hadoop dfs -lsこのファイルが見つかりません。常駐するのに十分な大きさであるかもしれないと私は、次のしている私のコア-site.xmlの中

...

<!-- In: conf/core-site.xml --> 
<property> 
    <name>hadoop.tmp.dir</name> 
    <value>/home/apurv/hadoop/hdfs</value> 
    <description>A base for other temporary directories.</description> 
</property> 

<property> 
    <name>fs.default.name</name> 
    <value>hdfs://localhost:54310</value> 
    <description>The name of the default file system. A URI whose 
    scheme and authority determine the FileSystem implementation. The 
    uri's scheme determines the config property (fs.SCHEME.impl) naming 
    the FileSystem implementation class. The uri's authority is used to 
    determine the host, port, etc. for a filesystem.</description> 
</property> 

直感的にも、それは、コピーされたファイルが存在するん私には意味がありません。単一のマシン。

答えて

2

私たちはそれについて話し合いました。あなたにこれを説明するもう少し時間があります。

FileSystem fs  = FileSystem.get(conf); 
// stuff to create 

が、confオブジェクトの内部で何が重要である:あなたのコード内でこのスニペットを使用する場合は

。何も入れない場合、返されるFileSystemは常にローカルです。

あなたのconfでこれを置く場合:

conf.set("fs.default.name", "hdfs://localhost:54310"); 

を、あなたはその「サーバー」に名前ノードを経由してあなたのHDFSに接続する必要があり、あなたがHDFSに書き込むことができます。

構成にXMLを読み込ませる場合は、#addResource()メソッドを使用する必要があります。ここでのドキュメントへの

ルック: http://hadoop.apache.org/common/docs/current/api/org/apache/hadoop/conf/Configuration.html

使用例は次のようになります。

Configuration conf = new Configuration(); 
conf.addResource(new Path("/usr/local/hadoop/conf/hdfs-site.xml")); 

その後、すべてのあなたのhdfs-site.xmlマッピングがあなたのconf内となります。

これで少し再生すると、本当に直感的です。少なくとも私のため;)

1

FileSystem#Create(Path)は、指定されたパスにストリームを開きます。ファイルが表示される前にストリームを閉じる必要があります。

なぜ私はdestを指定する必要があるのですか?私がhdfsに入れているファイルは、必ずしも完全にローカルマシン上にあるわけではないので、コマンドでdestを指定するのはどういう意味ですか。

正確にはわかりませんが、目的地は目的地を指定しています。

+0

ありがとう、私はこれを理解した。これは、hdfsが私が欠けていた無関係のファイルシステムであるため、このように動作します。 – Apurv

関連する問題