对Zookeeper和Yarn的区别和联系的通俗理解

学习一段时间的大数据技术,总是对里面zookeeper和yarn的功能模糊不清,于是收集一些资料,帮助自己简单的理解一下。

Yarn的作用

Yarn是一个分布式资源调度器组件。这个组件的主要作用是在每次接收到请求后,会查看当下的各个子节点的状况,统筹出运算资源的调度方案来保证任务可以顺利执行。通常来说,Yarn所调度的资源常常包括磁盘空间的资源,内存的资源和通讯带宽的资源等。Yarn是Hadoop V2.0开始引入的一个组件,这个组件可以说是针对Hadoop1.0系统所爆露出的计算资源使用不合理等设计上的问题进行的修正和补充。

ZooKeeper的作用

ZooKeeper是一个分布式的一致性服务组件。分布式系统最大的困难之处在于如何保证系统内各个节点服务器所操作或处理的数据是一致的,或者各自的配置信息是相同的,而ZooKeeper的价值就在于实现了基于分布式的统一化配置管理,命名服务,状态同步等。在ZooKeeper的体系下,会使用一种树状的文件存储系统,这一套系统强调在各个子节点下的文件目录结构,文件名称以及文件内容都是相同的,而ZooKeeper会通过其内部机制,保证在发送增删改等操作时,各个子节点会同步操作。

两者相似之处

  • 都是分布式的
  • 都具备监听和控制子节点运行的能力

Yarn和ZooKeeper的区别

Yarn的核心功能在于资源调度与管理,而ZooKeeper的核心功能在于分布式系统中的一致性服务。

Zookeeper和Yarn是一起工作的,它们一起管理资源。
举例说明。在一个分布式系统上。现在有个事要办。我们要找这个系统办这个事,就要通知yarn。打个比方,yarn的master
node看看这个系统里有很多node,看看谁有空,谁有能力(cpu、内存、等)来干这个事。然后把任务分配给合适的node来办这个事。
这个时候系统面临一个危险。那就是在分布式系统中,failure成为常态。yarn master
node管理着很多个node,管理着它们哪一个出问题了。危险在于master自己坏了怎么办。
常见的分布式系统出问题的解决办法是我们总保持有一个待命的,到需要的时候顶上。yarn里的Resource
Manager也有待命的。当一个Resource Manager坏了,或者需要升级更新,另一个Resource
Manager要接手。这时候麻烦来了,新的Resource
Manager怎么知道哪个任务已经完成,哪个还没有,用户想执行的任务到什么状态了,一个任务所必须的先决条件任务是否已经完成。
这个情形中,Yarn自己成了Single point of failure。 新启动的Resource
Manager成了这个分布式系统的另外一个大脑。两个大脑管理同一套资源,就可能有不一致的地方。
要解决这个问题,我们就要保存Yarn自身的各种状态,比如都收到了哪些任务,各个任务都执行到了什么状态,收到了哪些安全许可。这些东西保存在Resource
Manager State Store里。 Resource Manager State
Store自己怎么管理呢。好几种办法,存在内存,存在文件,或者另外一个更容易的办法就是Zookeeper了。
Zookeeper控制着什么时候,谁可以读写这个Resource Manager State
Store。Zookeeper自己也是个cluster,它也是Fault
Tolerance(容错)的,我们就省去了自己管理这个资源的各种麻烦。
Zookeeper保存着它所管理的系统的各种状态,可以保证任何时候都只有一个版本的系统状态。即便是Yarn的Master坏了,重启了,正在升级,也不会出现冲突。所以说起来,Yarn和Zookeeper的功能是不一样的,对于一套完整的系统,两者都需要使用。

你可能感兴趣的:(hadoop)