Hadoop与Linux如何进行数据迁移
导读:Hadoop 与 Linux 数据迁移实用指南 一、常用场景与工具 本地 Linux 与 HDFS 之间:使用 HDFS CLI(如 -put/-get/-moveFromLocal)进行导入导出与小批量搬迁。 两个 Hadoop 集群之...
Hadoop 与 Linux 数据迁移实用指南
一、常用场景与工具
- 本地 Linux 与 HDFS 之间:使用 HDFS CLI(如 -put/-get/-moveFromLocal)进行导入导出与小批量搬迁。
- 两个 Hadoop 集群之间:使用 DistCp 并行复制,支持跨版本、增量与原子提交等能力。
- 防火墙受限或需跨公网:使用 WebHDFS(读写接口,HTTP 重定向利于数据局部性)或 HFTP/HTTPS(只读为主,版本兼容要求更严格)。
- 需要挂载 HDFS 到本地:使用 HDFS NFS 网关(适合只读/追加场景,随机写受限,生产需评估安全与版本支持)。
二、本地 Linux 与 HDFS 之间
- 上传到 HDFS
- 基本上传:hadoop fs -put /home/user/data.txt /user/hadoop
- 递归上传目录:hadoop fs -put -R /home/user/dir /user/hadoop
- 覆盖已存在文件:hadoop fs -put -f local.txt /user/hadoop/local.txt
- 上传并保留属性:hadoop fs -put -p local.txt /user/hadoop/local.txt
- 先建目录再上传:hadoop fs -mkdir -p /user/hadoop & & hadoop fs -put local.txt /user/hadoop
- 从 HDFS 下载到本地
- 基本下载:hadoop fs -get /user/hadoop/data.txt /home/user/back/
- 递归下载:hadoop fs -get -R /user/hadoop/dir /home/user/back/
- 移动语义(Linux → HDFS,源端删除)
- hadoop fs -moveFromLocal local.txt /user/hadoop/local.txt
- 小技巧
- 使用 hadoop fs -ls /user/hadoop 校验结果;大文件建议切块或分批上传以避免超时与占用过多客户端资源。
三、Hadoop 集群之间迁移
- 基本 DistCp(并行复制)
- hadoop distcp hdfs://nn1:8020/source hdfs://nn2:8020/dest
- 建议确认 nn1/nn2 为 Active NameNode,否则可能失败或不一致。
- 增量与一致性
- 仅复制新增/变更:-update(基于文件大小/时间戳等元数据判断)
- 更严格的校验与增量:-diffMode=length-checksum(基于长度与 CRC 校验,适合内容变更检测)
- 原子提交与作业特性
- DistCp 支持原子提交,适合“全量替换”语义;为降低设置成本,新版 DistCp 将部分预处理推迟到 Mapper 执行,提升大规模作业启动效率。
- 防火墙/跨公网与协议选择
- WebHDFS:hadoop distcp hdfs://nn1:50070/source webhdfs://nn2:50070/dest(读写皆可,HTTP 重定向提升数据局部性)
- HFTP/HTTPS:多用于只读或受限网络,版本兼容要求更高;如用 WebHDFS 建议优先于 HFTP。
- 运行建议
- 在 screen/nohup 下执行并将日志落盘,便于长时任务与故障排查。
四、进阶方式与注意事项
- HDFS NFS 网关(挂载访问)
- 启动 NFS 服务后,可将 HDFS 挂载为本地目录,像操作本地文件系统一样访问(适合只读/追加、批量导入导出);注意 HDFS 为仅追加文件系统,随机写受限,且早期版本在 Kerberos/代理用户支持上存在限制,生产需充分评估。
- Hive 表迁移的两种便捷路径
- Hive 外表远程引用:在目标集群创建 External Table,location 指向源集群 HDFS 路径,直接查询或插入到本地表实现“零拷贝”迁移或校验。
- HQL 导出到本地再入湖:insert overwrite local directory ‘/tmp/export’ select * from db.tbl; 再用 DistCp/CLI 将导出数据批量导入目标集群。
- 常见排错与优化要点
- 权限与认证:确保 HDFS 权限、Kerberos 票据正确;跨集群访问需网络与防火墙放行相关端口(如 50070/8020 等)。
- 版本与兼容性:跨版本复制优先用 WebHDFS;如用 HFTP 需满足版本约束与目标端写入能力。
- 大作业稳定性:长时任务建议 nohup/screen,并合理设置 map 数、带宽、重试 等参数;必要时拆分多任务并行。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Hadoop与Linux如何进行数据迁移
本文地址: https://pptw.com/jishu/758001.html
