首页 > 其他分享 >HDFS数据(跨集群)迁移

HDFS数据(跨集群)迁移

时间:2024-09-26 12:55:17浏览次数:3  
标签:HDFS hdfs 集群 8020 迁移 foo 拷贝 nn1 distcp

一、数据迁移使用场景

1.冷热集群数据同步、分类存储
2.整体数据整体搬迁
3.数据准实时同步(备份)

二、考量因素

1.网络传输带宽及时间,是否会影响现有业务
2.性能,单机?多线程?分布式?
3.是否正常增量同步
4.数据迁移的同步性(同步单位时间数据超过单位时间)

三、DistCp工具使用

3.1 简介

distcp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具。 它使用 Map/Reduce 实现文件分发,错误处理和恢复,以及报告生成。 它把文件和目录的列表作为 map 任务的输入,每个任务会完成源列表中部分文件的拷贝。 由于使用了 Map/Reduce 方法,这个工具在语义和执行上都会有特殊的地方。 这篇文档会为常用 distcp 操作提供指南并阐述它的工作模型。
特性:
1.hadoop自带,并支持带宽限流
2.高性能,底层使用MapReduce 进行分布式计算
3.支持增量数据同步,主要有以下三个参数: 
    update(只拷贝不存在的文件或目录):解决新增文件、目录的同步
    append(追加写目标路径下已存在的文件) :解决已存在文件的增量同步
    diff(通过快照对比信息同步源端路径和目标路径):解决删除或重命名文件的同步

3.2 命令指南  

参考链接:https://hadoop.apache.org/docs/r3.1.4/hadoop-distcp/DistCp.html

hadoop distcp
usage: distcp OPTIONS [source_path...] <target_path>
 -append              拷贝文件时支持对现有文件进行追加写操作
 -async               异步执行distcp 拷贝任务
 -bandwidth <arg>     对每个Map任务的带宽限速
 -delete              删除对于源端多出的文件或目录
 -diff <arg>          通过快照diff信息进行数据同步
 -overwrite           以覆盖的方式进行拷贝,如果目标端存在,则直接覆盖
 -p <arg>             拷贝数据时,扩展信息保留,如权限 块大小信息
 -skipcrccheck        拷贝数据时是否跳过 checksum校验
 -update              拷贝数据时只拷贝相对于源端,目标端不存在的文件数据
 -i					忽略失败
 -f <urllist_uri>     将urlist_uri作为源文件列表
 -filters		     排除指定路径和文件不做拷贝

3.3 基本使用方法

1.跨集群拷贝
其中source_path 、target_path 需要带上地址前缀以区分不同的集群
例如: hadoop distcp hdfs://nn1:8020/foo/a hdfs://nn2:8020/bar/foo (nn1 nn2 分别表示两个集群的namenode)
上面的命令表示从nnl集群拷贝/foo/a路径下的数据到nn2集群的/ bar/foo路径下,注意,源路径必须是绝对路径。

2.通过命令行指定多个源目录
hadoop distcp hdfs://nn1:8020/foo/a hdfs://nn1:8020/foo/b hdfs://nn2:8020/bar/foo

3.通过文件指定多个源目录
hadoop distcp -f hdfs://nn1:8020/srclist hdfs://nn2:8020/bar/foo
其中 srclist 的内容格式是
hdfs://nn1:8020/foo/a
hdfs://nn1:8020/foo/b

4.排除指定文件不拷贝
adoop distcp -filters /path/to/filterfile.txt hdfs://nn1:8020/source/path  hdfs://nn2:8020/destination/path  # 
# filterfile.txt 在本地文件系统上
# filterfile.txt文件格式
.*test.*                           # 正则表达式法
/source/test                       # 在源集群上
hdfs://0.0.0.0:8020/source/test    # 在目标集群上,需要写全路径

3.4 其他  

1.map数目
distcp会尝试着均分需要拷贝的内容,这样每个map拷贝差不多相等大小的内容。 但因为文件是最小的拷贝粒度,所以配置增加同时拷贝(如map)的数目不一定会增加实际同时拷贝的数目以及总吞吐量。
如果没使用 -m选项,distcp会尝试在调度工作时指定map的数目 为 min (total_bytes / bytes.per.map, 20 * num_task_trackers), 其中 bytes.per.map默认是256MB。
建议对于长时间运行或定期运行的作业,根据源和目标集群大小、拷贝数量大小以及带宽调整map的数目。
hadoop distcp -Ddistcp.bytes.per.map=1073741824 -Ddfs.client.socket-timeout=240000000 -Dipc.client.connect.timeout=40000000 -i -update hdfs://nn1:8020/foo/a hdfs://nn1:8020/foo/b hdfs://nn2:8020/bar/foo

2.不同HDFS版本间的拷贝(大版本)
对于不同Hadoop版本间的拷贝,用户应该使用HftpFileSystem。 这是一个只读文件系统,所以distcp必须运行在目标端集群上(更确切的说是在能够写入目标集群的TaskTracker上)。 
源的格式是 webhdfs://<dfs.http.address>/<path> (默认情况 dfs.http.address是 <namenode>:port, prot:3.x 8020,2.x 50070)
# 此命令适用于2.x迁移到3.x
hadoop distcp webhdfs://nn1:50070/user/hive/warehouse/demo.db hdfs://nn2:8020/user/hive/warehouse

  

 

 

"一劳永逸" 的话,有是有的,而 "一劳永逸" 的事却极少



标签:HDFS,hdfs,集群,8020,迁移,foo,拷贝,nn1,distcp
From: https://blog.51cto.com/u_8901540/12118306

相关文章

  • HDFS优化方案
    一、短路本地读取(ShortCircuitLocalReads)1.1 背景在HDFS中,不管是LocalReads(DFSClient和Datanode在同一个节点)还是RemoteReads(DFSClient和Datanode不在同一个节点),底层处理方式都是一样的,都是先由Datanode读取数据,然后再通过RPC(基于TCP)把数据传给DFSClient。这样......
  • HDFS 节点动态管理
    一、节点上线1.新机器安装环境准备参考集群安装文档环境准备2.namenode节点配置[root@hdp01hadoop]#catworkershdp01.dialev.comhdp02.dialev.comhdp03.dialev.comhdp04.dialev.com[root@hdp01hadoop]#pwd/usr/local/hadoop/etc/hadoop[root@hdp01hadoop]#cd/us......
  • Hadoop高可用集群搭建
    一、HDFSHA简介1.1 QJM简介1.QuorumJournalManager(仲裁日志管理器),是Hadoop官方推荐的HDFSHA解决方案之一2.使用zookeeper中ZKFC来实现主备切换;3.使用JournalNode(JN)集群实现editslog的共享以达到数据同步的目的1.2主备切换问题解决方案--ZKFailoverController(zkfc)ZKFailo......
  • HDFS数据安全与隐私保护
    一、HDFSTrash垃圾桶1.文件系统垃圾桶背景HDFS本身也是一个文件系统,那么就会涉及到文件数据的删除操作。默认情况下,HDFS中是没有回收站垃圾桶概念的,删除操作的数据将会被直接删除,没有后悔药。2.功能概述1.HDFSTrash机制,叫做回收站或者垃圾桶。Trash就像Windows操作系统中的回收......
  • prometheus学习笔记之prometheus联邦集群
    一、简介对于大部分监控规模而言,我们只需要在每一个数据中心安装一个PrometheusServer实例,就可以在各个数据中心处理上千规模的集群。同时将PrometheusServer部署到不同的数据中心可以避免网络配置的复杂性。在每个数据中心部署单独的PrometheusServer,用于采集当前数据中心监......
  • 搭建RocketMQ集群
    一、环境及准备集群环境:软件版本:部署前操作:关闭防火墙,关闭selinux(生产环境按需关闭或打开)同步服务器时间,选择公网ntpd服务器或者自建ntpd服务器[root@es1~]#crontab-l#为了方便直接使用公网服务器#updatetime*/5****/usr/bin/rdate-stime-b.nist.gov&>/dev/nul......
  • RocketMQ多master多salve集群搭建
    一、RocketMQ集群模式简介单Master方式风险比较大,一旦Broker重启或者宕机,将导致整个环境不可用,不建议线上使用.多Master模式一个集群中没有slave,全是master,例如2个master或者3个master.优点:配置简单,性能最好,单个Master宕机或重启对应用无影响,磁盘配置为RAID10时,......
  • 一次基于AST的大规模代码迁移实践
    作者:来自vivo互联网大前端团队-WeiXing在研发项目过程中,我们经常会遇到技术架构迭代更新的需求,通过技术的迭代更新,让项目从新的技术特性中受益,但由于很多新的技术迭代版本并不能完全向下兼容,包含了很多非兼容性的改变(BreakingChanges),因此我们需要设计一款工具,帮助我们完成大规......
  • FastDFS+Nginx+fastdfs-nginx-module集群搭建
    一、实验环境说明 操作系统:Centos6.6x64FastDFS相关版本:fastdfs-5.05fastdfs-nginx-module-v1.16libfastcommon-v1.0.7web服务器软件:nginx-1.7.8角色分配:2个tracker,地址分别为:10.1.1.24310.1.1.244两块磁盘2个group:G1:10.1.1.24510.1.1......
  • Hadoop2.6.5集群搭建
    一、 Hadoop的分布式模型Hadoop通常有三种运行模式:本地(独立)模式、伪分布式(Pseudo-distributed)模式和完全分布式(Fullydistributed)模式。安装完成后,Hadoop的默认配置即为本地模式,此时Hadoop使用本地文件系统而非分布式文件系统,而且其也不会启动任何Hadoop守护进程,Map和Reduce......