目前我们的大数据技术基础这门课已经算是结课了,本学期也没有多久也要期末考试了,时间过得很快,另外,我争取将学校大数据平台上面的大部分实验都做一遍然后写成博客的形式发出来,因为可能后续我们就使用不了这个平台了。
今天我们来做一下关于YARN集群部署的实验并了解一下什么是YARN框架。
了解什么是YARN框架,如何搭建YARN分布式集群,并能够使用YARN集群提交一些简单的任务,理解YARN作为Hadoop生态中的资源管理器的意义。
搭建YARN集群,并使用YARN集群提交简单的任务。观察任务提交的之后的YARN的执行过程。
YARN是一个资源管理、任务调度的框架,采用master/slave架构,主要包含三大模块:ResourceManager(RM)、NodeManager(NM)、ApplicationMaster(AM)。其中,ResourceManager负责所有资源的监控、分配和管理,运行在主节点; NodeManager负责每一个节点的维护,运行在从节点;ApplicationMaster负责每一个具体应用程序的调度和协调,只有在有任务正在执行时存在。对于所有的applications,RM拥有绝对的控制权和对资源的分配权。而每个AM则会和RM协商资源,同时和NodeManager通信来执行和监控task。几个模块之间的关系如下图所示:
master向RM提交应用程序,其中包括启动该应用的ApplicationMaster的必须信息,例如ApplicationMaster程序、启动ApplicationMaster的命令、用户程序等。
ResourceManager启动一个container用于运行ApplicationMaster。
启动中的ApplicationMaster向ResourceManager注册自己,启动成功后与RM保持心跳。
ApplicationMaster向ResourceManager发送请求,申请相应数目的container。
ResourceManager返回ApplicationMaster的申请的containers信息。申请成功的container,由ApplicationMaster进行初始化。container的启动信息初始化后,AM与对应的NodeManager通信,要求NM启动container。AM与NM保持心跳,从而对NM上运行的任务进行监控和管理。
container运行期间,ApplicationMaster对container进行监控。container通过RPC协议向对应的AM汇报自己的进度和状态等信息。
应用运行期间,master直接与AM通信获取应用的状态、进度更新等信息。
应用运行结束后,ApplicationMaster向ResourceManager注销自己,并允许属于它的container被收回。
首先配置master,slave1和slave2之间的免密登录和各虚拟机的/etc/hosts文件,这个步骤请参考我之前的一篇博客,里面有详细过程:
我看了一下学校虚拟机,首先java路径就没有配置,所以不能直接启动HDFS,需要重新配置,具体配置过程可以参考我之前的博客:大数据技术基础实验三:HDFS实验——部署HDFS
配置完之后启动成功,出现如下图即可:
首先指定YARN主节点,输入如下命令编辑文件“/usr/cstor/hadoop/etc/hadoop/yarn-site.xml”:
vim /usr/cstor/hadoop/etc/hadoop/yarn-site.xml
将如下内容嵌入此文件里configuration标签间:
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
yarn-site.xml是YARN守护进程的配置文件。第一句配置了ResourceManager的主机名,第二句配置了节点管理器运行的附加服务为mapreduce_shuffle,只有这样才可以运行MapReduce程序。
紧接着在master机上操作,将配置好的YARN配置文件拷贝至slaveX,也就是拷贝到其他服务器上:
for x in `cat ~/data/4/machines` ; do echo $x ; scp /usr/cstor/hadoop/etc/hadoop/yarn-site.xml $x:/usr/cstor/hadoop/etc/hadoop/ ; done;
确认已配置slaves文件,在master机器上查看:
cat /usr/cstor/hadoop/etc/hadoop/slaves
YARN配置无误,统一启动YARN:
/usr/cstor/hadoop/sbin/start-yarn.sh
分别在三台虚拟机上输入jps查看YARN服务是否已启动:
可以看出我们成功启动了。
在master节点成功启动ResourceManager,它负责整个集群的资源管理分配,是一个全局的资源管理系统。
NodeManager是每个节点上的资源和任务管理器,它是管理这台机器的代理,负责该节点程序的运行,以及该节点资源的管理和监控。YARN集群每个节点都运行一个NodeManager。
在当前的Windows机器上打开浏览器,地址栏输入master的IP和端口号8088(例:10.1.1.7:8088),即可在Web界面看到YARN相关信息。
本实验最后其实有两个验证任务,DistributedShell任务和MapReduce型任务,但是因为实验平台是前几年就有的但是直到现在实验报告并未更新,现在我们只有三个虚拟机,但是在之前的实验时有五台虚拟机,我们没有client机所以无法做这个两个实验。
所以本次实验只能进行到这里了,后面我会继续更新其他实验的。