web-dev-qa-db-ja.com

EMR AWSでの手順の1つとしてシェルスクリプトを実行する

HadoopインフラストラクチャをデータセンターからAWS EMRに移行することを検討しています。 ETLプロセスのタスク/ステージの一部は依存しています。流れは

  1. Map Reduceジョブはデータを生成します
  2. シェルスクリプトは、手順1で生成されたデータを出力場所に移動します

EMRでは、カスタムJar、Pig、Hiveのステップを見つけることができましたが、シェルスクリプトを実行するオプションが見つかりませんでした。これを克服しなければならないいくつかのオプションは、

  • Javaプログラムでシェルスクリプトロジックを記述し、カスタムjarステップを追加できます。
  • ブートストラップアクション。ただし、ステップ1が完了した後にシェルスクリプトを実行することが要件なので、それが役立つかどうかはわかりません。

車輪を再発明するのではなく、EMRまたはAWSから直接利用できる他のオプションが要件を満たす場合、私たちの努力は軽減されます。

4
Free Coder

リンクを参照してください: http://docs.aws.Amazon.com/emr/latest/ReleaseGuide/emr-hadoop-script.html

aws emr create-cluster --name "Test cluster" –-release-label  --applications Name=Hive Name=Pig --use-default-roles --ec2-attributes KeyName=myKey --instance-type m3.xlarge --instance-count 3 --steps Type=CUSTOM_JAR,Name=CustomJAR,ActionOnFailure=CONTINUE,Jar=s3://region.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://mybucket/script-path/my_script.sh"]
4
Kiran Thati

手順を実行してシェルスクリプトを実行する場合は、次のようにcommand-runner.jarを使用して、スクリプトに絶対パスを渡すことができます。

**JAR location** : command-runner.jar
**Arguments** : bash /home/hadoop/script_name.sh or bash /path_to_script/script_name.sh

{
  'Name': 'run_script',
  'ActionOnFailure': 'CANCEL_AND_WAIT',
  'HadoopJarStep': {
     'Jar': 'command-runner.jar',
     'Args': [
           "bash","/home/hadoop/script_name.sh"
     ]
}
0
Dugini Vijay