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