3

単一の JAR ファイルから、hadoop クラスターでいくつかの map reduce ジョブを実行してきました。JAR の Main は、XML ファイルをコマンド ライン パラメータとして受け入れます。XML ファイルには、各ジョブの入力パスと出力パス (名前と値のプロパティのペア) が含まれており、これらを使用して各 mapreduce ジョブを構成します。次のようにパスを構成にロードできます

    Configuration config = new Configuration(false);
    config.addResource(new FileInputStream(args[0]));

Amazon の Elastic MapReduce を使用して JAR を実行しようとしています。XML ファイルを S3 にアップロードしようとしましたが、もちろん FileInputStream を使用して S3 からパス データをロードすることはできません (FileNotFound Exception)。

EMR を使用する場合、XML ファイルを JAR に渡すにはどうすればよいですか?

(私はブートストラップアクションを見ましたが、私が知る限り、それはhadoop固有の構成を指定することです)。

任意の洞察をいただければ幸いです。ありがとう。

4

1 に答える 1

4

単純なブートストラップ アクションを追加すると、

hadoop fs -copyToLocal s3n://bucket/key.xml /target/path/on/local/filesystem.xml

その後、意図したとおりに /target/path/on/local/filesystem.xml で FileInputStream を開くことができます。ブートストラップ アクションは、クラスター内のすべてのマスター/スレーブ マシンで同時に実行されるため、すべてのマシンにローカル コピーが作成されます。

そのブートストラップ アクションを追加するには、上記のコマンドを含むシェル スクリプト ファイルを作成し、それを S3 にアップロードて、スクリプト ブートストラップ アクション パスとして指定する必要があります。残念ながら、s3 のシェル スクリプトは、現在、許可されているブートストラップ アクションの唯一のタイプです。

于 2012-05-09T03:34:34.983 に答える