【发布时间】:2017-01-21 01:35:20
【问题描述】:
我们使用 yarn 在 dataproc 集群上运行 spark 作业 - 我们还在 python 中有一个包装程序,它不断轮询作业的状态,并且我们正在监视来自 yarn 的作业状态 - 如下所示:
dataproc = discovery.build('dataproc', 'v1', credentials=credentials)
job_id = '8873a82c-6201-48d4-8ad3-d8f236ef9c49'
projectId='dev-111111'
REGION = 'global'
result = dataproc.projects().regions().jobs().get(projectId=projectId,region=REGION,jobId=job_id).execute()
print result['yarnApplications'][0]['state']
按照 google dataproc 的文档 here 的建议
上面的“结果”是一个 JSON 对象,在 JSON 对象中有一个名为“yarnApplications”的字段,它是一个列表对象,其第一个也是唯一的元素包含我们感兴趣的作业状态。
问题是 - 为什么这个“yarnApplications”对象总是一个列表对象,即使我们只运行一个纱线作业?我们已经看到 yarn 多次尝试启动作业的情况——“yarnApplications”字段在这种情况下会包含多个元素吗?
另外,如果我们只在纱线上运行一项作业,“yarnApplications”列表对象将只包含一个元素,是否可以保证?
我们知道这只是 dataproc 客户端的测试版 - 但由于我们有生产系统在其上运行,因此非常感谢任何意见和建议。
谢谢
【问题讨论】: