Hadoop——Yarn的HA模式搭建以及WordCount实验详解编程语言

Yarn和HDFS是两个概念,所以你完全可以在启动着Hadoop集群的时候,搭建Yarn并启动

之前在没有Yarn时我们的角色分布是这样的
在这里插入图片描述
搭建Yarn之后会新增RM和NM角色,我们将RM分配在node03和04上做主备RM,与node01和02的NN错开。NM必须与DN一一对应,所以在node02~04上搭建NM

搭建之后的角色应该如下
在这里插入图片描述

NN实现主备切换时需要一个ZKFC辅助,在Yarn中却没有了这么一个辅助角色,而直接与Zookeeper通信,是因为Yarn已经把HA的模块集成进去了

下面要修改的配置文件

node01: 
#在mapred-site.xml中增加 
	<property> 
        <name>mapreduce.framework.name</name> 
        <value>yarn</value> 
    </property> 
#在yarn-site.xml中增加 
 
#启动自动主备切换 
<property> 
  <name>yarn.resourcemanager.ha.enabled</name> 
  <value>true</value> 
</property> 
#配置这当前集群所属资源调度的id,之后在zookeeper中会已配置的值创建目录 
<property> 
  <name>yarn.resourcemanager.cluster-id</name> 
  <value>cluster1</value> 
</property> 
#配置需要的RM 
<property> 
  <name>yarn.resourcemanager.ha.rm-ids</name> 
  <value>rm1,rm2</value> 
</property> 
#具体的rm配置 
<property> 
  <name>yarn.resourcemanager.hostname.rm1</name> 
  <value>node03</value> 
</property> 
<property> 
  <name>yarn.resourcemanager.hostname.rm2</name> 
  <value>node04</value> 
</property> 
#配置对应的zookeeper信息 
<property> 
  <name>hadoop.zk.address</name> 
  <value>node02:2181,node03:2181,node04:2181</value> 
</property> 

下面是具体操作流程

node01: 以root用户登录 
cd $HADOOP_HOME/etc/hadoop 
cp mapred-site.xml.template mapred-site.xml 
vi mapred-site.xml #加入上述配置信息 
vi yarn-site.xml #加入上述配置信息 
 
#将配置文件分发给node02~04 
scp mapred-site.xml yarn-site.xml node02:`pwd` 
scp mapred-site.xml yarn-site.xml node03:`pwd` 
scp mapred-site.xml yarn-site.xml node04:`pwd` 
 
#你会注意到 我们并没有配置NM的相关信息,因为我们之前已经在slaves文件中配置过从结点了,Yarn会自动在这些结点上启动NM,不用我们配置 

配置完成就可以在node01上使用start-yarn.sh启动yarn
需要注意的是,这只会将NM启动,而不会将RM启动,因为node01不是RM,我们需要在node03和node04上分别使用yarn-daemon.sh start resourcemanager启动RM

这时登录http://node03:8088http://node04:8088就会看到Active的RM,且Standby的RM会自动将页面跳转到Active的RM页面中

关闭Yarn时,需要在node03和node04上分别使用stop-yarn.sh关闭RM,NM会随之关闭,由于我们之前没有配置node02~node04之间的免密,所以这一过程需要输入密码,读者可以自行配置node02~node04 之间的免密。

接下来我们在Yarn上跑一个WordCount例子实验一下

在任意结点任意位置准备一个文件,我用以下命令生成一个文件
for i in `seq 100000`; do echo "hello hadoop $i" >> data.txt; done
然后上传到HDFS里
hdfs dfs -mkdir -p /data/wc/inputhdsf dfs -D dfs.blocksize=1048576 -put data.txt /data/wc/input
我使用官方提供的程序来跑我的数据,这个程序在$HADOOP_HOME/share/hadoop/mapreduce下,叫做hadoop-mapreduce-examples-2.6.5.jar
我们使用以下命令跑我们的程序
hadoop jar hadoop-mapreduce-examples-2.6.5.jar wordcount /data/wc/input /data/wc/output

使用hdfs dfs -ls /data/wc/output命令查看结果,发现有如下两个文件在这里插入图片描述

  • _SUCCESS只是一个标识文件,代表该计算程序执行成功
  • part-r-000000是计算的结果文件,注意中间的字母可以是r可以是m,r代表这个结果是最终经过reduce方法计算得来的结果,m代表这个结果只经过了map计算就得出了

我将在下一篇博客中介绍如何使用Idea开发一个WordCount程序

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/20592.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论