[Hadoop]数据复制distcp vs cp
1.需求
我们项目中需要复制一个大文件,最开始使用的是hadoop cp命令,但是随着文件越来越大,拷贝的时间也水涨船高。下面进行hadoop cp与hadoop distcp拷贝时间上的一个对比。我们将11.9G的文件从data_group/adv/day=20210526下所有文件复制到tmp/data_group/adv/day=20210526/文件下
1.1 查看文件大小
hadoop fs -du -s -h data_group/adv/day=20210526
11.9 G data_group/adv/day=20210526
1.2 复制
hadoop distcp data_group/adv/day=20210526 \
tmp/data_group/adv/day=20210526 hadoop fs -cp data_group/adv/day=20210526 \
tmp/data_group/adv/day=20210526
1.3 对比
使用distcp命令 仅耗时1分钟;而hadoop cp命令耗时14分钟
2. 概述
DistCp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具。 它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成。 它把文件和目录的列表作为map任务的输入,每个任务会完成源列表中部分文件的拷贝。 由于使用了Map/Reduce方法,这个工具在语义和执行上都会有特殊的地方。
2.1 distcp命令 输出
17/01/19 14:30:07 INFO tools.DistCp: Input Options: DistCpOptions{atomicCommit=false, syncFolder=false, deleteMissing=false, ignoreFailures=false, maxMaps=20, sslConfigurationFile='null', copyStrategy='uniformsize', sourceFileListing=null, sourcePaths=[data_group/adv/day=20210526], targetPath=tmp/data_group/adv/day=20210526}
...
17/01/19 14:30:17 INFO mapreduce.Job: map 0% reduce 0%
17/01/19 14:30:29 INFO mapreduce.Job: map 6% reduce 0%
17/01/19 14:30:34 INFO mapreduce.Job: map 41% reduce 0%
17/01/19 14:30:35 INFO mapreduce.Job: map 94% reduce 0%
17/01/19 14:30:36 INFO mapreduce.Job: map 100% reduce 0%
17/01/19 14:31:34 INFO mapreduce.Job: Job job_1472052053889_8081193 completed successfully
17/01/19 14:31:34 INFO mapreduce.Job: Counters: 30File System CountersFILE: Number of bytes read=0FILE: Number of bytes written=1501420FILE: Number of read operations=0FILE: Number of large read operations=0FILE: Number of write operations=0HDFS: Number of bytes read=12753350866HDFS: Number of bytes written=12753339159HDFS: Number of read operations=321HDFS: Number of large read operations=0HDFS: Number of write operations=69Job Counters Launched map tasks=17Other local map tasks=17Total time spent by all maps in occupied slots (ms)=485825Total time spent by all reduces in occupied slots (ms)=0Map-Reduce FrameworkMap input records=17Map output records=0Input split bytes=2414Spilled Records=0Failed Shuffles=0Merged Map outputs=0GC time elapsed (ms)=1634CPU time spent (ms)=156620Physical memory (bytes) snapshot=5716221952Virtual memory (bytes) snapshot=32341671936Total committed heap usage (bytes)=12159811584File Input Format Counters Bytes Read=9293File Output Format Counters Bytes Written=0org.apache.hadoop.tools.mapred.CopyMapper$CounterBYTESCOPIED=12753339159BYTESEXPECTED=12753339159COPY=17
是不是很熟悉,这就是我们经常看见到的MapReduce任务的输出信息,这从侧面说明了Distcp使用Map/Reduce实现。
3. 使用方法
3.1 集群间拷贝
DistCp最常用在集群之间的拷贝:
hadoop distcp hdfs://nn1:8020/foo/bar hdfs://nn2:8020/bar/foo
这条命令会把nn1集群的/foo/bar目录下的所有文件以及bar本身目录(默认情况下)存储到一个临时文件中,这些文件内容的拷贝工作被分配给多个map任务, 然后每个TaskTracker分别执行从nn1到nn2的拷贝操作。注意DistCp使用绝对路径进行操作。
3.2 集群内部拷贝
DistCp也可以集群内部之间的拷贝:
hadoop distcp tmp/data_group/test/a tmp/data_group/test/target
这条命令会把本集群tmp/data_group/test/a目录本身以及a目录下的所有文件拷贝到target目录下,原理同集群之间的拷贝一样。
备注
hadoop distcp tmp/data_group/test/a tmp/data_group/test/target
上述命令默认情况下是复制a目录以及a目录下所有文件到target目录下:
hadoop fs -ls -R tmp/data_group/test/target/tmp/data_group/test/target/aa
tmp/data_group/test/target/aa/aa.txt
tmp/data_group/test/target/aa/ab.txt
而有时我们的需求是复制a目录下的所有文件而不包含a目录,这时可以后面介绍的-update参数:
hadoop distcp -update tmp/data_group/test/aa tmp/data_group/test/target
...
hadoop fs -ls -R tmp/data_group/test/target/tmp/data_group/test/target/aa/aa.txt
tmp/data_group/test/target/aa/ab.txt
[Hadoop]数据复制distcp vs cp相关推荐
- Hadoop数据迁移工具DistCp
DistCp 介绍 DistCp( distributed copy )是用于大型内部和集群之间拷贝的工具. 它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成. 它把文件和目录的列 ...
- docker 数据共享,数据复制
docker 提供的数据共享的方式有 docker run -it -v:/dataname image 数据复制使用 docker cp containerid:/dataname ...
- Hadoop数据存储
Hadoop数据存储 Hadoop能高效处理数据的基础是有其数据存储模型做支撑,典型的是Hadoop的分布式文件系统HDFS和HBase. 一.HDFS文件系统 1.0. HDFS简介 HDFS是Ha ...
- Hadoop数据迁移解决方案 上
Hadoop数据迁移解决方案 数据迁移场景 冷热集群数据同步.分类存储 集群数据整体迁移 数据的准时同步 数据迁移考虑的因素 Bandwidth-带宽 带宽用多会影响到线上业务的任务运行,带宽用的少会 ...
- Kafka学习笔记(3)----Kafka的数据复制(Replica)与Failover
1. CAP理论 1.1 Cosistency(一致性) 通过某个节点的写操作结果对后面通过其他节点的读操作可见. 如果更新数据后,并发访问的情况下可立即感知该更新,称为强一致性 如果允许之后部分或全 ...
- 逻辑SQL Server数据复制101
介绍 (Introduction) Data replication has been around for many decades. There are two primary types of ...
- 通过Gearman实现MySQL到Redis的数据复制
通过Gearman实现MySQL到Redis的数据复制 日志未经声明,均为AlloVince原创.版权采用『 知识共享署名-非商业性使用 2.5 许可协议』进行许可. 对于变化频率非常快的数据来说,如 ...
- Dell shareplex 与HVR数据复制软件
今天大体了解了一下Dell shareplex 数据复制软件,网址为:http://software.dell.com/products/shareplex/ 从该网址能够看到. shareplex作 ...
- 分布式系统(数据复制与一致性)
文章目录 Replication CAP Conjecture Data-centric Consistency Models Sequential Consistency Causal Consis ...
最新文章
- PHP中try{}catch{}是异常处理.
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( plugins 闭包代码块中引入插件 | PluginAware#apply 方法引入插件 )
- 70% 产品经理都在考虑跳槽?还有哪些你不知道的行业真相
- 接收超时死信的死信交换机
- 《Node.js区块链开发》——1.6 参考
- OpenStack精华问答 | OpenStack是云吗?
- angularjs 表单校验
- Java笔记-对SpringBoot中CommandLineRunner的使用笔记
- 【gateway系列】手把手教你gateway整合nacos注册中心
- java 高德地图 车型比价计算_高德地图的高速公路过路费计算功能是如何实现的?有相应开放的API吗?...
- pythonshell窗口是什么_python与shell的3种交互方式介绍
- 【Nodejs开发】第2章 网站首页的布局
- net use 使用
- 程序员面试金典——1.8反转子串
- ios并发会造成什么问题_女生月经不调会引起什么并发症?
- java log4jhelper_java项目中log4j的日志,控制台跟文件日志级别都是info,为什么文件跟控制台输出的还不同呢?...
- 移动端学习笔记(小强测试品牌学员作品)
- 2. sales quote merge before
- 黑客攻防技术系列高清视频教程+必备工具包下载
- 运行bat时隐藏cmd窗口的方法(bat隐藏窗口 隐藏运行bat文件)
热门文章
- 什么是挂载?mount的用处在哪?(适合新手,讲解的非常好)
- 微信公众号分享开发过程中报错com.foxinmy.weixin4j.exception.WeixinException: 40164 invalid ip 120.79.217.10 (记录)
- [转]GIS火爆了??
- 【Bash百宝箱】shell内建命令之declare、typeset、local
- 1176:谁考了第k名
- html设置行高像素,css怎么设置行高?
- 游戏引擎AndEngine总结(十):单帧图片组合成为动画资源
- CSS高级技巧及规范
- 怎么找html代码js的位置,html文件里引用js文件一般放在什么位置才是最适合?
- Mysql中表的创建、修改与删除