分散式计算MapReduce和YARN的区别
分散式计算MapReduce和YARN的区别 什么是MapReduce? MapReduce是一种程式设计模型,用于大规模资料集(大于1TB)的并行运算。概念Map(对映)和Reduce(归约),是它们的主要思想,都是从函数语言程式设计语言里借来的,还有从向量程式语言里借来的特性。它极大地方便了程式设计人员在不会分散式并行程式设计的情况下,将自己的程式执行在分散式系统上。 当前的软件实现是指定一个Map(对映)函式,用来把一组键值对对映成一组新的键值对,指定并发的Reduce(归约)函式,用来保证所有对映的键值对中的每一个共享相同的键组 作用: (1)海量资料在单机上处理因为硬件资源限制,无法胜任 (2)而一旦将单机版程式扩充套件到丛集来分散式执行,将极大增加程式的复杂度和开发难度 (3) 引入mapreduce框架后,开发人员可以将绝大部分工作集中在业务逻辑的开发上,而将分散式计算中的复杂-由框架来处理。 什么是Yarn?
Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop 资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和排程,它的引入为丛集在利用率、资源统一管理和资料共享等方面带来了巨大好处。
Yarn架构图:
来源于网络
工作流程
来源于网络
重要概念:
1、 yarn并不清楚使用者提交的程式的执行机制
2、 yarn只提供运算资源的排程(使用者程式向yarn申请资源,yarn就负责分配资源)
3、 yarn中的主管角色叫ResourceManager
4、 yarn中具体提供运算资源的角色叫NodeManager
5、 这样一来,yarn其实就与执行的使用者程式完全解耦,就意味着yarn上可以执行各种型别的分散式运算程式(mapreduce只是其中的一种),比如mapreduce、storm程式,spark程式,tez ……
6、 所以,spark、storm等运算框架都可以整合在yarn上执行,只要他们各自的框架中有符合yarn规范的资源请求机制即可
7、 Yarn就成为一个通用的资源排程平台,从此,企业中以前存在的各种运算丛集都可以整合在一个物理丛集上,提高资源利用率,方便资料共享