AWS EMR step을 이용한 Spark Batch 작업
📅 July 02, 2017
•⏱️1 min read
AWS EMR은 특정 작업을 등록할 수 있는 step 이라는 기능을 제공합니다. 예를 들어 매일 새벽에 클러스터에서 돌려야하는 Batch 작업이 있다면 step과 스케줄러를 통해 쉽게 해결할 수 있습니다.
EMR Step
Step은 AWS console 내에서 추가해도 되지만, AWS-Cli를 이용해서 등록해보도록 하겠습니다. AWS-Cli로 등록하면 이후에 스크립트로 활용할 수도 있다는 편리함이 있습니다.
AWS EMR step을 등록하는 방법은 아래와 같습니다. 가독성을 위해 줄바꿈, 띄어쓰기를 했지만 실제로 등록할 때는 전부 붙이셔야 합니다.
$ aws emr add-steps
--cluster-id $CLUSTERID,
--steps Name=$JOBNAME,
Jar=$JARFILE,
Args=[
/usr/lib/spark/bin/spark-submit,
--deploy-mode,client,
--properties-file,/etc/spark/conf/spark-defaults.conf,
--conf,spark.yarn.executor.memoryOverhead=2048,
--conf,spark.executor.memory=4g,
--packages,$SPARK_PACKAGES
],
ActionOnFailure=${ACTION_ON_FAIL}'
Spark 작업 실행은 Spark-submit
을 이용하여 클라이언트에 배포하는 형식입니다.
이를 위해 jar 파일이 클라이언트의 로컬 경로에 포함되어 있어야 합니다.
ActionOnFailure를 통해 실패 시 Terminate, Stop 등의 옵션을 지정할 수 있습니다.
만약 등록한 작업을 취소하고 싶다면, cancel-steps
를 이용하시면 됩니다.
$ aws emr cancel-steps ...
Spark 작업이 주기적으로 실행되어야 한다면, 가장 간단한 방법은 위의 EMR step 등록 스크립트를 crontab으로 등록하는 것 입니다. 만약 작업이 다양하고 복잡하다면, AWS Data Pipeline 이라는 제품을 고려해보는 것도 방법입니다. https://aws.amazon.com/ko/datapipeline/details/
Reference
- http://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-spark-submit-step.html
- http://docs.aws.amazon.com/emr/latest/ManagementGuide/emr-work-with-steps.html