【问题标题】:yarn status from dataproc client - why is it always a list object?来自 dataproc 客户端的纱线状态 - 为什么它总是一个列表对象?
【发布时间】: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 客户端的测试版 - 但由于我们有生产系统在其上运行,因此非常感谢任何意见和建议。

谢谢

【问题讨论】:

    标签: google-cloud-dataproc


    【解决方案1】:

    根据Dataproc API job definition,作业包含 YarnApplications 的“集合”,通常此定义不能根据运行时内容更改其类型。例如,Job.getYarnApplications()returns a java.util.List 的 Java 接口,无论列表是否恰好有一个元素、零个或多个元素。

    此 API 定义旨在适应各种作业类型,每个作业可能会提交多个 YARN 应用程序,例如 Hive 或 Pig。在某些情况下,Hadoop jarfile 也会提交多个作业,例如,如果驱动程序是 Apache Crunch 程序,或者您运行 Gridmix。

    您确实可以保证,如果您在 YARN 中只运行一个作业,那么列表对象将只包含一个元素;列表中的 YARN 应用程序仅是由给定 Job 调用创建的应用程序。即使您同时运行多个 Dataproc 作业,每个作业都提交不同的并发 YARN 应用程序,每个作业也只会包含作业本身提交的特定 YARN 应用程序。

    【讨论】:

    • 非常感谢丹尼斯,感谢您的评论。你的一个问题 - 你提到“你确实可以保证,如果你只有一份工作在 YARN 中运行......” - 这是来自某处的文档还是你的观察?如果它来自文档,您介意分享吗?再次感谢!
    • 在您描述的“纱线进行多次尝试”的情况下,在 YARN 中仍保留在单个 YARN 应用程序 ID 下,并且多次尝试在其中列出; “yarn applications -list -appStates ALL”仍然只会为所有尝试返回一个应用程序 ID。因此,Dataproc 并没有承诺在只有一个应用程序运行时只显示一个 YARN 应用程序有什么特别之处。相反,Dataproc 使用 jobid 标签跟踪 YARN 应用程序。如果您的驱动程序本身重试发布 YARN 应用程序,那么 Dataproc 确实会在一个作业中显示多个应用程序。
    • 目前的文档只是在Job resource definition 中,但没有深入说明重试如何影响作业中列出的 YARN 应用程序的数量;这种行为在不同的引擎之间可能会有所不同。最后,Dataproc 的 YARN 应用程序列表将包含与在集群中运行 yarn application -list 类似的内容,但由生成应用程序的作业 ID 过滤。
    猜你喜欢
    • 2014-01-14
    • 2020-10-11
    • 2016-02-21
    • 2013-01-13
    • 2021-10-31
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多