[HADOOP] script-runner.jar을 통해 실행중인 스크립트의 작업 흐름 ID, 기타 클러스터 매개 변수를 확인하는 방법
HADOOPscript-runner.jar을 통해 실행중인 스크립트의 작업 흐름 ID, 기타 클러스터 매개 변수를 확인하는 방법
다음 명령 줄을 사용하여 탄력적 mapreduce 클러스터를 시작하고 있습니다.
$ elastic-mapreduce \
--create \
--num-instances "${INSTANCES}" \
--instance-type m1.medium \
--ami-version 3.0.4 \
--name "${CLUSTER_NAME}" \
--log-uri "s3://my-bucket/elasticmapreduce/logs" \
--step-name "${STEP_NAME}" \
--step-action TERMINATE_JOB_FLOW \
--jar s3://elasticmapreduce/libs/script-runner/script-runner.jar \
--arg s3://my-bucket/log-parser/code/hadoop-script.sh \
--arg "${CLUSTER_NAME}" \
--arg "${STEP_NAME}" \
--arg s3n://my-bucket/log-parser/input \
--arg s3n://my-bucket/log-parser/output
로그 파일을 포함하는 hadoop-script.sh에서 이메일을 보내려고하지만 s3 : // my-bucket / elasticmapreduce / logs / {JOB_FLOW_ID}에 작성되었습니다. 쉘 스크립트에서 JOB_FLOW_ID를 알 수있는 방법이 있습니까?
또한 작업 흐름 이름, step-name을 알 수있는 방법이 있습니까? (현재는 인수로 전달하지만 해키 느낌)
해결법
-
==============================
1.Shell 스크립트를 사용하는 대신 Ruby 스크립트를 사용할 수 있습니다.
Shell 스크립트를 사용하는 대신 Ruby 스크립트를 사용할 수 있습니다.
#!/usr/bin/ruby require 'json' require 'emr/common' job_flow = Emr::JsonInfoFile.new('job-flow') job_flow_id = job_flow['jobFlowId']
다음과 같은 작업 단계에 대한 정보를 얻을 수도 있습니다.
step_one = Emr::JsonInfoFile.new('steps/1') state = step_one['state']
또는 인스턴스 정보 :
instance_info = Emr::JsonInfoFile.new('instance') is_master = instance_info['isMaster']
기본적으로 / mnt / var / lib / info / 디렉토리의 모든 내용은이 인터페이스를 통해 사용할 수 있습니다.
from https://stackoverflow.com/questions/22934511/how-to-know-job-flow-id-other-cluster-parameters-in-script-running-via-script-r by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] HBase MapReduce 작업에서 기본 공유 라이브러리로드 (0) | 2019.08.12 |
---|---|
[HADOOP] 스레드“main”java.lang.VerifyError 예외 : 피연산자 스택의 잘못된 유형 (0) | 2019.08.11 |
[HADOOP] 하이브 컨텍스트를 사용하여 스파크에서 하이브 테이블을 효율적으로 쿼리하는 방법은 무엇입니까? (0) | 2019.08.11 |
[HADOOP] 하둡 직업이 스스로 죽일 수있는 방법 (0) | 2019.08.11 |
[HADOOP] hadoop mapreduce를 사용하여 중복 제거를위한 키 값 쌍 결정 (0) | 2019.08.11 |