0

異なるサーバーにある 1 つのマスター ノードと 2 つのデータ ノードがあります。2 つのデータ ノードの場合、それぞれの HDFS にログ ファイルがあります。ここで、Hadoop を実行してマスター ノードでマップ/リデュースを実行したいと考えています。入力は、2 つのデータ ノードの HDFS からの 2 つのログ ファイルである必要があります。これはできますか?可能であれば、入力パスを設定するにはどうすればよいですか? (例: hadoop jar wordcount.jar datanode1/input/logfile1 datanode2/input/logfile2 output ...このように?) 異なるサーバーにある異なるデータノードの HDFS からの入力は可能ですか?

4

1 に答える 1

1

Hadoopといえば、独自の HDFS に勝るものはありません。HDFS は分散FS であり、単一の FS として機能する Hadoop クラスター内のすべてのマシンに分散されます。

両方のファイルを 1 つの HDFS ディレクトリに配置し、このディレクトリを MapReduce ジョブへの入力として指定するだけです。

FileInputFormat.addInputPath(job, new Path("/path/to/the/input/directory"));

MapReduce ジョブについても同じことが言えます。ジョブを JobTracker に送信しますが、ジョブは実際には、処理するデータが存在するクラスターのすべてのノードで分散方式で実行されます。

ああ、もう 1 つ... HDFS のファイルは、特定のマシンに全体として保存されるわけではありません。これは 64MB (構成可能) の小さなブロックに分割され、これらのブロックはクラスター全体でランダムに異なるマシンに保存されます。

于 2013-07-10T03:09:49.407 に答える