溜达
发布于

hdfs集群迁移、换ip、重命名

迁移方案

目标:
datanode 迁移后对集群不造成较大的影响,服务可用数据不丢失。

主要涉及:

  1. 主机名、ip 变化
  2. 主机、ip 不变化

相关知识:
在 datanode 迁移时,必然导致节点停止心跳,如果超过心跳检测超时的时间,会被 nn 认定为死节点,为满足副本数要求造成集群内大量块复制现象。如果想短时间内不使节点变成 dead 节点,需要人工把超时时间设置加大(心跳检测默认下判定死亡时间为 630s),修改参数:dfs.namenode.heartbeat.recheck-interval = 10800000.
此时超时时间为 3h。

1,更新 standby namenode 的 hdfs-site 配置重启,而后进行 ha 切换,更新配置重启。此时适用于 datanode 不涉及主机名、ip 变化的情况

2,更换主机名、ip 地址的迁移。对于更换主机名、ip 的迁移,在可控时间内(心跳超时)恢复 datanode 服务即可,对集群没什么影响。见下:

关于主机名、ip 变更

停止集群服务
修改:

  1. VIM etc/hosts #配置 ip 和主机名的对应关系并使生效
  2. 节点重启

注:此处需要重点检查的是配置文件中是绑定的 ip 还是主机名,需检查手动改正。
改变 hostname 和 ip,不会导致 DN 端的 StorageID、ClusterID、BlockPoolID 发生变化,会首先出现 WrapException 异常,之后 DN 会重新和 NN 握手、注册,接收 NN 返回的命令

hdfs 集群重命名

1,停止服务(必须)
2,修改 hdfs 集群名称相关配置

  • core-site
    fs.defaultFS = hdfs://clusterA 。 hdfs://clusterA 改成 hdfs://clusterB
  • hdfs-site
    dfs.nameservices = clusterA
    dfs.ha.namenodes.clusterA = nn1,nn2
    dfs.ha.namenode.rpc-address.clusterA.nn1=nn1:9000
    dfs.ha.namenode.rpc-address.clusterA.nn2=nn2:9000
    dfs.ha.namenode.http-address.clusterA.nn1=nn1:50070
    dfs.ha.namenode.http-address.clusterA.nn2=nn2:50070
    dfs.client.filover.proxy.provider.clusterA=...
    这里的 clusterA 全改成 clusterB
  • 格式化 hdfs 依赖的 znode
    因为 hdfs 在第一次启动时会在关联的 znode 中注册存放信息,包括 active namenode 主机信息等,因而在修改主机名时需要修改。
    hdfs zkfc -formatZK

3,重启相关服务

另外,如果有使用 yarn,也需要在 hdfs 集群重命名的时候对 yarn 完成相同操作更改。

评论(2)
test