来自 dataproc 客户端的纱线状态 - 为什么它总是一个列表对象?
yarn status from dataproc client - why is it always a list object?
我们在带有 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
上面的 "result" 是一个 JSON 对象,在 JSON 对象中有一个名为 "yarnApplications" 的字段,它是一个列表对象,其第一个也是唯一一个元素包含我们感兴趣的工作状态。
问题是 - 为什么这个 "yarnApplications" 对象总是一个列表对象,即使我们只有一个 yarn 作业 运行ning?我们已经看到 yarn 多次尝试启动作业的情况——在这种情况下 "yarnApplications" 字段会包含多个元素吗?
此外,是否可以保证 - 如果我们在 yarn 上只有一项工作 运行ning,"yarnApplications" 列表对象将只包含一个元素?
我们知道这只是 dataproc 客户端的测试版 - 但由于我们有生产系统 运行ning,因此我们将不胜感激任何意见和建议。
谢谢
根据 Dataproc API job definition, jobs contain a "collection" of YarnApplications, and in general this definition can't change it's type based on the runtime contents. For example, the Java interface for Job.getYarnApplications()
returns a java.util.List,无论列表是否恰好只有一个元素、零个或多个元素。
此 API 定义旨在适应各种作业类型,这些作业类型可能会为每个作业提交多个 YARN 应用程序,例如 Hive 或 Pig。在某些情况下,Hadoop jarfiles 也会提交多个作业,例如,如果驱动程序是 Apache C运行ch 程序,或者您 运行 Gridmix。
你确实可以保证,如果你在 YARN 中只有一份工作 运行ning,那么列表对象将只包含一个元素;列表中的 YARN 应用程序只是由给定的 Job 调用创建的应用程序。即使您 运行 同时有多个 Dataproc 作业,每个作业提交不同的并发 YARN 应用程序,每个作业也只会包含该作业自己提交的特定 YARN 应用程序。
我们在带有 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
上面的 "result" 是一个 JSON 对象,在 JSON 对象中有一个名为 "yarnApplications" 的字段,它是一个列表对象,其第一个也是唯一一个元素包含我们感兴趣的工作状态。
问题是 - 为什么这个 "yarnApplications" 对象总是一个列表对象,即使我们只有一个 yarn 作业 运行ning?我们已经看到 yarn 多次尝试启动作业的情况——在这种情况下 "yarnApplications" 字段会包含多个元素吗?
此外,是否可以保证 - 如果我们在 yarn 上只有一项工作 运行ning,"yarnApplications" 列表对象将只包含一个元素?
我们知道这只是 dataproc 客户端的测试版 - 但由于我们有生产系统 运行ning,因此我们将不胜感激任何意见和建议。
谢谢
根据 Dataproc API job definition, jobs contain a "collection" of YarnApplications, and in general this definition can't change it's type based on the runtime contents. For example, the Java interface for Job.getYarnApplications()
returns a java.util.List,无论列表是否恰好只有一个元素、零个或多个元素。
此 API 定义旨在适应各种作业类型,这些作业类型可能会为每个作业提交多个 YARN 应用程序,例如 Hive 或 Pig。在某些情况下,Hadoop jarfiles 也会提交多个作业,例如,如果驱动程序是 Apache C运行ch 程序,或者您 运行 Gridmix。
你确实可以保证,如果你在 YARN 中只有一份工作 运行ning,那么列表对象将只包含一个元素;列表中的 YARN 应用程序只是由给定的 Job 调用创建的应用程序。即使您 运行 同时有多个 Dataproc 作业,每个作业提交不同的并发 YARN 应用程序,每个作业也只会包含该作业自己提交的特定 YARN 应用程序。