...
分类: HADOOP
2015-08-11 11:41:34
从 0.23.0 版本开始,Hadoop 的 MapReduce 框架完全重构,发生了根本的变化。新的 Hadoop MapReduce 框架命名为 MapReduceV2 或者叫 Yarn,即
MapReduce 2.0 (MRv2) 或 Yet Another Resource Negotiator (YARN)
hadoopV2 版本中将 JobTracker 两个主要的功能分离成单独的组件,这两个功能是资源管理和任务调度 / 监控ResourceManager
YARN 分层结构的本质是 ResourceManager。这个实体控制整个集群并管理应用程序向基础计算资源的分配。ResourceManager 将各个资源部分(计算、内
存、带宽等)精心安排,给基础 NodeManager(YARN 的每节点代理)。ResourceManager 还与 ApplicationMaster 一起分配资源,与 NodeManager 一
起启动和监视它们的基础应用程序。在此上下文中,ApplicationMaster 承担了以前的 TaskTracker 的一些角色,ResourceManager 承担了 JobTracker 的角色
是一个中心的服务,它做的事情是调度、启动每一个 Job 所属的 ApplicationMaster、另外监控 ApplicationMaster 的存在情况ApplicationMaster
监控 job 下的 tasks 的运行状况,ResourceManager 通过他的一个模块 ApplicationsMasters( 注意不是 ApplicationMaster),它是监测 ApplicationMaster 的运行状Nodemanager
况,如果出问题,会将其在其他机器上重启ApplicationMaster管理一个在 YARN 内运行的应用程序的每个实例。ApplicationMaster 负责协调来自 ResourceManager 的
资源,并通过 NodeManager 监视容器的执行和资源使用(CPU、内存等的资源分配)。请注意,尽管目前的资源更加传统(CPU 核心、内存),但未来会带来基于手头任
务的新资源类型(比如图形处理单元或专用处理设备)。从 YARN 角度讲,ApplicationMaster 是用户代码,因此存在潜在的安全问题。YARN 假设 ApplicationMaster 存
在错误或者甚至是恶意的,因此将它们当作无特权的代码对待
功能比较专一,就是负责 Container 状态的维护,并向 RM 保持心跳,NodeManager 提供针对集群中每个节点的服务,从监督对一个容器的终生管理到监视资源和跟踪节
点健康。MRv1 通过插槽管理 Map 和 Reduce 任务的执行,而 NodeManager 管理抽象容器,这些容器代表着可供一个特定应用程序使用的针对每个节点的资源。YARN
继续使用HDFS 层。它的主要 NameNode 用于 元数据服务,而 DataNode 用于分散在一个集群中的复制存储服务
ResourceManager 协商一个容器的必要资源,启动一个 ApplicationMaster 来表示已提交的应用程序。通过使用一个资源请求协议,ApplicationMaster 协商每个节点上
供应用程序使用的资源容器。执行应用程序时,ApplicationMaster 监视容器直到完成。当应用程序完成时,ApplicationMaster 从 ResourceManager 注销其容器,执行
周期就完成了
关于resourcemanager 介绍的链接:http://zengzhaozheng.blog.51cto.com/8219051/1542067
改变项 | 原框架中 | 新框架中(Yarn) | 备注 |
---|---|---|---|
配置文件位置 | ${hadoop_home_dir}/conf | ${hadoop_home_dir}/etc/hadoop/ | Yarn 框架也兼容老的 ${hadoop_home_dir}/conf 位置配置,启动时会检测是否存在老的 conf 目录,如果存在将加载 conf 目录下的配置,否则加载 etc 下配置 |
启停脚本 | ${hadoop_home_dir}/bin/start(stop)-all.sh |
${hadoop_home_dir}/sbin/start(stop)-dfs.sh ${hadoop_home_dir}/bin/start(stop)-all.sh |
新的 Yarn 框架中启动分布式文件系统和启动 Yarn 分离,启动 / 停止分布式文件系统的命令位于 ${hadoop_home_dir}/sbin 目录下,启动 / 停止 Yarn 框架位于 ${hadoop_home_dir}/bin/ 目录下 |
JAVA_HOME 全局变量 | ${hadoop_home_dir}/bin/start-all.sh 中 |
${hadoop_home_dir}/etc/hadoop/hadoop-env.sh ${hadoop_home_dir}/etc/hadoop/Yarn-env.sh |
Yarn 框架中由于启动 hdfs 分布式文件系统和启动 MapReduce 框架分离,JAVA_HOME 需要在 hadoop-env.sh 和 Yarn-env.sh 中分别配置 |
HADOOP_LOG_DIR 全局变量 | 不需要配置 | ${hadoop_home_dir}/etc/hadoop/hadoop-env.sh |
老框架在 LOG,conf,tmp 目录等均默认为脚本启动的当前目录下的 log,conf,tmp 子目录 Yarn 新框架中 Log 默认创建在 Hadoop 用户的 home 目录下的 log 子目录,因此最好在 ${hadoop_home_dir}/etc/hadoop/hadoop-env.sh 配置 HADOOP_LOG_DIR,否则有可能会因为你启动 hadoop 的用户的 .bashrc 或者 .bash_profile 中指定了其他的 PATH 变量而造成日志位置混乱,而该位置没有访问权限的话启动过程中会报错 |
配置文件 | 配置项 | Hadoop 0.20.X 配置 | Hadoop 0.23.X 配置 | 说明 |
---|---|---|---|---|
core-site.xml | 系统默认分布式文件 URI | fs.default.name | fs.defaultFS | |
hdfs-site.xml | DFS name node 存放 name table 的目录 | dfs.name.dir | dfs.namenode.name.dir | 新框架中 name node 分成 dfs.namenode.name.dir( 存放 naname table 和 dfs.namenode.edits.dir(存放 edit 文件),默认是同一个目录 |
DFS data node 存放数据 block 的目录 | dfs.data.dir | dfs.datanode.data.dir | 新框架中 DataNode 增加更多细节配置,位于 dfs.datanode. 配置项下,如dfs.datanode.data.dir.perm(datanode local 目录默认权限);dfs.datanode.address(datanode 节点监听端口);等 | |
分布式文件系统数据块复制数 | dfs.replication | dfs.replication | 新框架与老框架一致,值建议配置为与分布式 cluster 中实际的 DataNode 主机数一致 | |
mapred-site.xml | Job 监控地址及端口 | mapred.job.tracker | 无 | 新框架中已改为 Yarn-site.xml 中的 resouceManager 及 nodeManager 具体配置项,新框架中历史 job 的查询已从 Job tracker 剥离,归入单独的mapreduce.jobtracker.jobhistory 相关配置, |
第三方 MapReduce 框架 | 无 | mapreduce.framework.name | 新框架支持第三方 MapReduce 开发框架以支持如 SmartTalk/DGSG 等非 Yarn 架构,注意通常情况下这个配置的值都设置为 Yarn,如果没有配置这项,那么提交的 Yarn job 只会运行在 locale 模式,而不是分布式模式。 | |
Yarn-site.xml | The address of the applications manager interface in the RM | 无 | Yarn.resourcemanager.address | 新框架中 NodeManager 与 RM 通信的接口地址 |
The address of the scheduler interface | 无 | Yarn.resourcemanager.scheduler.address | 同上,NodeManger 需要知道 RM 主机的 scheduler 调度服务接口地址 | |
The address of the RM web application | 无 | Yarn.resourcemanager.webapp.address | 新框架中各个 task 的资源调度及运行状况通过通过该 web 界面访问 | |
The address of the resource tracker interface | 无 | Yarn.resourcemanager.resource-tracker.address |
新框架中 NodeManager 需要向 RM 报告任务运行状态供 Resouce 跟踪,因此 NodeManager 节点主机需要知道 RM 主机的 tracker 接口地址 |
主备节点的自动切换需要配置zookeeper。active namenode和standby namenode把他们的状态实时记录到zookeeper中,zookeeper监视他们的状态变化。当
zookeeper发现active namenode挂掉后,会自动把standby namenode切换成active namenode
点击(此处)折叠或打开
点击(此处)折叠或打开
3 在Hadoop Master上执行命令
(首次启动需执行这个命令,以后跳过这个步骤,这个执行前,请先启动journalnode,否则会报错)
点击(此处)折叠或打开
备注:
格式化成功会生成tmp文件,其路径为core-site.xml中的hadoop.tmp.dir配置路径,将其拷到其他节点
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
8 启动httpfs
开启 httpfs 服务使得对外可以提高 http 的restful接口服 务
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开