Hadoop2.0总结
一、本质
Hadoop2.0,相比于Hadoop1.0,最明显的区别是YARN系统和HDFS2.0的新特性
二、Yarn解决了什么问题
1. 降低运维成本和数据共享成本
2. 减小了 JobTracker(也就是现在的 RM)的负担
3. 使得多种计算框架可以运行在一个集群中
4. 资源表示成内存量,解决了之前的map slot/reduce slot分开造成集群资源闲置的情况
三、HDFS2.0解决了什么问题
1. NameNode HA 解决了Hadoop1.0中NameNode的单点问题
2. NameNode Federation 解决了NameNode的横向扩展问题
3. HDFS Snapshot 解决了数据备份,防止用户错误操作和容灾恢复
4. HDFS Cache 可以防止频繁使用的数据被从内存中清除
5. HDFS ACL 使得权限控制可以对单个用户操作
6.异构层级存储结构 支持一个集群中,有多种不同的存储介质
四、系统架构
1.ResourceManager(RM)
• RM处理客户端请求,接收JobSubmitter提交的作业,按照作业的上下文(Context) 信息,以及从 NodeManager(NM) 收集来的状态信息,启动调度过程,分配一个 Container 作为 App Master
• RM拥有为系统中所有应用资源分配的决定权,是中心服务,做的事情就是调度、启动每一个Job所属的Application、另外监控Application的存在情况
• 与运行在每个节点上的NM进程交互,通过心跳通信,达到监控NM的目的
2. ApplicationMaster(AM)
• 应用程序的Master,每一个应用对应一个AM,类似旧的JobTracker
• 与RM协商资源
– 与Scheduler协商合适的Container
• 与NM协同工作与Scheduler协商合适的Container进行Container的监控
• 以一个普通Container的身份运行
3. NodeManager(NM)
• 是slave进程,类似TaskTracker的角色,是每个机器框架代理
• 处理来自RM的任务请求
• 接收并处理来自ApplicationMaster的Container启动、停止等各种请求
• 负责启动应用程序的Container(执行应用程序的容器),并监控他们的资源使用情况(CPU、内存、磁盘和网络),并报告给RM
4. Container
• 是任务运行环境的抽象封装
• Container只是使用NM上指定资源的权利
• AM必须向NM提供更多的信息来启动Container
• 描述任务的运行资源(节点、内存、cpu)、启动命令和运行环境
Yarn是重构的MapReduce,其根本思想:将 JobTracker 两个主要的功能分离成单独的组件,这两个功能是资源管理(RM)和任务调度(AM)
五、Yarn的执行流程与容错
1. RM挂掉:
单点故障,新版本可以基于Zookeeper实现HA高可用集群,可通过配置进行设置准备RM,主提供服务,备同步主的信息,一旦主挂掉,备立即做切换接替进行服务
2. NM挂掉:
当NM挂了,会通过心跳方式通知RM,RM将情况通知对应AM,AM作进一步处理
3. AM挂掉:
若挂掉,RM负责重启,其实RM上有一个RMApplicationMaster,是AM的AM,上面保存已经完成的task