1.分布式计算概述
分散->汇总模式:
1. 将数据分片,多台服务器各自负责一部分数据处理
2. 然后将各自的结果,进行汇总处理
3. 最终得到想要的计算结果
1. 什么是计算、分布式计算?
•
计算:对数据进行处理,使用统计分析等手段得到需要的结果
•
分布式计算:多台服务器协同工作,共同完成一个计算任务
2. 分布式计算常见的2种工作模式
•
分散
->
汇总
(
MapReduce
就是这种模式)
•
中心调度
->
步骤执行
(大数据体系的
Spark
、
Flink
等是这种模式)
2.MapReduce概述
分布式计算框架 - MapReduce
MapReduce是“分散->汇总”模式的分布式计算框架,可供开发人员开发相关程序进行分布式数据计算。
MapReduce提供了2个编程接口:
•
Map
•
Reduce
其中
•
Map
功能接口提供了
“
分散
”
的功能,
由服务器分布式对数据进行处理
•
Reduce
功能接口提供了
“
汇总(聚合)
”
的功能,将分布式的处理结果汇总统计
用户如需使用MapReduce框架完成自定义需求的程序开发
只需要使用Java、Python等编程语言,实现Map Reduce功能接口即可。
MapReduce执行原理:
一个案例,简单分析一下,MapReduce是如何完成分布式计算的。
假设有如下文件,内部记录了许多的单词。且已经开发好了一个MapReduce程序,功能是统计每个单词出现的次数。
MapReduce执行原理:
假定有4台服务器用以执行MapReduce任务
可以3台服务器执行Map,1台服务器执行Reduce
1. 什么是MapReduce
•
MapReduce
是
Hadoop
中的分布式计算组件
•
MapReduce
可以以分散
->
汇总(聚合)模式执行分布式计算任务
2. MapReduce的主要编程接口
•
map
接口,主要提供
“
分散
”
功能,由服务器分布式处理数据
•
reduce
接口,主要提供
“
汇总
”
功能,进行数据汇总统计得到结果
•
MapReduce
可供
Java
、
Python
等语言开发计算程序
•
注:
MapReduce
尽管可以通过
Java
、
Python
等语言进行程序开发,但当下年代基本没人会写它的代码了,因为太过时了。
尽管
MapReduce
很老了,但现在仍旧活跃在一线,主要是
Apache Hive
框架非常火,而
Hive
底层就是使用的
MapReduce
。
所以对于
MapReduce
的代码开发,课程会简单扩展一下,但不会深入讲解,对
MapReduce
的底层原理会放在
Hive
之后,基于
Hive
做深入分析。
3. MapReduce的运行机制
•
将要执行的需求,分解为多个
Map Task
和
Reduce Task
•
将
Map Task
和
Reduce Task
分配到对应的服务器去执行
3.YARN概述
MapReduce是基于YARN运行的,即没有YARN”无法”运行MapReduce程序
YARN的资源调度
YARN 管控整个集群的资源进行调度, 那么应用程序在运行时,就是在YARN的监管(管理)下去运行的。
这就像:全部资源都是公司(YARN)的,由公司分配给个人(具体的程序)去使用。
比如,一个具体的MapReduce程序。
我们知道, MapReduce程序会将任务分解为若干个Map任务和Reduce任务。
假设,有一个MapReduce程序, 分解了3个Map任务,和1个Reduce任务,那么如何在YARN的监管(管理)下运行呢?
1. YARN是做什么的?
•
YARN是Hadoop的一个组件
•
用以做集群的资源(内存、CPU等)调度
2. 为什么需要资源调度
•
将资源统一管控进行分配可以提高资源利用率
3. 程序如何在YARN内运行
•
程序向
YARN
申请所需资源
•
YARN
为程序分配所需资源供程序使用
4. MapReduce和YARN的关系
•
YARN
用来调度资源给
MapReduce
分配和管理运行资源
•
所以,
MapReduce
需要
YARN
才能执行(普遍情况)
4. YARN架构
1.
掌握
YARN
的运行角色和角色之间的关系
2.
理解使用容器做资源分配和隔离
1. YARN的架构有哪2个角色?
•
主(Master
):
ResourceManager
•
从(Slave
):
NodeManager
2. 两个角色各自的功能是什么?
•
ResourceManager
:
管理、统筹并分配整个集群的资源
•
NodeManager
:管理、分配单个服务器的资源,即创建管理容器,由容器提供资源供程序使用
3. 什么是YARN的容器?
•
容器(
Container
)是
YARN
的
NodeManager
在所属服务器上分配资源的手段
•
创建一个资源容器,即由
NodeManager
占用这部分资源
•
然后应用程序运行在
NodeManager
创建的这个容器内
•
应用程序无法突破容器的资源限制
•
ps
:容器是虚拟化的相关机制,后续我们会详细讲解
YARN辅助角色
YARN的架构中除了核心角色,即:
•
ResourceManager
:集群资源总管家
•
NodeManager
:单机资源管家
还可以搭配2个辅助角色使得YARN集群运行更加稳定
•
代理服务器
(
ProxyServer
)
:
Web Application Proxy Web
应用程序代理
•
历史服务器
(
JobHistoryServer
)
:
应用程序历史信息记录服务
•
YARN的架构有哪些角色
•
核心角色:
ResourceManager
和
NodeManager
•
辅助角色:
ProxyServer
,保障
WEB UI
访问的安全性
•
辅助角色:
JobHistoryServer
,记录历史程序运行信息和日志