请教hadoop ha原理2.0的ha如何配置

Hadoop2.0 HA集群搭建步骤
1.1.1. 集群节点分配
NameNode (active)
Resourcemanager (active)
NameNode (standby)
ResourceManager (standby)
NodeManager
JournalNode
NodeManager
JournalNode
NodeManager
JournalNode
1.1.2. 安装步骤
0.永久关闭每台机器的防火墙
执行:service iptables stop
再次执行:chkconfig iptables off
1.为每台机器配置主机名以及hosts文件
配置主机名=》执行: vim
/etc/sysconfig/network =》然后执行
主机名=》达到不重启生效目的
配置hosts文件=》执行:vim /etc/hosts
192.168.234.21 hadoop01
192.168.234.22 hadoop02
192.168.234.23 hadoop03
192.168.234.24 hadoop04
192.168.234.25 hadoop05
192.168.234.26 hadoop06
2.通过远程命令将配置好的hosts文件 scp到其他5台节点上
/etc/hosts
hadoop02: /etc
3.为每天机器配置ssh免秘钥登录
执行:ssh-keygen
ssh-copy-id root@hadoop01 (分别发送到6台节点上)
4.前三台机器安装和配置zookeeper
配置conf目录下的zoo.cfg以及创建myid文件
(zookeeper集群安装具体略)
5.为每台机器安装jdk和配置jdk环境
6.为每台机器配置主机名,然后每台机器重启,(如果不重启,也可以配合:hostname
hadoop01生效)
执行: vim /etc/sysconfig/network 进行编辑
7.安装和配置01节点的hadoop
配置hadoop-env.sh
配置jdk安装所在目录
配置hadoop配置文件所在目录
8.配置core-site.xml
&configuration&
&!--用来指定hdfs的老大,ns为固定属性名,表示两个namenode--&
&property&
&name&fs.defaultFS&/name&
&value&hdfs://ns&/value&
&/property&
&!--用来指定hadoop运行时产生文件的存放目录--&
&property&
&name&hadoop.tmp.dir&/name&
&value&/home/software/hadoop-2.7.1/tmp&/value&
&/property&
&!--执行zookeeper地址--&
&property&
&name&ha.zookeeper.quorum&/name&
&value&hadoop01:2181,hadoop02:2181,hadoop03:2181&/value&
&/property&
&/configuration&
9.配置01节点的hdfs-site.xml
&configuration&
&!--执行hdfs的nameservice为ns,和core-site.xml保持一致--&
&property&
&name&dfs.nameservices&/name&
&value&ns&/value&
&/property&
&!--ns下有两个namenode,分别是nn1,nn2--&
&property&
&name&dfs.ha.namenodes.ns&/name&
&value&nn1,nn2&/value&
&/property&
&!--nn1的RPC通信地址--&
&property&
&name&dfs.namenode.rpc-address.ns.nn1&/name&
&value&hadoop01:9000&/value&
&/property&
&!--nn1的http通信地址--&
&property&
&name&dfs.namenode.http-address.ns.nn1&/name&
&value&hadoop01:50070&/value&
&/property&
&!--nn2的RPC通信地址--&
&property&
&name&dfs.namenode.rpc-address.ns.nn2&/name&
&value&hadoop02:9000&/value&
&/property&
&!--nn2的http通信地址--&
&property&
&name&dfs.namenode.http-address.ns.nn2&/name&
&value&hadoop02:50070&/value&
&/property&
&!--指定namenode的元数据在JournalNode上的存放位置,这样,namenode2可以从jn集群里获取最新的namenode的信息,达到热备的效果--&
&property&
&name&dfs.namenode.shared.edits.dir&/name&
&value&qjournal://hadoop04:8485;hadoop05:8485;hadoop06:8485/ns&/value&
&/property&
&!--指定JournalNode存放数据的位置--&
&property&
&name&dfs.journalnode.edits.dir&/name&
&value&/home/software/hadoop-2.7.1/journal&/value&
&/property&
&!--开启namenode故障时自动切换--&
&property&
&name&dfs.ha.automatic-failover.enabled&/name&
&value&true&/value&
&/property&
&!--配置切换的实现方式--&
&property&
&name&dfs.client.failover.proxy.provider.ns&/name&
&value&org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider&/value&
&/property&
&!--配置隔离机制--&
&property&
&name&dfs.ha.fencing.methods&/name&
&value&sshfence&/value&
&/property&
&!--配置隔离机制的ssh登录秘钥所在的位置--&
&property&
&name&dfs.ha.fencing.ssh.private-key-files&/name&
&value&/root/.ssh/id_rsa&/value&
&/property&
&!--配置namenode数据存放的位置,可以不配置,如果不配置,默认用的是core-site.xml里配置的hadoop.tmp.dir的路径--&
&property&
&name&dfs.namenode.name.dir&/name&
&value&file:///home/software/hadoop-2.7.1/tmp/namenode&/value&
&/property&
&!--配置datanode数据存放的位置,可以不配置,如果不配置,默认用的是 core-site.xml里配置的hadoop.tmp.dir的路径--&
&property&
&name&dfs.datanode.data.dir&/name&
&value&file:///home/software/hadoop-2.7.1/tmp/datanode&/value&
&/property&
&!--配置block副本数量--&
&property&
&name&dfs.replication&/name&
&value&3&/value&
&/property&
&!--设置hdfs的操作权限,false表示任何用户都可以在hdfs上操作文件--&
&property&
&name&dfs.permissions&/name&
&value&false&/value&
&/property&
&/configuration&
10.配置mapred-site.xml
&configuration&
&property&
&!--指定mapreduce运行在yarn上--&
&name&mapreduce.framework.name&/name&
&value&yarn&/value&
&/property&
&/configuration&
11.配置yarn-site.xml
&configuration&
&!-- 开启YARN HA --&
&property&
&name&yarn.resourcemanager.ha.enabled&/name&
&value&true&/value&
&/property&
&!-- 指定两个resourcemanager的名称 --&
&property&
&name&yarn.resourcemanager.ha.rm-ids&/name&
&value&rm1,rm2&/value&
&/property&
&!-- 配置rm1,rm2的主机 --&
&property&
&name&yarn.resourcemanager.hostname.rm1&/name&
&value&hadoop01&/value&
&/property&
&property&
&name&yarn.resourcemanager.hostname.rm2&/name&
&value&hadoop03&/value&
&/property&
&!--开启yarn恢复机制--&
&property&
&name&yarn.resourcemanager.recovery.enabled&/name&
&value&true&/value&
&/property&
&!--执行rm恢复机制实现类--&
&property&
&name&yarn.resourcemanager.store.class&/name&
&value&org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore&/value&
&/property&
&!-- 配置zookeeper的地址 --&
&property&
&name&yarn.resourcemanager.zk-address&/name&
&value&hadoop01:2181,hadoop02:2181,hadoop03:2181&/value&
&description&For multiple zk services, separate them with comma&/description&
&/property&
&!-- 指定YARN HA的名称 --&
&property&
&name&yarn.resourcemanager.cluster-id&/name&
&value&yarn-ha&/value&
&/property&
&property&
&!--指定yarn的老大 resoucemanager的地址--&
&name&yarn.resourcemanager.hostname&/name&
&value&hadoop01&/value&
&/property&
&property&
&!--NodeManager获取数据的方式--&
&name&yarn.nodemanager.aux-services&/name&
&value&mapreduce_shuffle&/value&
&/property&
&/configuration&
12.配置slaves文件
配置代码:
13.配置hadoop的环境变量(可不配)
JAVA_HOME=/home/software/jdk1.8
HADOOP_HOME=/home/software/hadoop-2.7.1
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
export JAVA_HOME PATH CLASSPATH HADOOP_HOME
14.根据配置文件,创建相关的文件夹,用来存放对应数据
在hadoop-2.7.1目录下创建:
①journal目录
②创建tmp目录
③在tmp目录下,分别创建namenode目录和datanode目录
15.通过scp 命令,将hadoop安装目录远程copy到其他5台机器上
比如向hadoop02节点传输:
hadoop-2.7.1
hadoop02:/home/software
然后把/etc/profile 发往其他5台机器,别忘了每台机器执行:source /etc/profile
1.1.3. Hadoop集群启动
16.启动zookeeper集群
在Zookeeper安装目录的bin目录下执行:sh zkServer.sh start
17.格式化zookeeper
在zk的leader节点上执行:
hdfs zkfc -formatZK,这个指令的作用是在zookeeper集群上生成ha节点(ns节点)
注:18--24步可以用一步来替代:进入hadoop安装目录的sbin目录,执行:start-dfs.sh 。但建议还是按部就班来执行,比较可靠。
18.启动journalnode集群
在04、05、06节点上执行:
切换到hadoop安装目录的sbin目录下,执行:
sh hadoop-daemons.sh start journalnode
然后执行jps命令查看:
19.格式化01节点的namenode
在01节点上执行:
hadoop namenode -format
20.启动01节点的namenode
在01节点上执行:
hadoop-daemon.sh start namenode
21.把02节点的 namenode节点变为standby namenode节点
在02节点上执行:
hdfs namenode
-bootstrapStandby
22.启动02节点的namenode节点
在02节点上执行:
hadoop-daemon.sh start namenode
23.在04,05,06节点上启动datanode节点
在04,05,06节点上执行: hadoop-daemon.sh start datanode
24.启动zkfc(启动FalioverControllerActive)
在01,02节点上执行:
hadoop-daemon.sh start zkfc
25.在01节点上启动 主Resourcemanager
在01节点上执行:start-yarn.sh
启动成功后,04,05,06节点上应该有nodemanager 的进程
26.在03节点上启动副 Resoucemanager
在03节点上执行:yarn-daemon.sh start resourcemanager
输入地址:
输入地址:
然后停掉01节点的namenode,此时返现standby的namenode变为active。
28.查看yarn的管理地址
停掉:yarn-daemon.sh stop resourcemanager
启动:yarn-daemon.sh start resourcemanager
1.排查防火墙
2.排查ip,如果不是固定ip的话,要看下ip是否被更换
ip和主机名是否对应上
5.排查zk的配置文件
6.排查hadoop的配置文件
此外注意,job连接的地址是active的 namenode的地址
1.1. 集群环境准备
1.连接克隆6个虚拟机
2.关闭6个虚拟机的防火墙
3.通过xshell连好
4.配置每台虚拟机的主机名和hosts文件
5.配置免密码登录,
注意,内存至少一个G
没有更多推荐了,
(window.slotbydup=window.slotbydup || []).push({
id: '4770930',
container: s,
size: '300,250',
display: 'inlay-fix'Hadoop2.0 HA的主备自动切换_服务器应用_Linux公社-Linux系统门户网站
你好,游客
Hadoop2.0 HA的主备自动切换
来源:Linux社区&
作者:maisr25
在《2.0 QJM方式的HA的配置》(见)一文中介绍了HA的配置,是通过手工进行主备切换的。本文在这基础上,继续介绍HA的主备自动切换(automatic failover)的配置。自动切换是通过配置zookeeper来实现的,关于zookeeper的安装和配置,在这里不做介绍了,大家可以参考网上的资料。
假定已经有一个zookeeper的集群,3台机器如下:
zookeeper1
zookeeper2
zookeeper3
两个namenode节点如下:
namenode1namenode2
只涉及到core-site.xml和hdfs-site.xml两个配置文件,其他配置可以文件参考《hadoop2.0的安装和基本配置》一文。
2.1 core-site.xml&
需要增加ha.zookeeper.quorum参数,加上zookeeper的服务地址
完整配置如下:
&configuration&
& & & & &property&
& & & & & & & & &name&fs.defaultFS&/name&
& & & & & & & & &value&hdfs://mycluster&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&hadoop.tmp.dir&/name&
& & & & & & & & &value&/home/tmp/hadoop2.0&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&ha.zookeeper.quorum&/name&
& & & & & & & & &value&zookeeper1:2181,zookeeper2:2181,zookeeper3:2181&/value&
& & & & &/property&
&/configuration&
2.2 hdfs-site.xml&
&configuration&
& & & & &property&
& & & & & & & & &name&dfs.replication&/name&
& & & & & & & & &value&1&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.name.dir&/name&
& & & & & & & & &value&/home/dfs/name&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.datanode.data.dir&/name&
& & & & & & & & &value&/home/dfs/data&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.permissions&/name&
& & & & & & & & &value&false&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.nameservices&/name&
& & & & & & & & &value&mycluster&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.ha.namenodes.mycluster&/name&
& & & & & & & & &value&nn1,nn2&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.rpc-address.mycluster.nn1&/name&
& & & & & & & & &value&namenode1:8020&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.rpc-address.mycluster.nn2&/name&
& & & & & & & & &value&namenode2:8020&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.http-address.mycluster.nn1&/name&
& & & & & & & & &value&namenode1:50070&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.http-address.mycluster.nn2&/name&
& & & & & & & & &value&namenode2:50070&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.shared.edits.dir&/name&
& & & & & & & & &value&qjournal://journalnode1:8485;journalnode2:8485;journalnode3:8485/mycluster&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.journalnode.edits.dir&/name&
& & & & & & & & &value&/home/dfs/journal&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.client.failover.proxy.provider.mycluster&/name&
& & & & & & & & &value&org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.ha.fencing.methods&/name&
& & & & & & & & &value&shell(/bin/true)&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.ha.automatic-failover.enabled&/name&
& & & & & & & & &value&true&/value&
& & & & &/property&
&/configuration&
dfs.ha.automatic-failover.enabled
需要设置为true,启动自动切换。
dfs.ha.fencing.methods
这里我们把fencing方法设置为shell,一是为了方便测试,二是采用QJM方式的HA本身就有fencing功能,不需要用这个参数中的fencing功能,详解请参考《hadoop2.0 QJM方式的HA的配置》一文。你用sshfence的方法也是可以的,不过要注意ssh连接的问题和一些权限的问题。
3 在zookeeper中初始化&
$HADOOP_HOME/bin/hdfs zkfc -formatZK
运行这个命令后,会在zookeeper上创建一个/hadoop-ha/mycluster/的znode,用来存放automatic failover的数据。
4 启动zkfc(zookeeper failover controller)&
需要在namenode1和namenode2上都启动zkfc daemon进程。
$HADOOP_HOME/sbin/hadoop-daemon.sh start zkfc
5 启动HDFS&
可以参考《Hadoop2.2.0 的安装和基本配置》(见 )和《Hadoop2.0 QJM方式的HA的配置》(见 )这两篇文章。
在两个namenode都启动之后,会发现,其中一个namenode会自动切换成active状态,不需要手工切换。
更多详情见请继续阅读下一页的精彩内容:
相关资讯 & & &
& (02月07日)
& (12/18/:28)
& (02月09日)
& (12/18/:56)
& (12/18/:20)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款Hadoop2.0 federation与HA的配置_服务器应用_Linux公社-Linux系统门户网站
你好,游客
Hadoop2.0 federation与HA的配置
来源:Linux社区&
作者:sstudent
在上一篇文章《2.0 federation的配置》(见 )中介绍了单独配置federation,本文继续介绍同时配置HA和federation。关于zookeeper的安装和配置,这里不做介绍,大家可以参考网上的资料。
假定已经有一个zookeeper集群,包含3个zookeeper节点:
zookeeper1
zookeeper2
zookeeper3
另外,还有4个namenode节点:
和3个journalnode节点:
journalnode1
journalnode2
journalnode3
其他机器角色本文中不涉及的可以参考《hadoop2.0的安装和基本配置》一文。
2 federation和HA的结构&
我们假定hadoop集群的clusterid是hellokitty,有2个namespace/name service,分别是&mycluster&和&yourcluster&,分别挂载在viewfs的&/my&和&/your&目录下。
&mycluster&和&yourcluster&都配置成HA。其中&mycluster&的两个主备namenode节点分别是namenode1和namenode2,NN_ID分别是&nn1&和&nn2&;&yourcluster&的两个主备namenode节点分别是namenode3和namenode4,NN_ID分别是的&nn1&和&nn2&。
如下图所示:
3 federation和HA的配置&
federation和HA的配置只涉及到core-site.xml和hdfs-site.xml两个配置文件,其他配置可以文件参考《Hadoop2.0的安装和基本配置》一文(见 )。
为了简单起见,我们先不配置HA的自动切换,后面再把HA的自动切换配置上。
3.1 core-site.xml&
&configuration&
& & & & &property&
& & & & & & & & &name&fs.defaultFS&/name&
& & & & & & & & &value&viewfs:///&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&fs.viewfs.mounttable.default.link./my&/name&
& & & & & & & & &value&hdfs://mycluster/&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&fs.viewfs.mounttable.default.link./your&/name&
& & & & & & & & &value&hdfs://yourcluster/&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&hadoop.tmp.dir&/name&
& & & & & & & & &value&/home/tmp/hadoop2.0&/value&
& & & & &/property&
&/configuration&
3.2 hdfs-site.xml&
&configuration&
& & & & &property&
& & & & & & & & &name&dfs.replication&/name&
& & & & & & & & &value&1&/value&
& & & & &/property&
& & & &property&
& & & & & & & & &name&dfs.namenode.name.dir&/name&
& & & & & & & & &value&/home/dfs/name&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.datanode.data.dir&/name&
& & & & & & & & &value&/home/dfs/data&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.datanode.edit.dir&/name&
& & & & & & & & &value&/home/dfs/edit&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.permissions&/name&
& & & & & & & & &value&false&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.nameservices&/name&
& & & & & & & & &value&mycluster,yourcluster&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.ha.namenodes.mycluster&/name&
& & & & & & & & &value&nn1,nn2&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.ha.namenodes.yourcluster&/name&
& & & & & & & & &value&nn1,nn2&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.rpc-address.mycluster.nn1&/name&
& & & & & & & & &value&namenode1:8020&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.rpc-address.mycluster.nn2&/name&
& & & & & & & & &value&namenode2:8020&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.rpc-address.yourcluster.nn1&/name&
& & & & & & & & &value&namenode1:8020&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.rpc-address.yourcluster.nn2&/name&
& & & & & & & & &value&namenode2:8020&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.http-address.mycluster.nn1&/name&
& & & & & & & & &value&namenode1:50070&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.http-address.mycluster.nn2&/name&
& & & & & & & & &value&namenode2:50070&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.http-address.yourcluster.nn1&/name&
& & & & & & & & &value&namenode1:50070&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.namenode.http-address.yourcluster.nn2&/name&
& & & & & & & & &value&namenode2:50070&/value&
& & & & &/property&
&!--dfs.namenode.shared.edits.dir的配置在namenode1和namenode2上用以下这个--&
& & & & &property&
& & & & & & & & &name&dfs.namenode.shared.edits.dir&/name&
& & & & & & & & &value&qjournal://journalnode1:8485;journalnode2:8485;journalnode3:8485/mycluster&/value&
& & & & &/property&
&!--dfs.namenode.shared.edits.dir的配置在namenode3和namenode4上用以下这个
& & & & &property&
& & & & & & & & &name&dfs.namenode.shared.edits.dir&/name&
& & & & & & & & &value&qjournal://journalnode1:8485;journalnode2:8485;journalnode3:8485/yourcluster&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.journalnode.edits.dir&/name&
& & & & & & & & &value&/home/dfs/journal&/value&
& & & & &/property&
& & & & &property&& & &
& & & & & & & & &name&dfs.client.failover.proxy.provider.mycluster&/name&
& & & & & & & & &value&org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.client.failover.proxy.provider.yourcluster&/name&
& & & & & & & & &value&org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider&/value&
& & & & &/property&
& & & & &property&
& & & & & & & & &name&dfs.ha.fencing.methods&/name&
& & & & & & & & &value&shell(/bin/true)&/value&
& & & & &/property&
&/configuration&
dfs.namenode.shared.edits.dir
这个参数要注意,在两组HA中的值是不一样的,即在&mycluster&(namenode1和namenode2)和是&yourcluster&(namenode3和namenode4)中是不同。
更多详情见请继续阅读下一页的精彩内容:
相关资讯 & & &
& (10/08/:58)
& (05/09/:10)
& (05/03/:15)
& (09/07/:46)
& (05/04/:38)
& (05/03/:18)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款上一次搭建的Hadoop是一个伪分布式的,这次我们做一个用于个人的Hadoop集群(希望对大家搭建集群有所帮助):
大家可能用到的资料Zookeeper的jar包:
链接:http://pan.baidu.com/s/1mi1MqGo 密码:4qds
需要Hadoop和JDK的jar包,去上一篇博文[搭建Hadoop平台(新手入门)]获取
集群节点分配:
  Park01
    Zookeeper
    NameNode (active)
    Resourcemanager (active)
  Park02
    Zookeeper
    NameNode (standby)
  Park03
    Zookeeper
    ResourceManager (standby)
  Park04
    DataNode
    NodeManager
    JournalNode
  Park05
    DataNode
    NodeManager
    JournalNode
  Park06
    DataNode
    NodeManager
    JournalNode
  0.永久关闭每台机器的防火墙
    执行:service iptables stop
    再次执行:chkconfig iptables off
  1.为每台机器配置主机名以及hosts文件
    配置主机名=》执行: vim /etc/sysconfig/network =》然后执行 hostname&主机名=》达到不重启生效目的
    配置hosts文件=》执行:vim /etc/hosts
    示例:
      127.0.0.1 localhost
      ::1 & & & & && localhost
      192.168.234.21 hadoop01
      192.168.234.22 hadoop02
      192.168.234.23 hadoop03
      192.168.234.24 hadoop04
      192.168.234.25 hadoop05
      192.168.234.26 hadoop06
  2.通过远程命令将配置好的hosts文件&scp到其他5台节点上
    执行:scp /etc/hosts hadoop02: /etc
  3.为每天机器配置ssh免秘钥登录
    执行:ssh-keygen ssh-copy-id root@hadoop01 (分别发送到6台节点上)
  4.前三台机器安装和配置zookeeper配置conf目录下的zoo.cfg以及创建myid文件(zookeeper集群安装具体略)
  5.为每台机器安装jdk和配置jdk环境
  6.为每台机器配置主机名,然后每台机器重启,(如果不重启,也可以配合:hostname hadoop01生效)
    执行: vim /etc/sysconfig/network&进行编辑
  7.安装和配置01节点的hadoop
    配置hadoop-env.sh
    配置jdk安装所在目录配置hadoop配置文件所在目录
  8.配置core-site.xml
    &configuration&
    &!--用来指定hdfs的老大,ns为固定属性名,表示两个namenode--&
    &property&
    &name&fs.defaultFS&/name&
    &value&hdfs://ns&/value&
    &/property&
    &!--用来指定hadoop运行时产生文件的存放目录--& &property&
    &name&hadoop.tmp.dir&/name& &value&/home/software/hadoop-2.7.1/tmp&/value& &/property&
    &!--执行zookeeper地址--&
    &property&
    &name&ha.zookeeper.quorum&/name&
    &value&hadoop01:2181,hadoop02:2181,hadoop03:2181&/value&
    &/property&
    &/configuration&
  9.配置01节点的hdfs-site.xml
    配置:
  &configuration&
  &!--执行hdfs的nameservice为ns,和core-site.xml保持一致--&
&property&
&name&dfs.nameservices&/name&
&value&ns&/value&
&/property& &!--ns下有两个namenode,分别是nn1,nn2--&
&property&
&name&dfs.ha.namenodes.ns&/name&
&value&nn1,nn2&/value&
&/property&
&!--nn1的RPC通信地址--&
&property&
&name&dfs.namenode.rpc-address.ns.nn1&/name&
&value&hadoop01:9000&/value&
&/property&
&!--nn1的http通信地址--&
&property&
&name&dfs.namenode.http-address.ns.nn1&/name&
&value&hadoop01:50070&/value&
&/property&
&!--nn2的RPC通信地址--&
&property&
&name&dfs.namenode.rpc-address.ns.nn2&/name&
&value&hadoop02:9000&/value&
&/property&
&!--nn2的http通信地址--&
&property&
&name&dfs.namenode.http-address.ns.nn2&/name&
&value&hadoop02:50070&/value&
&/property&
&!--指定namenode的元数据在JournalNode上的存放位置,这样,namenode2可以从jn集群里获取最新的namenode的信息,达到热备的效果--&
&property&
&name&dfs.namenode.shared.edits.dir&/name&
&value&qjournal://hadoop04:8485;hadoop05:8485;hadoop06:8485/ns&/value&
&/property&
&!--指定JournalNode存放数据的位置--&
&property&
&name&dfs.journalnode.edits.dir&/name&
&value&/home/software/hadoop-2.7.1/journal&/value&
&/property&
&!--开启namenode故障时自动切换--&
&property&
&name&dfs.ha.automatic-failover.enabled&/name&
&value&true&/value&
&/property&
&!--配置切换的实现方式--&
&property&
&name&dfs.client.failover.proxy.provider.ns&/name&
&value&org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider&/value&
&/property&
&!--配置隔离机制--&
&property&
&name&dfs.ha.fencing.methods&/name&
&value&sshfence&/value&
&/property&
&!--配置隔离机制的ssh登录秘钥所在的位置--&
&property&
&name&dfs.ha.fencing.ssh.private-key-files&/name&
&value&/root/.ssh/id_rsa&/value&
&/property&
&!--配置namenode数据存放的位置,可以不配置,如果不配置,默认用的是core-site.xml里配置的hadoop.tmp.dir的路径--&
&property&
&name&dfs.namenode.name.dir&/name&
&value&file:///home/software/hadoop-2.7.1/tmp/namenode&/value&
&/property&
&!--配置datanode数据存放的位置,可以不配置,如果不配置,默认用的是core-site.xml里配置的hadoop.tmp.dir的路径--&
&property&
&name&dfs.datanode.data.dir&/name&
&value&file:///home/software/hadoop-2.7.1/tmp/datanode&/value&
&/property&
&!--配置block副本数量--&
&property&
&name&dfs.replication&/name&
&value&3&/value&
&/property&
&!--设置hdfs的操作权限,false表示任何用户都可以在hdfs上操作文件--&
&property&
&name&dfs.permissions&/name&
&value&false&/value&
&/property&
&/configuration&
10.配置mapred-site.xml
配置代码:
&configuration&
&property&
&!--指定mapreduce运行在yarn上--&
&name&mapreduce.framework.name&/name&
&value&yarn&/value&
&/property&
&/configuration&
   11.配置yarn-site.xml
     配置代码:
&&configuration&
&!-- 开启YARN HA --&
&property&
&name&yarn.resourcemanager.ha.enabled&/name&
&value&true&/value&
&/property&
&!-- 指定两个resourcemanager的名称&--&
&property& &name&yarn.resourcemanager.ha.rm-ids&/name&
&value&rm1,rm2&/value&
&/property&
&!-- 配置rm1,rm2的主机&--&
&property&
&name&yarn.resourcemanager.hostname.rm1&/name&
&value&hadoop01&/value&
&/property&
&property&
&name&yarn.resourcemanager.hostname.rm2&/name&
&value&hadoop03&/value&
&/property&
&!--开启yarn恢复机制--&
&property&
&name&yarn.resourcemanager.recovery.enabled&/name&
&value&true&/value&
&/property&
&!--执行rm恢复机制实现类--&
&property&
&name&yarn.resourcemanager.store.class&/name&
org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore&/value&
&/property&
&!-- 配置zookeeper的地址&--&
&property& &name&yarn.resourcemanager.zk-address&/name& &value&hadoop01:2181,hadoop02:2181,hadoop03:2181&/value&
&description&For multiple zk services, separate them with comma&/description& &/property&
&!-- 指定YARN HA的名称&--& &property&
&name&yarn.resourcemanager.cluster-id&/name& &value&yarn-ha&/value&
&/property&
&property&
&!--指定yarn的老大&resoucemanager的地址--&
&name&yarn.resourcemanager.hostname&/name&
&value&hadoop03&/value&&/property&&property&&!--NodeManager获取数据的方式--&&name&yarn.nodemanager.aux-services&/name&&value&mapreduce_shuffle&/value&&/property&&/configuration&
   12.配置slaves文件&     配置代码:      hadoop04      hadoop05      hadoop06   13.配置hadoop的环境变量(可不配)      JAVA_HOME=/home/software/jdk1.8      HADOOP_HOME=/home/software/hadoop-2.7.1      CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar      PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH      export JAVA_HOME PATH CLASSPATH HADOOP_HOME   14.根据配置文件,创建相关的文件夹,用来存放对应数据     在hadoop-2.7.1目录下创建:      ①journal目录      ②创建tmp目录      ③在tmp目录下,分别创建namenode目录和datanode目录   15.通过scp 命令,将hadoop安装目录远程copy到其他5台机器上     比如向hadoop02节点传输:      scp -r hadoop-2.7.1 hadoop02:/home/softwareHadoop集群启动   16.启动zookeeper集群     在Zookeeper安装目录的bin目录下执行:sh zkServer.sh start   17.格式化zookeeper     在zk的leader节点上执行:      hdfs zkfc -formatZK,这个指令的作用是在zookeeper集群上生成ha节点(ns节点)
        注:18--24步可以用一步来替代:进入hadoop安装目录的sbin目录,执行:start-dfs.sh 。但建议还是按部就班来执行,比较可靠。   18.启动journalnode集群     在04、05、06节点上执行:     切换到hadoop安装目录的sbin目录下,执行:     sh hadoop-daemons.sh start journalnode     然后执行jps命令查看:
        19.格式化01节点的namenode     在01节点上执行:       hadoop namenode -format   20.启动01节点的namenode     在01节点上执行:       hadoop-daemon.sh start namenode
         21.把02节点的namenode节点变为standby namenode节点     在02节点上执行:       hdfs namenode-bootstrapStandby
        22.启动02节点的namenode节点     在02节点上执行:       hadoop-daemon.sh start namenode   23.在04,05,06节点上启动datanode节点     在04,05,06节点上执行:hadoop-daemon.sh start datanode   24.启动zkfc(启动FalioverControllerActive)     在01,02节点上执行:       hadoop-daemon.sh start zkfc
        25.在01节点上启动主Resourcemanager     在01节点上执行:start-yarn.sh          启动成功后,04,05,06节点上应该有nodemanager 的进程   26.在03节点上启动副Resoucemanager     在03节点上执行:yarn-daemon.sh start resourcemanager   27.测试     输入地址:http://192.168.234.21:50070,查看namenode的信息,是active状态的
          输入地址:http://192.168.234.22:50070,查看namenode的信息,是standby状态
          然后停掉01节点的namenode,此时返现standby的namenode变为active。   28.查看yarn的管理地址     http://192.168.234.21:8088(节点01的8088端口)
好了,集群搭建就OK了!
阅读(...) 评论()

我要回帖

更多关于 hadoop ha原理 的文章

 

随机推荐