- 选题和分工
- Hadoop安装和使用
- Yarn简介
- 核心思想
- 三大组件
- ResourceManager(RM)
- ApplicationMaster(AM)
- NodeManager(NM)
- 主要优点
我们组选择的题目是开源项目Hadoop的源码分析。Hadoop是由Apache基金会所开发的分布式系统基础架构,是一种分布式数据和计算的框架。Hadoop主要由Hdfs,MapReduce,Yarn三大部分组成。我的主要任务是Yarn部分的源码分析。
Hadoop安装和使用我在虚拟机上安装了Linux系统,并将最新版的Hadoop3.3.1安装到了Linux系统上。
Hadoop的安装和配置是一个较为复杂的过程,在这里我参照的是厦门大学林子雨老师的Hadoop安装教程(http://dblab.xmu.edu.cn/blog/install-hadoop/),该教程十分详细。
安装步骤如下:
1.创建Hadoop用户
2.更新apt
3.安装ssh,设置ssh免密登录
4.安装Java环境(JDK1.8)
5.安装Hadoop3.3.1
6.Hadoop伪分布式配置
7.运行Hadoop伪分布式实例
8.启动yarn
Apache Hadoop YARN (Yet Another Resource Negotiator,另一种资源协调者)是一种新的 Hadoop资源管理器,是从MapReduce中分离出来的,负责资源管理与任务调度。Yarn 运行于 MapReduce 之上,提供了高可用性、高扩展性。
核心思想Yarn的核心思想是将JobTracker的两个主要功能(资源管理和作业调度/监控)分离,主要方法是创建一个全局的ResourceManager(RM)和若干个针对应用程序的ApplicationMaster(AM)。这里的应用程序是指传统的MapReduce作业或作业的DAG(有向无环图)。
三大组件 ResourceManager(RM)ResourceManager 负责整个集群的资源管理和分配,是一个全局的资源管理系统。主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)。
ApplicationMaster(AM)ApplicationMaster 负责每一个具体应用程序的调度和协调,用 户 提 交 的 每 个 应 用 程 序 均 包 含 一 个 ApplicationMaster , 它 可 以 运 行 在ResourceManager 以外的机器上。
NodeManager(NM)NodeManager 是每个节点上的资源和任务管理器,它是管理这台机器的代理,负责该节点程序的运行,以及该节点资源的管理和监控。Yarn 集群每个节点都运行一个NodeManager。
主要优点大大减小了 JobTracker(也就是现在的 ResourceManager)的资源消耗,并且让监测每一个 Job 子任务 (tasks) 状态的程序分布式化了,更安全、更优美。
在新的 Yarn 中,ApplicationMaster 是一个可变更的部分,用户可以对不同的编程模型写自己的 AppMst,让更多类型的编程模型能够跑在 Hadoop 集群中,可以参考 hadoop Yarn 官方配置模板中的 mapred-site.xml 配置。
对于资源的表示以内存为单位 ( 在目前版本的 Yarn 中,没有考虑 cpu 的占用 ),比之前以剩余 slot 数目更合理。
老的框架中,JobTracker 一个很大的负担就是监控 job 下的 tasks 的运行状况,现在,这个部分就扔给 ApplicationMaster 做了,而 ResourceManager 中有一个模块叫做 ApplicationsMasters( 注意不是 ApplicationMaster),它是监测 ApplicationMaster 的运行状况,如果出问题,会将其在其他机器上重启。
Container 是 Yarn 为了将来作资源隔离而提出的一个框架。这一点应该借鉴了 Mesos 的工作,目前是一个框架,仅仅提供 java 虚拟机内存的隔离,hadoop 团队的设计思路应该后续能支持更多的资源调度和控制 , 既然资源表示成内存量,那就没有了之前的 map slot/reduce slot 分开造成集群资源闲置的尴尬情况。



