hadoop各组件的介绍_关于Hadoop和YARN作为Spark开发者你需要知道的事情

最近在梳理pyspark相关知识, 偶然发现外国一篇博客介绍的简单清晰, 特地翻译并整理了一下, 原博客链接放在了后面.

一、背景

Apache Spark被认为是对最初的大数据技术Hadoop的有力补充。Apache Spark是一个更易于使用、更强大、更有能力解决与大数据相关的各种任务的工具。它已经成为各大行业大数据的主流和需求量最大的框架。从2.0开始,Spark已经成为Hadoop的一部分。而对于Python大数据工程师来说,它(pyspark)是最有用的技术之一。

91e4d3b355cc2e0d72978e62d346f5f6.png
图1 Hadoop与Spark

二、什么是Spark?

Apache Spark是一个用于批处理和流处理的开源云计算框架,它是为快速的内存数据处理而设计的。

Spark是框架,主要用于其他系统之上。你可以使用它的独立集群模式在EC2、Hadoop YARN、Mesos或者Kubernetes运行Spark。本文将为你介绍最流行的构建--Spark与Hadoop Yarn。

所以,在深入了解Apache Spark之前,我们先来快速了解一下Hadoop平台以及YARN在其中的作用。

1. Hadoop平台

为了理解什么是Hadoop,我将用操作系统做一个类比。传统的操作系统在高层次上由两个部分组成:文件系统处理器组件

在一台机器上有文件系统,它可以是不同的, 有FAT32,HPFS,ext2,NFS,ZFS等。操作系统也可以是不同的, 它是一个数据存储和管理的系统。

f2229ed17f1e44aaef2a1eaca7a262bf.png
图2 传统操作系统结构

此外,操作系统还有一个处理器组件:内核、调度器和一些线程以及允许程序在数据上运行的进程。

fd60f8f103222e468713639388dd8067.png
图3 Hadoop平台结构

当我们把这个存储/处理的概念移到集群层面,放在Hadoop里面,我们得到的系统结构基本上是一样的,同样是两个组件。但存储层代替单节点文件系统的将是HDFS(Hadoop distributed file system, Hadoop分布式文件系统)。而YARN(Yet Another Resource Negotiator)则承担了处理组件的角色:执行、调度、决定什么可以做,在哪里做。

2. YARN架构

d73616db16ebee37b54c1c8df09b090f.png
图4 YARN系统架构

YARN是如何工作的?

YARN有一些基本流程--ResourceManagerResourceManager是决定系统中所有应用之间资源分配的最终权威。它有运行在集群所有节点上的小弟,称为NodeManager。同时,ResourceManager还有一个组件Scheduler,负责为各种正在运行的应用分配资源,同时考虑到大家熟悉的容量、队列等因素的限制。

d4cb1d4eeeaff3fee4d17000ef6994b6.png
图5 Resource Manager与Node Manager关系

集群的所有节点都有一定数量的Containers(容器)。容器是计算单元,是节点资源的一种包装,用来执行用户应用的任务。它们是YARN管理的主要计算单元。容器有自己的参数,可以按需配置(如内存、CPU等)。

f0c3f9796baf629caecfd8a0be07ee9b.png
图6 Resource Manager、Node Manager与Container关系

每个节点上的容器由NodeManager守护进程控制。当在集群上启动一个新的应用程序时,ResourceManager为ApplicationMaster分配一个容器。每个应用程序的ApplicationMaster是一个框架特定的实体,它的任务是与ResourceManager协商资源,并与NodeManager(s)合作执行和监控组件任务。

一旦启动,ApplicationMaster将负责分布式应用的整个生命周期。首先,它将向ResourceManager发送资源请求,以获得执行应用任务所需的容器。资源请求只是简单地请求一些符合某些资源要求的容器,例如:

  • 资源数量, 内存大小&处理器个数
  • 首选的容器位置,用主机名、机架名表示,或用*表示没有首选
  • 应用内的优先权,而不是多个应用的优先权

ApplicationMaster像其他应用程序一样在容器中运行。如果ApplicationMaster崩溃或不可用,ResourceManager可以创建另一个容器并在其上重新启动ApplicationMaster。它使整个应用程序高度可用。ResourceManager存储了HDFS中运行的应用程序和执行的任务的信息。当重启时,ResourceManager会重新创建应用程序的状态,并且只重启未完成的任务。

ResourceManagerNodeManager和容器不关心应用或任务的类型。所有的应用框架代码只需转移到ApplicationMaster上,这样任何分布式框架都可以得到YARN的支持--只要有人为它实现了一个合适的ApplicationMaster。有了这种通用的方法,Hadoop YARN集群拥有多种不同工作负载的梦想就会实现。

三、提交应用

掌握了前面几节的知识,应该清晰地了解了ResourceManagerContainerNodeManager及ApplicationMaster等概念. 接下来, 熟悉应用程序本身在YARN中是如何工作的将会对Spark任务开发很有用。

让我们来看看应用程序启动的一系列步骤。

  1. Client program客户端程序提交应用程序,包括运行应用程序专用ApplicationMaster的必要参数配置。
  2. ResourceManager负责分配一个必要的容器,ApplicationMaster将在其中被启动。然后ResourceManager启动ApplicationMaster。
  3. ApplicationMaster在ResourceManager中注册自己。注册允许Customer程序从ResourceManager中请求特定信息,使其能够直接与其ApplicationMaster进行交互。
  4. 在正常的操作中,ApplicationMaster会从ResourceManager中寻找合适的容器供应用程序运行。
  5. 成功接收容器后,ApplicationMaster启动它们,提供NodeManager的配置。
  6. 在容器内,它运行用户的应用代码,然后,NodeManager(s)为ApplicationMaster提供信息(执行阶段、状态)。
  7. 在用户应用程序运行期间,客户端与ApplicationMaster交互,以获取应用程序状态。
  8. 当应用程序完成并完成所有必要的工作时,ApplicationMaster从ResourceManager中取消注册并终止,释放容器用于其他用途。

四、参考文献

  1. [原博客]Things you need to know about Hadoop and YARN being a Spark developer
  2. Apache Spark
  3. Apache Hadoop
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值