spark 如何和 yarn 结合的?

问答 镜花水月 ⋅ 于 2019-12-20 19:33:06 ⋅ 最后回复由 青牛 2019-12-21 14:07:45 ⋅ 1895 阅读

总所周知,yarn是一个资源调度器,能够让各种计算框架运行在之上,例如spark,mapreduce. 那么问题就来了,就拿spark来举例,spark是如何和yarn结合的,将用户开发的程序放到yarn上运行的。这里我不是问yarn-client提交的流程哈, 我是想表达,例如AM,spark是如何去初始化的,什么时候去初始化的。 客户端的代码一般都是通过初始化SparkContext进而初始化spark应用,但是初始化之后又做了些什么事情呢?还有就是,如果我自己要些一个计算框架放到yarn上运行, 需要实现哪些东西? 这些东西都是yarn提供么? 最开始我以为ApplicationMaster是一个yarn的接口,各个系统都需要实现这个接口的,但是貌似我找了下也没找到这个接口。 不知道问题有没有描述清楚, 请各位大神解答,谢谢。

成为第一个点赞的人吧 :bowtie:
回复数量: 1
  • 青牛 海汼部落创始人,80后程序员一枚,曾就职于金山,喜欢倒腾技术做产品
    2019-12-21 14:07:45

    file
    主要的流程是这样的:
    (1) Client端启动应用程序,提交APP到YARN RM
    (2)RM收到请求之后, 就会在集群中随机选择一个NM, 为该应用程序分配第一个Container, 然后在这个Container上启动AM,AM则实现了SC等的初始化
    (3)AM启动时会向RM注册,并向RM申请资源
    (4)AM一旦申请到资源也就是Container之后, 会在对应的Container(Container信息里面会包含NM节点信息)启动Executor
    (5)AM的SC会分配任务及给Executor进行执行(之前Executor会去向AM中的SC注册), 同时Executor会向AM汇报运行的状态和进度,也就是上面绿色的通信
    (6)AM向RM注册之后, AM会定时向RM汇报程序的运行状态等信息,也就是上面红色部分的通信。

    Driver运行在AM中,也就是SC与Executor的所有通信操作都与Client无关了, 在提交完应用程序之后,Client就可以离开了

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter