hadoop在线平滑迁移NameNode

说明

由于 hdfs 的 namenode 如果没有 active 的后,会导致 hdfs 整个集群不可用,所以迁移 namenode 还需要小心。
通过 hdfs ha 模式迁移 hdfs namenode,保证 hdfs 的高可用,本文以较常用的 hbase 作为上游来举例。
由于 zk 中存了 namenode 的 host name 与 ip,所以hostname不能变,只能改变ip。
为保证 hbase 不受影响,也借助了 hbase 的 ha 模式。

环境信息

  • 老 namenode:nno1、nno2
  • 新 namenode:nnn1、nnn2
  • datanode:dn1、dn2、dn3
  • hbase master:hm1、hm2
  • hbase regionserver:hr1、hr2、hr3
  • hdfs-site.xml:nn1->hdfsNameNode1:9000;nn2->hdfsNameNode2:9000
  • hosts:

nno1 hdfsNameNode1
nno2 hdfsNameNode2

迁移顺序

  1. nno1->nnn1
  2. nno2->nnn2

准备

  • 确保 hdfs ha 模式是没问题的,nno1 与 nno2 的 active 状态可以正确切换(关闭 standy namenode 服务,另一台能正确变为active)
    提醒,如果 ha 模式切换失败,可能原因:
  1. 确保 ssh 的登录是完成成功的,如果有授权失败的日志,要关注。再就是配置好ssh免密后,需要登录一次,不然第一次要输入 “yes”,hdfs 切换并不会自动输入。
  2. 日志提示如下,该问题为机器上没有安装 fuser,所有 namenode 节点执行 yum -y install psmisc 即可

WARN org.apache.hadoop.ha.SshFenceByTcpPort: PATH=$PATH:/sbin:/usr/sbin fuser -v -k -ntcp 9000 via ssh: bash: fuser: command not found
WARN org.apache.hadoop.ha.NodeFencer: Fencing method org.apache.hadoop.ha.SshFenceByTcpPort(null) was unsuccessful.

  • 确保 hbase master 的 ha 模式是没问题的(即关闭一台master,另一台back master可以立刻切换到master)

迁移过程

  1. 停止 nno1 namenode 服务与 zkfc 服务, 此时 nno2 为active,集群正常
    nno1机器执行:
    hadoop-daemon.sh stop namenode
    hadoop-daemon.sh stop zkfc
  2. 修改 hdfs 与 hbase 所有机器的 hosts hdfsNameNode1 指向到 nnn1
  3. 将 nnn1、nnn2 设置到所有 hdfs 的机器免密,包括 nno2;将 nno2 设置到 nnn1 免密
  4. 将 hadoop 的文件 scp 到 nnn1,nnn1 上
  • 配置 nnn1 的 hadoop 环境变量
  • 将该机器设置为 namenode standby 执行 hdfs namenode -bootstrapStandby,提示都输入 “yes”,变为新的standby
  • 启动 namenode hadoop-daemon.sh start namenode
  • 启动 zkfc hadoop-daemon.sh start zkfc
  • 此时集群中 nnn1 成为 nno2 的 standby
  1. 由于 hbase 内存中存储了 hdfs namenode 节点信息。需要重启 hbase 集群,让 hbase 获取新的 hdfs 节点信息
  • hm1 上,执行 hbase-daemon.sh restart master
  • hm2 上,hm1启动无异常,执行 hbase-daemon.sh restart master
  • hmr* 上,依次执行 graceful_stop.sh --restart --reload --debug ${regionser-num} ,注意:该重启为 hbase regionserver 平滑重启,故需要观察 regionserver 的状态 ok 才可以继续下一台。
  1. nno2 停止 namenode 服务 hadoop-daemon.sh stop namenode,让 nnn1 切换到 “active”,保证集群正常
  2. nno2 停止 zkfc 服务 hadoop-daemon.sh stop zkfc
  3. 此时 namenode 只有 nnn1,迁移 nno2 与 nno1 一致即可

提示

  1. 迁移过程不必操作太快,实时通过后台关注集群状态
  2. 如果 hdfs ha 模式有问题,优先重启 namenode 恢复机器为可用模式,以防止 hbase 集群不可用导致的业务问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值