从前上帝有个梦想,为了完成它,就创造了人类并给了他们梦想。
作为一个有梦想的程序你想用电脑实现创造新世界的梦想。
零、主从结构
上帝看在你是个程序员的分上给了你一些机器帮你完成梦想。
0.1 你是个牛B的程序员
你是个牛B的程序员你充分利用自己的大脑,把你的梦想细分成了很多很多小任务,每个机器都给它分配点任务,然后收集结果完成你的千年大计。这时你得知道所有机器得信息,和你分配的所有的任务状态。
![](https://img.haomeiwen.com/i4486852/4a97ad90318e2a22.png)
0.2 大脑不够用
虽然你是个牛B的程序员但是你发现你的大脑不够用了,不仅要细分任务,还要管理那么多机器的死活,还有任务的完成情况。于是你自然的想到可以找了个机器帮你分担工作,这个机器称它为master,它帮你分配任务到其他机器,管理任务回收结果,你只需要专心考虑你的梦想应该划分成什么样的任务来完成,并把任务交代给机器master。
![](https://img.haomeiwen.com/i4486852/abed597c2b5cf6d9.png)
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分配下去。
![](https://img.haomeiwen.com/i4486852/d92d32a5133af1c5.png)
2). ApplicationsManager :接受client提交的应用,为应用向RM申请一个container做ApplicationMaster,之后就只管理ApplicationMaster了。
![](https://img.haomeiwen.com/i4486852/8275eeabe70ec13f.png)
从节点NodeManager(NM),管理好自己机器上运行的container,主动上报自己的资源,以及container的状态等信息。
1.2.2 Yarn上的应用层面的主从结构
上面说到一个AppManager会给一个应用申请第一个container做AppMaster,而AppMater对于单个应用来说就是主节点了,它会去RM申请其他的container做它的从节点,然后和它们通信,给它们指派任务,管理它们上面运行的任务。
![](https://img.haomeiwen.com/i4486852/a59a10edeb823acb.png)
1.2.3 MapReduce 和spark的主从结构
MapReduce强依赖于yarn和hdfs所以它就原封不动的满足yarn应用的结构。
而spark 可以运行于多个平台,它抽象出了自己的主从结构。driver是主节点管理其他executor,分配任务收集结果。cluster Manager就是抽象出来的集群资源管理者,可以是yarn 、Messo等。
![](https://img.haomeiwen.com/i4486852/60cf8543c30f2ec4.png)
spark on yarn有client 模式和cluster 模式
1).client模式:driver运行在client上Yarn的AppMaster就只是一个申请资源的代理,申请到了container就给client,client进行任务分配。
2).cluster模式 :driver运行在AppMaster上,资源申请任务调度,都由它自己负责。
最后、总结
文章主要介绍了分布式结构中的主从结构,总结起来就是主节点长官所有从节点的相关信息,协作点都发生在主节点上,从节点只会被动的执行主节点发来的命令。
欢迎关注我
更多文章请看 https://www.jianshu.com/u/7478cf233940
网友评论