gpt4 book ai didi

hadoop - 如何知道通过 script-runner.jar 运行的脚本中的作业流 ID、其他集群参数

转载 作者:可可西里 更新时间:2023-11-01 14:54:07 26 4
gpt4 key购买 nike

我正在使用以下命令行启动弹性 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}。有没有办法知道我的 shell 脚本中的 JOB_FLOW_ID?

另外:有没有办法知道作业流程名称、步骤名称? (目前我将它们作为参数传递,但感觉很老套)

最佳答案

您可以使用 Ruby 脚本代替 Shell 脚本:

#!/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/ 目录中的所有内容都可以通过此接口(interface)访问。

关于hadoop - 如何知道通过 script-runner.jar 运行的脚本中的作业流 ID、其他集群参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22934511/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com