hadoop namenode ha--手动切换


问题导读

1.hadoop的dfs.nameservices如何配置?
2.集群配置中hdfs://mycluster的作用是什么?
3.如何将namenode2切换为active状态?







在参考本手册前请确保Hadoop中HDFS组件已经成功部署并正常运行,同时系统基本环境完备,包括ssh免密码登录、/etc/hosts等。
         假设目前NameNode在服务器namenode1上运行,服务器namenode2作为standbynamenode,确保namenode2上至少已经安装了namenode服务。
         操作过程中尽量避免使用root用户操作,这里假设使用hadoop用户操作,具体部署步骤如下:
1.        关闭所有节点上的HDFS进程,主要是namenode1上的namenode和datanode进程。
2.        修改系统配置文件core-site.xml和hdfs-site.xml

  • hdfs-site.xml中添加:

[XML] 纯文本查看 复制代码
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<!-- HA Setup Head !--> 
          < 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.shared.edits.dir</ name >
            < value >qjournal://namenode1:8485;namenode2:8485/mycluster</ 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 >sshfence</ value >
          </ property >
          < property >
            < name >dfs.ha.fencing.ssh.private-key-files</ name >
            < value >/home/hadoop/.ssh/id_rsa</ value >
          </ property >
     < property >
            < name >dfs.ha.fencing.ssh.connect-timeout</ name >
            < value >30000</ value >
          </ property >
 
          < property >
            < name >dfs.journalnode.edits.dir</ name >
            < value >/path/to/hdfs/jn</ value >
          </ property >
 
<!-- HA Setup End !-->


  • core-site.xml中修改

fs.defaulthdfs://mycluster
注意:这些更改需要更新到每个运行HDFS进程的节点。
其中,namenode1和namenode2在hdfs-site.xml中有一项配置不同:
服务器配置项
namenode1dfs.namenode.http-addressnamenode1:50070
namenode2dfs.namenode.http-addressnamenode2:50070


3.        分别在namenode1和namenode2上启动journalnode:
$HADOOP_HOME/sbin/hadoop-daemon.sh start  journalnode

4.        在namenode1上对journalnode的共享数据进行初始化,然后启动namenode进程:
$HADOOP_HOME/bin/hdfsnamenode  -initializeSharedEdits
$HADOOP_HOME/sbin/hadoop-daemon.sh start  namenode


5.        在namenode2上同步journalnode的共享数据,然后启动namenode进程:
$HADOOP_HOME/bin/hdfsnamenode  -bootstrapStandby
$HADOOP_HOME/sbin/hadoop-daemon.sh start  namenode

6.        分别在namenode1和namenode2中启动datanode:
$HADOOP_HOME/sbin/hadoop-daemon.sh  start datanode

7.        此时如果通过网页访问两个namenode的http-address,可以看到两个namenode都是standby状态,也可以通过hadoop自带的命令行工具来查看状态:
$HADOOP_HOME/bin/hdfs  haadmin -getServiceState  nn1
注意:此处的nn1为在hdfs-site.xml中配置的namenode服务的名称。


8.        确定要转为active的namenode的id,这里将namenode1设为active,使用命令行工具进行状态切换:
$HADOOP_HOME/bin/hdfs  haadmin -failover --forcefence --forceactive  nn2  nn1
注意:此处“nn2  nn1”的顺序表示active状态由nn2转换到nn1上(虽然nn2在转化前也是standby状态)。


9.        上一步中把namenode1的状态切换为active后,系统自动把namenode2上的namenode进程关闭,再把错误原因排除后重启该namenode进程,启动后该namenode状态为standby,等待下一次namenode1出现故障时即可将namenode2状态切换为active,使用命令行工具:
$HADOOP_HOME/bin/hdfs  haadmin -failover --forcefence --forceactive  nn1  nn2
         相应的,转换完以后namenode1上的namenode进程被关闭,需要排除故障后重新启动。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值