1

Hadoop ストリーミングを使用して実行可能ファイルをマップ プロセスとして実行するユース ケースがあります。入力側には、多数のシーケンス ファイルがあります。各 seq ファイルには、浮動小数点配列のリストである 8 つのキーと対応する値があります。1 つの map プロセスで 1 つの seq ファイルを処理する代わりに、seq ファイルのグループを 1 つの map プロセスに割り当てることを好みます。したがって、これらすべての seq ファイルを 1 つの大きなファイルにマージすることにしました。この大きな seq ファイルが 50,000 個の小さな seq ファイルで構成されているとします。

  1. seq ファイルの一部を各マップ プロセスに割り当てるように Hadoop ストリーミング ユーティリティを構成することはできますか?

  2. 各マップ プロセスで、処理が必要なファイル名のリストを取得するにはどうすればよいですか? マップ実行可能ファイルでこれらの情報を取得するにはどうすればよいですか? 実行可能ファイルは、stdin を処理するように設計された単純な groovy スクリプトです。そのような場合、標準入力がどのように見えるか (キーと値のペアを決定する方法とその内容) または、シーケンス ファイルをマージしたため、それらは 1 つの大きなファイルになり、個々の ID が失われました。ファイル名とシーケンスファイルのキー/値の束で遊ぶ必要がありますか?

  3. この大きな seq ファイルにはキーと値があり、キーはファイル名で、値はそのファイルの内容であり、8 つのキーと対応する値が含まれていると思いますか? この場合、hadoop が可能なマップの数に応じてこの大きなファイルを分割すると (私のクラスターで 10 個のマップが可能であるとします)、各マップは約 5000 個のキーと対応する値を取得しますか? 次に、マップ exec でこれらのキーと値にアクセスするにはどうすればよいでしょうか?

どんなヒントでも大いに役立ちます

4

0 に答える 0