• HadoopMRv2
Yarn
ResourceManager
ApplicationMaster
Nodemanager

hadoopV2HA简介及启动过程-LMLPHP
小结:


表 1. 新旧 Hadoop 脚本 / 变量 / 位置变化表

改变项原框架中新框架中(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 变量而造成日志位置混乱,而该位置没有访问权限的话启动过程中会报错


注:
由于新的 Yarn 框架与原 Hadoop MapReduce 框架相比变化较大,核心的配置文件中很多项在新框架中已经废弃,而新框架中新增了很多其他配置项,看
下表所示会更加清晰



表 2. 新旧 Hadoop 框架配置项变化表
配置文件配置项Hadoop 0.20.X 配置Hadoop 0.23.X 配置说明
core-site.xml系统默认分布式文件 URIfs.default.namefs.defaultFS
hdfs-site.xmlDFS name node 存放 name table 的目录dfs.name.dirdfs.namenode.name.dir新框架中 name node 分成 dfs.namenode.name.dir( 存放 naname table 和 dfs.namenode.edits.dir(存放 edit 文件),默认是同一个目录
DFS data node 存放数据 block 的目录dfs.data.dirdfs.datanode.data.dir新框架中 DataNode 增加更多细节配置,位于 dfs.datanode. 配置项下,如dfs.datanode.data.dir.perm(datanode local 目录默认权限);dfs.datanode.address(datanode 节点监听端口);等
分布式文件系统数据块复制数dfs.replicationdfs.replication新框架与老框架一致,值建议配置为与分布式 cluster 中实际的 DataNode 主机数一致
mapred-site.xmlJob 监控地址及端口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.xmlThe address of the applications manager interface in the RMYarn.resourcemanager.address新框架中 NodeManager 与 RM 通信的接口地址
The address of the scheduler interfaceYarn.resourcemanager.scheduler.address同上,NodeManger 需要知道 RM 主机的 scheduler 调度服务接口地址
The address of the RM web applicationYarn.resourcemanager.webapp.address新框架中各个 task 的资源调度及运行状况通过通过该 web 界面访问
The address of the resource tracker interfaceYarn.resourcemanager.resource-tracker.address新框架中 NodeManager 需要向 RM 报告任务运行状态供 Resouce 跟踪,因此 NodeManager 节点主机需要知道 RM 主机的 tracker 接口地址



zookeeper

主备节点的自动切换需要配置zookeeper。active namenode和standby namenode把他们的状态实时记录到zookeeper中,zookeeper监视他们的状态变化。当
zookeeper发现active namenode挂掉
后,会自动把standby namenode切换成active namenode


journalnode
hadoop2.0的HA 机制有两个namenode,一个是active namenode,状态是active;另外一个是standby namenode,状态是standby,active namenode和
standby namenode之间通过
JN(journalnode,QJM方式)来同步数据

active namenode和standby namenode之间是通过一组journalnode(数量是奇数,可以是3,5,7...,2n+1)来共享数据。active namenode把最近的edits文件
写到2n+1个journalnode上,只要有n+1个写入成功就认为这次写入操作成功了,然后standby namenode就可以从journalnode上读取了。可以看到,QJM方式
容错的机制,可以容忍n个journalnode的失败

主备节点的自动切换需要配置zookeeper。active namenode和standby namenode把他们的状态实时记录到zookeeper中,zookeeper监视他们的状态变化。当
zookeeper
发现active namenode挂掉后,会自动把standby namenode切换成active namenode







  • HA启动流程

1 启动zookeeper集群

点击(此处)折叠或打开

  1. 启动zookeeper(分别在zookeeper主机上启动zK进程
  2. $ zkServer.sh start
  3. JMX enabled by default
    Using config: /home/yinmo/zookeeper-3.4.6/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED

  4. 查看zookeeper状态
  5. $ zkServer.sh status
  6. JMX enabled by default
    Using config: /home/yinmo/zookeeper-3.4.6/bin/../conf/zoo.cfg
    Mode: leader
  7. $ jps

2 启动journalnode

点击(此处)折叠或打开

  1. 分别在HadoopMaster主机上启动journalnode
  2. $ sbin/hadoop-daemon.sh start journalnode
  3. starting journalnode, logging to /home/yinmo/hadoop/logs//hadoop-yinmo-journalnode-Master.Hadoop.out

  4. $ jps
  5. 10288 QuorumPeerMain
    10403 JournalNode
    10437 Jps


3 在Hadoop Master上执行命令
(首次启动需执行这个命令,以后跳过这个步骤,这个执行前,请先启动journalnode,否则会报错)

点击(此处)折叠或打开

  1. $ ./hdfs namenode -format

备注:
格式化成功会生成tmp文件,其路径为core-site.xml中的hadoop.tmp.dir配置路径,将其拷到其他节点

格式化ZK
(首次启动需执行这个命令,以后跳过这个步骤
格式化zookeeper集群 目的是在zookeeper集群建立HA相应的节点,仅在Hadoop Master上执行命令

点击(此处)折叠或打开

  1. $ /usr/local/hadoop/bin/hdfs zkfc –formatZK

5 启动namenode,通过jps验证,或者网页验证

点击(此处)折叠或打开

  1. 启动namenode
  2. $ sbin/start-dfs.sh
  3. Starting namenodes on [Master.Hadoop]
  4. Master.Hadoop: starting namenode, logging to /home/yinmo/hadoop/logs//hadoop-yinmo-namenode-Master.Hadoop.out
  5. 192.168.2.103: starting datanode, logging to /home/yinmo/hadoop/logs/hadoop-yinmo-datanode-Slave103.Hadoop.out
  6. 192.168.2.101: starting datanode, logging to /home/yinmo/hadoop/logs/hadoop-yinmo-datanode-Slave101.Hadoop.out
  7. 192.168.2.102: starting datanode, logging to /home/yinmo/hadoop/logs/hadoop-yinmo-datanode-Slave102.Hadoop.out

6 启动yarn

点击(此处)折叠或打开

  1. 启动yarn
  2. $ sbin/start-yarn.sh
  3. starting yarn daemons
  4. starting resourcemanager, logging to /home/yinmo/hadoop/logs/yarn-yinmo-resourcemanager-Master.Hadoop.out
  5. 192.168.2.102: starting nodemanager, logging to /home/yinmo/hadoop/logs/yarn-yinmo-nodemanager-Slave102.Hadoop.out
  6. 192.168.2.103: starting nodemanager, logging to /home/yinmo/hadoop/logs/yarn-yinmo-nodemanager-Slave103.Hadoop.out
  7. 192.168.2.101: starting nodemanager, logging to /home/yinmo/hadoop/logs/yarn-yinmo-nodemanager-Slave101.Hadoop.out

7 启动ZooKeeperFailoverController,在hadoop集群各节点分别执行
注:
在hadoopHA集群中,执行start-dfs.sh已经启动了这个进程,这里单独列出来只是防止这个进程挂了之后,方便重启

点击(此处)折叠或打开

  1. $ sbin/hadoop-daemon.sh start zkfc
  2. $ jps
  3. 12342 DFSZKFailoverController

8 启动httpfs

开启 httpfs 服务使得对外可以提高 http 的restful接口服 务

点击(此处)折叠或打开

  1. $ ./httpfs.sh start
  2. $ jps
  3. Bootstrap


8 spark 

点击(此处)折叠或打开

  1. $ ./start-master.sh
  2. $ ./start-slaves.sh
  3. 分别在主机和备机查看spark进程
  4. 主机
  5. $ jps
  6. 6421 Master
  7. 备机
  8. $ jps
  9. 5103 Worker

9 同步active数据到standby

点击(此处)折叠或打开

  1. $ hdfs namenode –bootstrapStandby

10 Master主机手动切换

点击(此处)折叠或打开

  1. $ hdfs haadmin -failover --forcefence --forceactive nna nns









11-10 23:26