HADOOP 2.2.0 HA搭建手册V1.0
angel1 | 10.2.0.101 |
baby18 | 10.1.1.38 |
baby19 | 10.1.1.39 |
baby20 | 10.1.1.40 |
我们有两台namenode机器,分别部署在baby20和angel1上;
我们有三台journalnode,分别部署在baby18、baby19和baby20上,用来存储namenode元数据;
有三台zookeeper组成的集群用来管理namenode的状态(active或者standby),分别部署在baby18、baby19和baby20上;
有三台datanode节点,部署在baby18、baby19和baby20上。
每台机器都用hdfs账号登录,进行操作。
登录baby20
mkdir .ssh
ssh-keygen -t rsa –f~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
将.shh文件分发到baby18、baby19和angel1上;
对angel1做同样操作,保证四台机器无需密码即可切换用户。
a)
b)
发上来格式太乱了,略掉。
baby18
baby19
baby20
以上分发hadoop到各个机器。
注意:给新建集群和现有集群配置HA的两种方案在下面这一部分会稍有不同,将分别阐述。
(一) 给新建集群配置HA的方法(需要格式化namenode)
5. 启动JournalNode服务
进入bin目录
三台部署
访问web页面
检查服务是否正常
这里默认baby20为主备namenode,angel1为备用namenode。
a)
执行 ./hdfs namenode -format
执行
执行
b)
执行
执行
c)
执行 ./hdfs datanode
注意:此时
d)
执行
注意:此操作必须在启动两个namenode之后进行,否则namenode会挂掉!
-------------------------------------------------------------------------------
(二) 给现有集群配置HA的方法(因为不能格式化namenode,所以需要对上面的操作进行部分修改)
5. 启动JournalNode服务
进入bin目录
三台部署
访问web页面
检查服务是否正常
6.
这里默认baby20为主备namenode,angel1为备用namenode。
d)
执行 hdfs namenode -initializeSharedEdits -force
执行
执行
e)
为了让主备dfs.namenode.name.dir目录下的Namenode的元数据一致以及dfs.namenode.shared.edits.dir包含最近所有的edit files,可以把主节点的dfs.namenode.name.dir目录下的元数据拷贝到备用节点dfs.namenode.name.dir和共享dfs.namenode.shared.edits.dir目录下。
执行
f)
执行 ./hdfs datanode
注意:此时
d)
执行
注意:此操作必须在启动两个namenode之后进行,否则namenode会挂掉!
三、
1.
2.
3.
4.
5.
We have to delete and recreate the folder /home/hadoop/dfs/data on local FS for DN.
·
·
·
Above steps should create folder and resolve the problem.
6.
7.
8.
Usage: DFSHAAdmin [-ns ]
[-transitionToActive ]
[-transitionToStandby ]
[-failover [--forcefence] [--forceactive] ]
[-getServiceState ]
[-checkHealth ]
其中:bin/hdfs haadmin -DfSHAadmin -failover nn1 nn2是让nn2成为变为active nn1变为standby,这是使用这个命令可能会出现:Failover failed: /10.250.8.107:9000 is not ready to become active,这时我们用命令bin/hdfs haadmin -DfSHAadmin -failover --forceactive nn1 nn2就不会出现上面的问题。
问题终于算是圆满解决了,以上内容来很多来自网上,本人拙略地整理了下。