赞
踩
一。 yarn架构
mapreduce从 0.2.3之后 进行了重构, 发布新的mapreduce 版本v2, 也可以称为 yarn 引入了资源调度的概念 之前的JobTracker 被拆分成了 Resouce Manager和ApplicationMaster
结构上 yarn存在两种类型的节点 主节点称为Resouce Manager(RM) 从节点(执行任务)称为 Node Manager(NM)
一个yarn应用中只有一个激活的Resouce Manager 每个应用(每个拆分的任务)都有一个ApplitionMaster (AM)所有被提交的job 都会经过 Resouce Manager进行分配 Application Master主要从 Resouce Manager中申请资源 同时监控 每个NodeManager运行任务的状态信息
ResouceManager包含两个主要控件 Scheduler and ApplicationsManager.
Scheduler用于分配有限资源给应用 只是调度资源不会监控 资源单位是 Container yarn提供了一些调度的类可供使用 比如CapacityScheduler和 FairScheduler
ApplicationsManager 用于接收任务的提交 指定哪个NodeManager的ApplicationMaster执行任务 协商ApplicationMaster申请的第一个Container资源 同意后交给调度,
提供失败后重启ApplicationMaster功能
NodeManger是一个Container的代理 监控当前机器的cpu 内容 io 网络等 报告这些资源给Resouce Manager 方便统一管理
原理图
运行过程:
1 启动后 每个NodeManager向ResouceManager汇报每个节点的网络 cpu 内存等资源 NodeManager进行汇总 RM的Scheduler 将所有资源
分成多个Container
2 客户端提交任务给ResourceManager的ApplicationManager ApplicationManager调用任务拆分成多个 启用对应NodeManager的ApplicationMaster 调用Scheduler 分配 用于运行Containner ApplicationMaster开始执行任务
3 ApplicationMaster监控任务执行状态 并发送心跳给ResourceManager
二 。yarn集群安装
环境 使用之前 hadoop记录篇3-namenode水平拓展Federation+viewfs
机器
- /etc/hosts
- 192.168.58.147 node1
- 192.168.58.149 node2
- 192.168.58.150 node3
- 192.168.58.151 node4
集群(clusterid:hadoop)
hdfs配置参考前面文章
namenode node1 nameserviceid:node1 node2 nameserviceid:node2 secondarynode node1 node2 DataNodes node2 node3 node4 Resource Manager node1 NodeManger node2 node3 node4
进入etc/haddop中 将 mapred-site.xml.template重命名为 mapred-site.xml 添加如下内容
- <property>
- <name>mapreduce.framework.name</name>
- <value>yarn</value>
- </property>
yarn-site.xml 添加内容
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- <property>
- <name>yarn.resourcemanager.hostname</name>
- <value>node1</value>
- </property>
以下关于yarn配置 都有默认值 给出意思
- yarn.resourcemanager.hostname 表示resourcemanager的主机名
- yarn.resourcemanager.address 表示resourcemanger中applicationmanager对外接受提交任务的ip和端口 默认ip本机 端口 ${yarn.resourcemanager.hostname}:8032
- yarn.resourcemanager.scheduler.address 表示resoucemanager中Scheduler用于接受NodeManager汇报本地cpu 网络等资源的端口 默认 ${yarn.resourcemanager.hostname}:8030
- yarn.resourcemanager.resource-tracker.address 表示nodemanager上用于接受被切片的job的端口 默认 ${yarn.resourcemanager.hostname}:8031
- yarn.resourcemanager.webapp.address 用于查看所有提交任务信息的web界面 默认端口 ${yarn.resourcemanager.hostname}:8088
- yarn.resourcemanager.admin.address 管理员用于管理资源的端口 默认 ${yarn.resourcemanager.hostname}:8033
- yarn.resourcemanager.scheduler.class 调度使用的类 建议使用CapacityScheduler 或者FairScheduler 默认是org.apache.hadoop.yarn.server.resourcemanager.scheduler.capacity.CapacityScheduler
- yarn.scheduler.minimum-allocation-mb 每个containner分配的最小内存 默认1024M
- yarn.scheduler.maximum-allocation-mb 每个container分配的最大内存 默认 8192M
- yarn.nodemanager.resource.memory-mb nodemanger可以使用最大的内存 默认 8192M
NodeManager的所有节点部署的位置和datanode配置是一致的 都是在slaves文件中配置的
启动yarn集群
start-yarn.sh
三。yarn高可用安装
resourcemanager存在单点故障问题 提供一个standby的备机用于容)
原理:
yarn-site.xml配置(参考http://hadoop.apache.org/docs/r2.6.5/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html)
- <?xml version="1.0"?>
- <!--
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License. See accompanying LICENSE file.
- -->
- <configuration>
-
- <!-- Site specific YARN configuration properties -->
- <property>
- <name>yarn.nodemanager.aux-services</name>
- <value>mapreduce_shuffle</value>
- </property>
- <!--非高可用
- <property>
- <name>yarn.resourcemanager.hostname</name>
- <value>node1</value>
- </property>
- -->
-
- <!--高可用-->
-
- <property>
- <name>yarn.resourcemanager.ha.enabled</name>
- <value>true</value>
- </property>
- <!--yarn集群编号-->
- <property>
- <name>yarn.resourcemanager.cluster-id</name>
- <value>ha_resouce</value>
- </property>
- <!--高可用中 两个resourcemanager的id-->
- <property>
- <name>yarn.resourcemanager.ha.rm-ids</name>
- <value>rm1,rm2</value>
- </property>
- <!--编号为rm1的主机是node1-->
- <property>
- <name>yarn.resourcemanager.hostname.rm1</name>
- <value>node1</value>
- </property>
- <!--编号为rm2的主机是node2-->
- <property>
- <name>yarn.resourcemanager.hostname.rm2</name>
- <value>node2</value>
- </property>
- <!--配置用于调度的zk所在的服务器和ip 这个安装zk 我直接安装在window上-->
- <property>
- <name>yarn.resourcemanager.zk-address</name>
- <value>192.168.58.1:2181</value>
- </property>
- <!--自动切换 设置为true-->
- <property>
- <name>yarn.resourcemanager.ha.automatic-failover.enabled</name>
- <value>true</value>
- </property>
-
-
- </configuration>
- [root@node1 hadoop]# yarn rmadmin -getServiceState rm2
- standby
- [root@node1 hadoop]# yarn rmadmin -getServiceState rm1
- active
- [root@node1 hadoop]# yarn-daemon.sh stop resourcemanager
- stopping resourcemanager
- [root@node1 hadoop]# yarn rmadmin -getServiceState rm2
- active
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。