DataNode迁移方案

本文介绍了在HDFS中迁移DataNode的详细方案,包括目标、相关知识和具体步骤。在涉及主机名和IP变化的迁移过程中,需进行停服测试、调整心跳超时时间、重启DataNode等操作,确保数据安全和服务可用性。
摘要由CSDN通过智能技术生成

DataNode迁移方案

目标

由于外界因素的影响,需要将原有dn所在节点的机器从A机房换到B机房,其中会涉及到主机名和IP的改变.最终的目标是迁移之后对集群不造成大影响,
服务依然可用,数据不发生丢失.

相关知识

因为在dn迁移的时候,必定会导致迁移节点停止心跳,如果超过心跳检查超时时间,此节点就会被任务是dead node,为了平衡副本数,会造成集群内大量
的block块复制的现象,如果不想要在短时间内不是节点成为dead node,需要人工把心跳超时检查时间设大.namenode超时心跳检测时间算法如下:

  DatanodeManager(final BlockManager blockManager, final Namesystem namesystem,
      final Configuration conf) throws IOException {
    ....

    final long heartbeatIntervalSeconds = conf.getLong(
        DFSConfigKeys.DFS_HEARTBEAT_INTERVAL_KEY,
        DFSConfigKeys.DFS_HEARTBEAT_INTERVAL_DEFAULT);
    final int heartbeatRecheckInterval = conf.getInt(
        DFSConfigKeys.DFS_NAMENODE_HEARTBEAT_RECHECK_INTERVAL_KEY, 
        DFSConfigKeys.DFS_NAMENODE_HEARTBEAT_RECHECK_INTERVAL_DEFAULT); // 5 minutes
    this.heartbeatExpireInterval = 2 * heartbeatRecheckInterval
        + 10 * 1000 * heartbeatIntervalSeconds;
    ....

核心公式如下:

this.heartbeatExpireInterval = 2 * heartbeatRecheckInterval + 10 * 1000 * heartbeatIntervalSeconds;

heartbeatRecheckInterval心跳检测时间默认300s,心跳间隔时间3s,所以默认超时时间2*300+10*3=630s.因此需要将前者配置加大.

<name>dfs.namenode.heartbeat.recheck-interval</name> 
<value>10800000</value> 
<source>hdfs-default.xml</source> 
</property>

在此地可以调大为3小时,根据使用场景进行变化
* 更新standby namenode的hdfs-site.xml的配置,并重启.
* 等待standby namenode退出safemode之后,再stop active namenode,并更新配置,并重启.

但是此种方案适用于Datanode不涉及主机名和IP的变化的情况.

下面是涉及主机名,IP变化的迁移方案:

步骤1:Datanode迁移测试

在dn做迁移之前,进行测试文件的上传和rpc请求的测试,与后面进行对比
首先上传1个test文件

bin/hadoop fs -put test.txt /tmp

保证此文件所在的block必然会存在于此节点上,用-cat命令进行查看

bin/hadoop fs -cat /tmp/test.txt
  • 测试完毕,此时停止dn,并使用jps命令查看dn是否真正停止.
  • 并观察namenode的web界面上将显示迁移节点在超过630s后被认为是dead node.
  • 之后在namenoded的web界面的Number of Under-Replicated Blocks指标将会显示出正在进行拷贝的block副本数,表明目前有大量的block的块
    在进行副本复制.

步骤3:Datanode重启

  • 重新启动dn,查看datanode log日志
    ,因为dn在初次启动的时候由于缓存的dfsUsed值超过600s会过期,需要重新执行du命令扫描上面的磁盘块进行dfsUsed使用量的计算,会消耗
    几分钟的时间(如果是立即stop,并马上start datanode,将会非常快.)
2016-01-06 16:05:08,118 INFO org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Added new volume: DS-70097061-42f8-4c33-ac27-2a6ca21e60d4
2016-01-06 16:05:08,118 INFO org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Added volume - /home/data/data/hadoop/dfs/data/data12/current, StorageType: DISK
2016-01-06 16:05:08,176 INFO org.apache.hadoop.hdfs.server.datanode.fsdataset.impl.FsDatasetImpl: Re
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值