0

HadoopのファイルシステムとしてKFSを使用してmapreduceがどのように発生するかを理解したかったのです。

#。/ bin / start-mapred.sh
map / reduce job / taskトラッカーが起動している場合、すべてのI/OはKFSに対して実行されます。

それで、私の入力ファイルが異なるノード(Kosmosサーバー)に散在していると仮定すると、I(ファイルシステムとしてKFSを使用するhadoopクライアント)はどのようにMapreduceコマンドを発行しますか?

さらに、Mapreduceコマンドを発行した後、hadoopクライアントはすべてのデータを異なるサーバーからローカルマシンにフェッチしてからMapreduceを実行するか、入力ファイルが配置されているマシンでTaskTrackerデーモンを起動します。そこでMapreduceを実行しますか?間違っている場合は修正してください。ただし、Mapreduceの最上位の入力ファイルの場所が関数getFileBlockLocations(FileStatus、long、long)によって返されていると思います。

お手数をおかけしますが、よろしくお願いいたします。

よろしく、ニキル

4

1 に答える 1

1

いいえ。MapReduceは、分散方式ですべてのノードで実行されるプログラムです。マスターノードは、作業の実行を担当するすべてのデータ/スレーブノードのスーパーバイザーのようになります。 図:1

MapReduceタスク

  • MapReduceジョブは通常、入力データセットを独立したチャンクに分割します。これらのチャンクは、マップタスクによって完全に並列に処理されます。

  • フレームワークはマップの出力をソートし、それは次にreduceタスクに入力されます。

  • 通常、ジョブの入力と出力の両方が
    ファイルシステムに保存されます。

  • フレームワークは、タスクのスケジューリングを処理し、それらを監視して
    、失敗したタスクを再実行します。

図:2 図:3 上のfig:3は、MapReduceがノードレベルでどのように発生するかを示しています。

今あなたのKFSについて:

Hadoop map / reduceトラッカーが起動すると、これらのプロセス(ローカルノードとリモートノード)は、KFSのlibkfsClient.soライブラリをロードする必要があります。

このプロセスを簡素化するためlibkfsClient.soに、NFSアクセス可能なディレクトリ(Hadoopバイナリ/スクリプトが保存されている場所と同様)に保存することをお勧めします。次に、Hadoopのconf / hadoop-env.shを変更して、次の行を追加し、次の適切な値を指定します。

<path>:
export LD_LIBRARY_PATH=<path>

このリンクをチェックアウトします:http://hadoop.apache.org/docs/current/api/org/apache/hadoop/fs/kfs/package-summary.html

于 2013-02-22T06:40:39.073 に答える