hadoop之MapReduce架构及Yarn环境搭建

版权声明:原创文章,未经允许不得转载。ps: 传统电商火热的时代已经成为过去 , 下一个阶段属于大数据 人工智能 , 服务、便捷、安全、效率、创新成为下一个阶段互联网时代的新词汇,而IT技术也随着行业的变化发展而不断更迭。对于码农的出路总结一句话:追技术不如追领域。[基础][设计][能力] https://blog.csdn.net/shengqianfeng/article/details/82799093

MapReduce架构

基于hadoop2.0架构是运行于YARN环境的。

参考:http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/YARN.html

 

YARN环境-主从结构

整个yarn环境是MapReduce的运行环境

  • 主节点Resource Manager

负责调度,是Resource Manager,给Node Manager的ApplicationMaster分配资源,分配好之后,ApplicationMaster就有一个Container,Container是资源的统称。

  • 从节点Node manager

负责线程执行,是Node manager,即任务是执行在有数据的节点上,因为数据在DataNode上,所以Node manager和DataNode在同一个机器上。Node Manager是负责线程执行,或者任务执行,是通过application Master负责任务执行,它是属于Node Manager的一个组件,application Master执行的时候从Resource Manager申请资源。Node manager实时汇报自己的节点情况给Resource Manager。

  • Container容器

NodeManager的组件之一,资源的组合或者资源容器。

  • Application Master

NodeManager的组件之一,当Map Task开始执行的时候,NodeManager产生一个Application Master来负责线程任务的执行,执行前向Resource Manager去申请资源,Resource Manager是知道各个节点的资源情况的,因为NodeManager会实时汇报自己节点的资源情况,如果Node Manager上有空闲的资源,Node Manager就会生成一个Container资源容器,Application Master有了一个对应的资源容器之后就会开始执行执行的时候Application MasterNodeManager之间还有一个执行状态的汇报,然后NodeManagerResourceManager汇报

 

 

具体程序的执行过程:

    客户端把计算程序(一个jar包)提交给ResourceManagerResourceManagerjar程序向各个NodeManager上复制。NodeManager会创建一个Application Master去执行map Task

执行前去ResourceManager请求资源

 

Tips:以上YARN环境,我们一般是不会改动的。我们只需要做的是计算程序的开发

 

YARN-HA环境搭建

可以看到ResourceManager做了主备切换,通过zk选举出备。在主机宕机时进行故障转移。

ResourceManager上没有数据,直接切换即可。比NameNode的HA简单很多。

 

配置说明:

启用ResourceManager高可用

<property>

  <name>yarn.resourcemanager.ha.enabled</name>

  <value>true</value>

</property>

配置两个ResourceManager的服务编号,cluster1为NameServiceId,服务ID号

<property>

  <name>yarn.resourcemanager.cluster-id</name>

  <value>cluster1</value>

</property>

配置两个ResourceManager的Id号

<property>

  <name>yarn.resourcemanager.ha.rm-ids</name>

  <value>rm1,rm2</value>

</property>

 

配置rm1的主机

<property>

  <name>yarn.resourcemanager.hostname.rm1</name>

  <value>master1</value>

</property>

 

配置rm2的主机

<property>

  <name>yarn.resourcemanager.hostname.rm2</name>

  <value>master2</value>

</property>

<property>

  <name>yarn.resourcemanager.webapp.address.rm1</name>

  <value>master1:8088</value>

</property>



<property>

  <name>yarn.resourcemanager.webapp.address.rm2</name>

  <value>master2:8088</value>

</property>

 

 

配置zk是哪些机器

<property>

  <name>yarn.resourcemanager.zk-address</name>

  <value>zk1:2181,zk2:2181,zk3:2181</value>

</property>

进去hadoop的配置文件目录:

#cd /root/hadoop-2.5.1/etc/hadoop

#vim yarn-site.xml

 


<configuration>
<!-- Site specific YARN configuration properties -->
<property>
  <name>yarn.resourcemanager.ha.enabled</name>
  <value>true</value>
</property>
<property>
  <name>yarn.resourcemanager.cluster-id</name>
  <value>jeffSheng</value>
</property>
<property>
  <name>yarn.resourcemanager.ha.rm-ids</name>
  <value>rm1,rm2</value>
</property>
<property>
  <name>yarn.resourcemanager.hostname.rm1</name>
  <value>node1</value>
</property>
<property>
  <name>yarn.resourcemanager.hostname.rm2</name>
  <value>node4</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address.rm1</name>
  <value>node1:18088</value>
</property>
<property>
  <name>yarn.resourcemanager.webapp.address.rm2</name>
  <value>node4:18088</value>
</property>
<property>
  <name>yarn.resourcemanager.zk-address</name>
  <value>node1:2181,node2:2181,node3:2181</value>
</property>
</configuration>

 

保存退出!

 

然后,打开/root/hadoop-2.5.1/etc/hadoop/mapred-site.xml:

<configuration>
 <property>
 <name>mapreduce.framework.name</name>
  <value>yarn</value>
</property>
</configuration>

 

此配置的作用是把MapReduce的执行环境设置在yarn环境中

可以看到在配置目录下只有一个模板文件,所以我们需要重命名一下

#mv mapred-site.xml.template mapred-site.xml

#vim mapred-site.xml

将上边配置粘贴进去,保存退出

 

还需要配置一个

/root/hadoop-2.5.1/etc/hadoop/yarn-site.xml:

#vim yarn-site.xml

在节点下加入以下属性保存退出:

 
 

<property>

        <name>yarn.nodemanager.aux-services</name>

        <value>mapreduce_shuffle</value>

    </property>

 

 

 

 

 

 

 

配置完成,我们是在node1上配置,将配置文件配置到其他机器上node2,node3,node4。

注意:其实node2,node2,node4,就是datanode节点,也就是我们的NodeManager节点。他们一定是同一台机器上。

拷贝:

[root@node1 hadoop]# pwd

/root/hadoop-2.5.1/etc/hadoop

[root@node1 hadoop]#  scp ./* root@node2:/root/hadoop-2.5.1/etc/hadoop/

 

在node1上执行:

# start-yarn.sh

可以看到就启动了一个ResourceManager是node1,和三个nodeManager分别是node2,node3和node4

 

那么,那个备用的ResourceManager启动了没有,答案是没有,因为start-yarn.sh

不会帮助启动备用ResourceManager,需要我们自己手动启动。

由于我们是node4是备用ResourceManagerManager机器,我们在node4上输入:

# yarn-daemon.sh start resourcemanager

 

启动成功!

打开ResourceManager的监控页面:

http://192.168.98.95:18088

点击左侧菜单Nodes,也可以看到三台NodeManager的节点信息

 

 

然后我们打开备用的ResourceManager,也就是node4,192.168.98.98这台机器:

http://192.168.98.98:18088

却发现提示以下信息:
This is standby RM. Redirecting to the current active RM: http://node1:18088/

紧接着就重定向到了node1那个主的Resource机器

Tips:在windows上配置node1到node4的域名:打开C:\Windows\System32\drivers\etc,编辑hosts文件。

输入:

192.168.98.95  node1

192.168.98.96  node2

192.168.98.97  node3

192.168.98.98  node4

 

 

然后我们验证是否node1这个ResourceManager挂掉,node4的备用ResourceManager是否可以接管。

 

杀死了node1,发现node1的web界面不能访问了,node4可以!

               

 

Node4接管node1的ResourceManager成功,需要注意的是接管可能需要几秒钟,其实就是NodeManager向ResourceManager汇报节点状态有一个超时时间,我们把node1杀死后,nodeManager还是在向Node1的resourceManager汇报,虽然是不成功的,等到超时时间到了还不成功,则认为node1这个ResourceManager挂掉了,将向node4这个ResourceManager汇报。

 

猜你喜欢

转载自blog.csdn.net/shengqianfeng/article/details/82799093