我们一直在提及:分布式计算, 分布式暂且不论, “计算”到底是指什么呢?
大数据体系内的计算, 举例:
等等一系列,基于数据得出的结论。 这些就是我们所说的计算。
分布式计算:顾名思义,即以分布式的形式完成数据的统计,得到需要的结果。
分散->汇总模式:
生活中的“人口普查”,就是典型的分散汇总的分布式统计模式。
中心调度->步骤执行模式:
生活中的各类项目的:项目经理 和 项目成员
就是这种模式,一个管理分配任务,其余人员领取任务工作。
MapReduce 即Hadoop内提供的进行分布式计算的组件。
MapReduce是“分散->汇总”模式的分布式计算框架,可供开发人员开发相关程序进行分布式数据计算。
MapReduce提供了2个编程接口:
其中
用户如需使用MapReduce框架完成自定义需求的程序开发,只需要使用Java、Python等编程语言,实现Map Reduce功能接口即可。
假设有如下文件,内部记录了许多的单词。且已经开发好了一个MapReduce程序,功能是统计每个单词出现的次数。
假定有4台服务器用以执行MapReduce任务
可以3台服务器执行Map,1台服务器执行Reduce。
MapReduce是基于YARN运行的,即没有YARN”无法”运行MapReduce程序。
YARN 即Hadoop内提供的进行分布式资源调度的组件。
对于资源的利用,有规划、有管理的调度资源使用,是效率最高的方式。
YARN 管控整个集群的资源进行调度, 那么应用程序在运行时,就是在YARN的监管(管理)下去运行的。
这就像:全部资源都是公司(YARN)的,由公司分配给个人(具体的程序)去使用。
比如,一个具体的MapReduce程序。
我们知道, MapReduce程序会将任务分解为若干个Map任务和Reduce任务。
假设,有一个MapReduce程序, 分解了3个Map任务,和1个Reduce任务,那么如何在YARN的监管(管理)下运行呢?
YARN,主从架构,有2个角色
容器(Container)
什么是YARN的容器?
YARN的架构中除了核心角色,即:
还可以搭配2个辅助角色使得YARN集群运行更加稳定
代理服务器,即Web应用代理是 YARN 的一部分。默认情况下,它将作为资源管理器(RM)的一部分运行,但是可以配置为在独立模式下运行。使用代理的原因是为了减少通过 YARN 进行基于网络的攻击的可能性。
这是因为, YARN在运行时会提供一个WEB UI站点(同HDFS的WEB UI站点一样)可供用户在浏览器内查看YARN的运行信息.
对外提供WEB 站点会有安全性问题, 而代理服务器的功能就是最大限度保障对WEB UI的访问是安全的。 比如:
开启代理服务器,可以提高YARN在开放网络中的安全性 (但不是绝对安全只能是辅助提高一些)。
代理服务器默认集成在了ResourceManager中
也可以将其分离出来单独启动,如果要分离代理服务器
在yarn-site.xml中配置 yarn.web-proxy.address 参数即可
并通过命令启动它即可 $HADOOP_YARN_HOME/sbin/yarn-daemon.sh start proxyserver。
历史服务器的功能很简单: 记录历史运行的程序的信息以及产生的日志并提供WEB UI站点供用户使用浏览器查看。
程序看日志不是日常操作吗? 为何需要一个单独的历史服务器?
回答这个问题要从YARN的运行机制说起。
JobHistoryServer历史服务器功能:
JobHistoryServer需要配置:
开启日志聚合,即从容器中抓取日志到HDFS集中存储
配置历史服务器端口和主机
结束!!!!!!!
hy:36
道德判断,永远要先己后人。