9

mrjob を使用して Amazon の Elastic MapReduce で Python コードを実行すると、EMR イメージの numpy と scipy をアップグレードする方法が見つかりました。

コンソールから実行すると、次のコマンドが機能します。

    tar -cvf py_bundle.tar mymain.py Utils.py numpy-1.6.1.tar.gz scipy-0.9.0.tar.gz

    gzip py_bundle.tar 

    python my_mapper.py -r emr --python-archive py_bundle.tar.gz --bootstrap-python-package numpy-1.6.1.tar.gz --bootstrap-python-package scipy-0.9.0.tar.gz > output.txt 

これにより、最新の numpy と scipy がイメージに正常にブートストラップされ、完全に機能します。私の質問は速度の問題です。これは、小さなインスタンスにインストールするのに 21 分かかります。

numpy と scipy をアップグレードするプロセスをスピードアップする方法を知っている人はいますか?

4

2 に答える 2

5

EMR イメージに対して何かを行う唯一の方法は、ブートストラップ アクションを使用することです。コンソールからこれを行うということは、処理を行うタスク ノードではなく、マスター ノードのみを変更することを意味します。ブートストラップ アクションは、起動時にすべてのノードで 1 回実行され、シェルで実行される単純なスクリプトにすることができます。

elastic-mapreduce --create --bootstrap-action "s3://bucket/path/to/script" ...

EMR イメージへの変更を高速化するには、インストール後のファイルを tar して S3 にアップロードします。次に、ブートストラップ アクションを使用してダウンロードおよび展開します。32 ビット (マイクロ、スモール、ミディアム) マシンと 64 ビット マシン用に別々のアーカイブを保持する必要があります。

スクリプトで S3 からダウンロードするコマンドは次のとおりです。

hadoop fs -get s3://bucket/path/to/archive /tmp/archive
于 2012-06-07T02:20:05.107 に答える
3

この質問に対する現在の答えは、NumPy がすでに EMR にインストールされているということです。

NumPy を利用可能なバージョンよりも新しいバージョンに更新する場合は、(ブートストラップ アクションとして) 実行するスクリプトを実行できますsudo yum -y install numpy。NumPy はすぐにインストールされます。

于 2015-04-01T04:10:05.597 に答える