一、分布式计算概述
分布式计算:以分布式的形式完成数据的统计,得到需要的结果
常见的两种工作模式:
①分散 -> 汇总模式(MapReduce):将数据分片,多台服务器各自负责一部分数据处理,然后将各自的结果,进行汇总处理,最终得到想要的计算结果
②中心调度 -> 步骤执行模式(大数据体系的Spark、Flink等):由一个节点作为中心调度管理者,将任务划分为几个具体步骤,管理者安排每个机器执行任务,最终得到结果数据
二、MapReduce概述
①MapReduce即Hadoop内提供的进行分布式计算的组件。
②MapReduce是“分散 -> 汇总”模式的分布式计算框架,可供开发人员开发相关程序进行分布式数据计算。
③MapReduce提供了2个编程接口
1、Map:提供“分散”功能,有服务器分布式对数据进行处理
2、Reduce:提供“汇总(聚合)”的功能,将分布式的处理结果汇总统计
④运行机制
将要执行的需求,分解为多个Map Task和Reduce Task;将Map Task和Reduce Task分配到对应的服务器去执行
三、YARN概述
YARN&MapReduce:
MapReduce是基于YARN运行的,即没有YARN“无法”运行MapReduce程序.YARN用来调度资源给MapReduce分配和管理运行资源
①YARN即Hadoop内提供的进行分布式资源调度的组件
补充知识点:
1、资源:服务器硬件资源,如:CPU、内存、硬盘、网络等
2、资源调度:管控服务器硬件资源,提供更好的利用率
3、分布式资源调度:管控整个分布式服务器集群的全部资源,整合进行统一调度
②YARN的资源调度
YARN管控整个集群的资源进行调度,那么应用程序在运行时,就是在YARN的监管(管理)下去运行的.
向YARN申请使用资源,YARN分配好资源后运行,空闲资源可供其他程序使用
四、YRAN架构
1、核心架构
①YARN,主从结构,有2个角色
主(Master)角色:ResourceManager--整个集群的资源调度者,负责协调调度各个程序所需的资源
从(Slave)角色:NodeManager--单个服务器的资源调度者,负责调度单个服务器上的资源提供给应用程序使用
②YARN容器
容器(Container):NodeManager预先占用这一部分资源,然后将这一部分资源提供给程序使用,程序运行在容器内,无法突破容器的资源限制
2、辅助架构
①YARN辅助角色
ResourceManager:集群资源总管家
NodeManager:单机资源管家
还可以搭配2个辅助角色使得YARN集群运行更加稳定
代理服务器(ProxyServer):Web Application Proxy Web应用程序代理
历史服务器(JobHistoryServer):应用程序历史信息记录服务
②Web应用代理(Web Application Proxy)
代理服务器,即Web应用代理是YARN的一部分。默认情况下,它将作为资源管理器(RM)的一部分运行,但是可以配置在独立模式下运行。使用代理的原因是为了减少通过YARN进行基于网络的攻击的可能性。这是因为,YARN在运行时会提供一个WEB UI 站点(同HDFS的WEB UI站点一样)可供用户在浏览器内查看YARN的运行信息。
对外提供WEB站点会有安全性问题,而代理服务器的功能就是最大限度保障对WEB UI的访问是安全的。比如:
- 警告用户正在访问一个不受信任的站点
- 剥离用户访问的Cookie等
开启服务器,可以提高YARN在开放网站中的安全性(但不是绝对安全只能是辅助提高一些)
代理服务器默认集成在了ResourceManager中
也可以将其分离出来单独启动,如果要分离代理服务器
1、在yarn-site.xml中配置 yarn.web-proxy.address 参数即可
2、 并通过命令启动它即可 $HADOOP_YARN_HOME/sbin/yarn-daemon.sh start proxyserver
③JobHistoryServer历史服务器
功能:记录历史运行的程序的信息以及产生的日志并提供WEB UI站点供用户使用浏览器查看
五、MapReduce&YARN的部署
①部署说明
- Hadoop HDFS分布式文件系统,启动:
NameNode进程作为管理节点
DataNode进程作为工作节点
SecondaryNameNode作为辅助
- Hadoop YARN分布式资源调度,启动:
ResourceManager进程作为管理节点
NodeManager进程作为工作节点
ProxyServer、JobHistoryServer作为辅助
MapReduce运行在YARN容器内,无需启动独立进程
②集群启动命令
- 一键启动YARN集群:
$HADOOP_HOME/sbin/start-yarn.sh
会基于yarn-site.xml中配置的yarn.resourcemanager.hostname来决定在哪台机器上启动resourcemanager
会基于workers文件配置的主机启动NodeManager
- 一键停止YARN集群:
$HADOOP_HOME/sbin/stop-yarn.sh
- 在当前机器,单独启动或停止进程
$HADOOP_HOME/bin/yarn --daemon start|stop resourcemanager|nodemanager|proxyserver
start和stop决定启动和停止
可控制resourcemanager、nodemanager、proxyserver三种进程
- 历史服务器启动和停止
$HADOOP_HOME/bin/mapred --daemon start|stop historyserver
③查看YARN的WEB UI页面
打开 http://node1:8088 即可看到YARN集群的监控页面(ResourceManager的WEB UI)
六、MapReduce&YARN初体验--提交MapReduce任务到YARN执行
①Hadoop官方内置了一些预置的MapReduce程序代码,无需编程,只需要通过命令即可使用。
常用的有2个MapReduce内置程序:
- wordcount:单词计数程序--统计指定文件内各个单词出现的次数
- pi:求圆周率--通过蒙特卡洛算法(统计模拟法)求圆周率
②这些内置的示例MapReduce程序代码,都在:
$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.1.jar 这个文件内。
- 可以通过hadoop jar命令来运行它,提交MapReduce程序到YARN中。
hadoop jar 程序文件 java类名 [程序参数] ... [程序参数]