Hadoop 2.2.0 HA搭建(现有集群,QJM方案)

*本文档分别阐述了给新建集群配置HA的方法(需要格式化namenode)以及给现有集群配置HA的方法(不需要格式化namenode),均使用QJM方案。
 
一、机器情况

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上。
 

--------------------------------------分割线 --------------------------------------

Ubuntu 13.04上搭建Hadoop环境

Ubuntu 12.10 +Hadoop 1.2.1版本集群配置

Ubuntu上搭建Hadoop环境(单机模式+伪分布模式)

Ubuntu下Hadoop环境的配置

单机版搭建Hadoop环境图文教程详解

--------------------------------------分割线 --------------------------------------
 
二、 HDFS部署文档
 
1.建立用户
 
每台机器都用hdfs账号登录,进行操作。
 
2.建立ssh联接
 
登录baby20
 
mkdir .ssh
 
ssh-keygen -t rsa –f~/.ssh/id_rsa
 
cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys
 
将.shh文件分发到baby18、baby19和angel1上;
 
对angel1做同样操作,保证四台机器无需密码即可切换用户。
 
3.  搭建zookeeper
 
 
 
4. 修改配置文件
 
a) 修改 core-site.xml 
 
 发上来格式太乱了,略掉。
 
b) 修改 hdfs-site.xml
 
发上来格式太乱了,略掉。
 
 c)修改slaves
 
baby18
 
baby19
 
baby20
 
以上分发hadoop到各个机器。
 
注意:给新建集群和现有集群配置HA的两种方案在下面这一部分会稍有不同,将分别阐述。
 
 
 
(一) 给新建集群配置HA的方法(需要格式化namenode)
 
5. 启动JournalNode服务
 
进入bin目录  ./hdfs journalnode
 
三台部署 journalnode的机器都如此执行。
 
访问web页面 baby18:8480,baby19:8480,baby20:8480
 
检查服务是否正常 。
 
 
 
6.  启动hadoop
 
 
 
这里默认baby20为主备namenode,angel1为备用namenode。
 
a)      进入baby20的 hadoop/bin目录
 
执行 ./hdfs namenode -format                 
 
执行 ./hdfs zkfc -formatZK                   
 
执行  ./hdfs namenode                                 
 
b)      进入angel1的 hadoop/bin目录
 
执行  ./hdfs namenode -bootstrapStandby  --同步namenode元数据,需要在选举服务启动之前同步;
 
执行  ./hdfs namenode
 
c)      进入 baby18、baby19、baby20的 hadoop/bin目录
 
执行 ./hdfs datanode                                     
 
注意:此时 查看页面baby20:35070、angel1:35070,两个namenode都是出于standby的状态,因为还未开启选举服务。
 
d)  每台namenode节点都要执行以下命令启动自动选举服务
 
执行  ./hdfs zkfc  --启动自动选举服务
 
注意:此操作必须在启动两个namenode之后进行,否则namenode会挂掉!
 
 此时查看页面baby20:35070、angel1:35070, 应该一个处于standby状态 一个处于active状态 。
 
-------------------------------------------------------------------------------
 
(二) 给现有集群配置HA的方法(因为不能格式化namenode,所以需要对上面的操作进行部分修改)
 
 
 
5. 启动JournalNode服务
 
进入bin目录  ./hdfs journalnode
 
三台部署 journalnode的机器都如此执行。
 
访问web页面 baby18:8480,baby19:8480,巴布亚20:8480
 
检查服务是否正常 。
 
 
 
6.  启动hadoop
 
 
 
这里默认baby20为主备namenode,angel1为备用namenode。
 
d)    进入baby20的 hadoop/bin目录
 
执行 hdfs namenode -initializeSharedEdits -force    ---这一操作主要完成格式化所有JournalNode,以及将日志文件从baby20拷贝到所有JournalNode。
 
执行 ./hdfs zkfc -formatZK                   
 
执行  ./hdfs namenode                                 
 
e)      进入angel1的 hadoop/bin目录
 
为了让主备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目录下。
 
执行  ./hdfs namenode
 
f)      进入 baby18、baby19、baby20的 hadoop/bin目录
 
执行 ./hdfs datanode                                     
 
注意:此时 查看页面baby20:35070、angel1:35070,两个namenode都是出于standby的状态,因为还未开启选举服务。
 
d)  每台namenode节点都要执行以下命令启动自动选举服务
 
执行  ./hdfs zkfc  --启动自动选举服务
 
注意:此操作必须在启动两个namenode之后进行,否则namenode会挂掉!
 
 此时查看页面baby20:35070、angel1:35070, 应该一个处于standby状态 一个处于active状态 。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/4b4e74054ca90891432cc919c620e49b.html