Hadoop2.0新特性(Yarn原理)
1. Hadooop改进与提升
1.1 总结与思考⭐
1)HDFS引入高可用,两台以上NameNode,一台Active,一台StandBy,防止NameNode单点故障
2)引入YARN资源管理调度框架
2. Yarn体系结构
2.1 ResourceManager
ResourceManager是一个全局的资源管理系统,负责整个Yarn集群资源的监控/分配/管理工作
即主要负责全局的资源协调
1)负责处理客户端请求
2)接收和监控NodeManager(NM)的资源情况
3)启动和监控ApplicationMaster(AM)
4) 资源的分配和调度
- scheduler(调度器)
根据容量 / 队列等限制条件,将系统资源分配给正在运行的应用程序 1.1 队列调度器(FIFO Scheduler):先进先出,大任务可能会占用所有集群资源,导致其他任务阻塞
1.2 公平调度器(Fair Scheduler): 所有任务平分集群资源
1.3 容量调度器(Capacity Scheduler): https://blog.csdn.net/qq_20042935/article/details/125651818
- Applications Manager
负责管理整个系统的应用程序,包括程序的提交 / 调度协调资源 / 启动ApplicationMaster / 监控ApplicationMaster / 失败时重启
2.2 NodeManager
NodeManager相当于工作节点
1)会定时向ResourceManager汇报所在节点资源使用情况
2)会接受处理来自ApplicationMaster的启动停止容器(Container)的各种请求
2.3 ApplicationMaster
ApplicationMaster进行二次分配,相当于ApplicationManager下面的小组长
1)协调来自ResourceManager的资源,负责二次分配
2)通过NodeManager监控容器执行/资源使用情况,在任务运行失败时,申请资源重启任务
2.4 总结与思考⭐
1)RescourceManger负责全局的资源调度管理,NodeManager负责单个节点的资源监控管理,ApplicationMaster负责应用的监控/启停/资源管理
2)RescourceManger由ApplicationManager和scheduler组成;ApplicationManager用于调度Container,监控/启停任务,Scheduler纯粹的进行资源调度
3. Yarn工作流程
1.提交应用程序
2.分配容器(Container预分配的资源空间),启动Application Master
3.AppMaster向ResourceManager注册
4.AppMaster向ResourceMaster申请资源(ReousrceMaster将Container[虚拟]打包,发送给AppMaster)
5.与NodeManager进行通信,根据Contariner索要真正资源,并启动任务
6.在Container执行map / renduce任务
7.各任务汇报任务向AppMaster汇报任务状态,失败时重启任务
8.AppMaster向ResourceManager注销
3.1 总结与思考⭐
1)首先向ApplicationManager提交程序,分配Container
2)然后通过scheduler分配实际资源
3)通过ApplicationManger和ApplicationMaster对APP进行监控/管理/启停
4. Hadoop高可用集群
4.1 部署集群节点
Journal Nodes:文件共享,实现两个NameNode的数据共享
ZKFC:监控namenode的健康状况
4.2 环境准备
4.3 配置Hadoop高可用集群
4.3.1 修改core-site.xml
4.3.2 修改hdfs-site.xml
4.3.3 修改mapred-site.xml
4.3.4 修改yarn-site.xml
4.3.5 修改slaves文件
4.3.6 修改hadoop-env.sh
4.4 启动Hadoop高可用集群
## 1. 启动zk
cd /export/servers/zookeeper-3.4.10/bin
./zkServer.sh start
./zkServer.sh status
## 2. 启动journalnode(文件共享/日志管理)
hadoop-daemon.sh start journalnode
## 3. node1格式化NameNode,并拷贝到node2
hadoop namenode -format
scp -r /export/data/hadoop node-02:/export/data/
## 4. node-01格式化ZKFC
hdfs zkfc -formatZK
## 5. node-01启动HDFS
start-dfs.sh
## 6. 启动yarn
start-yarn.sh
4.5 总结与思考⭐
1)修改相关XML等配置文件
2)启动Hadoop高可用集群
5. HDFS高可用架构
5.1 单点故障
Namenode发生故障,整个集群不可用
通常有两台或者以上作为NameNode
活跃的NameNode会把数据写到共享存储系统中,备用的NameNode会一直监听共享存储系统
zk主要实现两个nameNode之间单点故障切换的问题
5.2 总结与思考⭐
两台以上的机器作为NameNode,一台Active,一台StandBy
活跃的NameNode把共享存储系统,备用的NameNode会一直监听共享存储系统,通过ZK进行NameNode之间的单点故障切换