Ubuntu环境下HDFS数据迁移指南
hdfs dfs -du -h /命令查看各目录总数据量,按业务类型(如用户数据、日志数据)划分目录,统计各业务数据规模,为分批迁移提供依据。HADOOP_HOME、PATH)配置正确,core-site.xml(配置HDFS地址、RPC端口)、hdfs-site.xml(配置副本数、NameNode信息)等核心配置文件一致或符合迁移需求。ping、telnet测试);若带宽有限,可通过对象存储(如COS)作为中转;确保迁移用户对源集群和目标集群的HDFS目录有读写权限。hadoop distcp hdfs://source-namenode-ip:9000/source-path hdfs://target-namenode-ip:9000/target-path
示例:将源集群/user/data目录迁移至目标集群同名目录:hadoop distcp hdfs://192.168.1.100:9000/user/data hdfs://192.168.1.200:9000/user/data
hftp(HTTP协议)或webhdfs协议,命令格式如下:hadoop distcp hftp://source-namenode-ip:50070/source-path hdfs://target-namenode-ip:9000/target-path
示例:hadoop distcp hftp://192.168.1.100:50070/user/data hdfs://192.168.1.200:9000/user/data
-update参数实现增量同步(仅更新目标集群中不存在或修改过的文件):hadoop distcp -update hdfs://source-namenode-ip:9000/source-path hdfs://target-namenode-ip:9000/target-path
若需保留文件权限(如所有者、组、ACL),添加-p参数:hadoop distcp -p -update hdfs://source-namenode-ip:9000/source-path hdfs://target-namenode-ip:9000/target-path
dfs.namenode.name.dir目录(默认路径为/data/dfs/name,包含fsimage和edits文件):cp -r /data/dfs/name /data/dfs/name_backup
name目录复制到目标NameNode的相同路径:scp -r /data/dfs/name_backup/* target-namenode:/data/dfs/name/
dfs.namenode.name.dir目录权限正确(属主为hdfs用户,属组为hadoop):chown -R hdfs:hadoop /data/dfs/name
hadoop-daemon.sh stop namenode
hadoop-daemon.sh start namenode
slaves文件中移除旧DataNode的主机名,然后重启HDFS服务,触发数据块重新平衡:hadoop-daemon.sh stop datanode
使用hdfs dfsadmin -report命令检查旧DataNode是否已下线。slaves文件中添加新DataNode的主机名,启动HDFS服务:hadoop-daemon.sh start datanode
使用hdfs dfsadmin -report命令检查新DataNode是否已上线。distcp的-update参数再次同步,检查是否有新增或修改的文件;使用hdfs dfs -du -h /target-path和hdfs dfs -count /target-path命令,对比源集群与目标集群的数据量、文件数量是否一致。hdfs dfs -ls -d /target-path命令检查文件权限(如-rw-r--r--)、所有者(如hdfs)、组(如hadoop)是否与源集群一致;检查文件类型(如普通文件、目录、符号链接)是否符合预期。hdfs dfs -put上传文件、hdfs dfs -get下载文件、hdfs dfs -cat查看文件内容),验证目标集群的读写功能是否正常;若有Hive、Spark等依赖HDFS的应用,更新其配置(如hive.metastore.warehouse.dir)指向目标集群,验证应用兼容性。tc命令(Traffic Control)限制迁移进程的带宽(如限制为100MB/s),避免占用过多网络资源影响线上业务:tc qdisc add dev eth0 root tbf rate 100mbit latency 50ms burst 100kb
distcp命令中添加-D ipc.client.fallback-to-simple-auth-allowed=true参数,或配置目标集群的core-site.xml文件:<property>
<name>ipc.client.fallback-to-simple-auth-allowed</name>
<value>true</value>
</property>
tail -f /var/log/hadoop-hdfs/hadoop-hdfs-namenode.log命令监控NameNode日志,及时发现错误;保存distcp命令的输出日志(如distcp.log),便于后续故障排查。/user/data目录),若迁移失败,可通过备份快速恢复源集群数据,减少业务影响。