上帝有个梦想-主从结构

从前上帝有个梦想,为了完成它,就创造了人类并给了他们梦想。

作为一个有梦想的程序你想用电脑实现创造新世界的梦想。

零、主从结构

上帝看在你是个程序员的分上给了你一些机器帮你完成梦想。

0.1 你是个牛B的程序员

你是个牛B的程序员你充分利用自己的大脑,把你的梦想细分成了很多很多小任务,每个机器都给它分配点任务,然后收集结果完成你的千年大计。这时你得知道所有机器得信息,和你分配的所有的任务状态。


上帝有个梦想-主从结构


0.2 大脑不够用

虽然你是个牛B的程序员但是你发现你的大脑不够用了,不仅要细分任务,还要管理那么多机器的死活,还有任务的完成情况。于是你自然的想到可以找了个机器帮你分担工作,这个机器称它为master,它帮你分配任务到其他机器,管理任务回收结果,你只需要专心考虑你的梦想应该划分成什么样的任务来完成,并把任务交代给机器master。


上帝有个梦想-主从结构


0.3 master 会挂

你发现机器master可能会挂掉,挂掉了你交代给它的任务就丢了,你还得重新规划任务,于是你找了个机器master_backup,让master把所有数据都和它同步,这样一旦master挂了,master_backup就能马上顶替master的工作,等master恢复再和master_backup同步数据,保证总是有个机器替你干活,让你安心了许多。

0.4 主从

由于个体能力有限,社会为了发展都会朝着分工协作的方向发展。

机器多了也一样需要分工协作,但机器不像人那么智能,分工可以,协作就很难了。

最简单的协作模式就是有个统一的master来分配任务,也就是协作点集中在了一台中心节点,它和其他节点互联,它拥有所有机器的信息。其他的机器只接收来自master的指令,master让它干啥就干啥。

这样的模式优点在于分工明确实现起来方便简单。所有的机器只需要和master保持连接。

但是缺点是集中到了一台机器上,机器多了容易master压力会很大,master故障那么其他的机器也做不了什么事了。

一、hadoop中的主从结构

hadoop 包含HDFS、YARN、MapReduce这三个核心组件,其实都是主从结构的。

1.1 HDFS:分布式文件系统。

主节点叫namenode储存元数据,拥有所有机器的信息,所有数据的元数据,比如这个数据存在哪些节点、存了多少副本等这些信息。集中的管理数据,比如新来的数据应该放哪儿。

从节点datanode管理自己机器上数据的存放,负责读写数据。

当你使用client去读取hdfs的文件的时候,会先去namenode拿到相关的信息,再到对应的节点上读取数据。

1.2 YARN:资源管理器

Yarn就像操作系统一样需要管理计算机资源(cpu,内存、磁盘、网络等),还需要管理上面使用资源的任务。那我们就分系统层(资源和应用管理)和应用层(单个应用的运行)来说,

1.2.1 yarn系统层面的主从结构。

主节点ResourceManager(RM),有两个主要的组件 分别管理资源和应用。

1). Scheduler 调度器,管理资源,给应用分配资源,让任务满足各种资源的限制。也就是它会有所有机器的资源信息,等待应用申请资源,并将资源抽象成一个个container分配下去。


上帝有个梦想-主从结构


2). ApplicationsManager :接受client提交的应用,为应用向RM申请一个container做ApplicationMaster,之后就只管理ApplicationMaster了。


上帝有个梦想-主从结构


从节点NodeManager(NM),管理好自己机器上运行的container,主动上报自己的资源,以及container的状态等信息。

1.2.2 Yarn上的应用层面的主从结构

上面说到一个AppManager会给一个应用申请第一个container做AppMaster,而AppMater对于单个应用来说就是主节点了,它会去RM申请其他的container做它的从节点,然后和它们通信,给它们指派任务,管理它们上面运行的任务。


上帝有个梦想-主从结构


1.2.3 MapReduce 和spark的主从结构

MapReduce强依赖于yarn和hdfs所以它就原封不动的满足yarn应用的结构。

而spark 可以运行于多个平台,它抽象出了自己的主从结构。driver是主节点管理其他executor,分配任务收集结果。cluster Manager就是抽象出来的集群资源管理者,可以是yarn 、Messo等。


上帝有个梦想-主从结构

spark on yarn有client 模式和cluster 模式

1).client模式:driver运行在client上Yarn的AppMaster就只是一个申请资源的代理,申请到了container就给client,client进行任务分配。

2).cluster模式 :driver运行在AppMaster上,资源申请任务调度,都由它自己负责。

最后、总结

文章主要介绍了分布式结构中的主从结构,总结起来就是主节点长官所有从节点的相关信息,协作点都发生在主节点上,从节点只会被动的执行主节点发来的命令。


分享到:


相關文章: