[Hadoop]数据复制distcp vs cp

一篇文章彻底掌握 HDFS 跨集群跨版本数据同步工具 hadoop disctp 大家好,我是明哥!最近有小伙伴问到 hadoop distcp 的使用,对其中的一些细节和容易踩的坑不是很清楚,所以今天我们来看下 hadoop distcp 的原理,细节和容易踩的坑。1... 阅读详情

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: 30
        File System Counters
                FILE: Number of bytes read=0
                FILE: Number of bytes written=1501420
                FILE: Number of read operations=0
                FILE: Number of large read operations=0
                FILE: Number of write operations=0
                HDFS: Number of bytes read=12753350866
                HDFS: Number of bytes written=12753339159
                HDFS: Number of read operations=321
                HDFS: Number of large read operations=0
                HDFS: Number of write operations=69
        Job Counters 
                Launched map tasks=17
                Other local map tasks=17
                Total time spent by all maps in occupied slots (ms)=485825
                Total time spent by all reduces in occupied slots (ms)=0
        Map-Reduce Framework
                Map input records=17
                Map output records=0
                Input split bytes=2414
                Spilled Records=0
                Failed Shuffles=0
                Merged Map outputs=0
                GC time elapsed (ms)=1634
                CPU time spent (ms)=156620
                Physical memory (bytes) snapshot=5716221952
                Virtual memory (bytes) snapshot=32341671936
                Total committed heap usage (bytes)=12159811584
        File Input Format Counters 
                Bytes Read=9293
        File Output Format Counters 
                Bytes Written=0
        org.apache.hadoop.tools.mapred.CopyMapper$Counter
                BYTESCOPIED=12753339159
                BYTESEXPECTED=12753339159
                COPY=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】通过Distcp的方式迁移Hive中的数据至存储对象 将 1000GB 的文件复制到一个由 100 个节点组成的集群,一共分配 2000 个 map 任务(每个节点 20 个 map 任务)所以每个map任务平均复制 512MB 数据。如果数据非常大则有必要限制 map 的数量进而限制带宽和集群的使用(默认情况下,每个集群节点最多分配20个map任务)常规情况下,每个 map 至少复制256MB数据(除非输入的总数据量较少,否则一个 map 就可以完成所有的复制)通过对 distcp 指定 -m 参数,可以减少分配的map任务数。通过查看表详细信息的方式。 阅读详情

相关推荐

【大数据入门核心技术-Hadoop】(十)Hadoop数据迁移distcp详解

以前需要很长时间处理才能获得结果的问题 ,到现在变得顷刻之间就迎刃而解 ,同时还可以引发新的问题和新的见解。Hadoop 是 Apache Lucene 创始人Doug Cutting 创建的 ,Lucene 是一个应用 广 泛 的文本搜索系统库Hadoop起源于开 源的网络搜索引擎Apache Nutch,它本身也是 Lucene 项目的一部分。” 意思是说对于某些应用 (譬如根据以往的偏好来推荐电影和音乐),不论算法有多牛 ,基于小数据的推荐效果往往都不如基于大量可用数据的 一般算法的推荐效果。

739

Hadoop指令-周美婷

基础指令语法 1、ls指令含义:ls(list) 用法1:#ls含义:列出当前工作目录下的所有文件/文件夹的名称用法 用法2:#ls路径含义:列出指定路径下的所有文件/文件夹的名称关于路径(重要):路径可以分为两种:相对路径、绝对路径。相对路径:相对首先得有一个参照物(一般就是当前的工作路径);相对路径的写法:在相对路径中通常会用到2个符号“./”【表示当前目录下】、“../”【上一级目录下】。绝对路径:绝对路径不需要参照物,直接从根“/”开始寻找对应路径; 2、pwd指令用法:#pwd (pri

qq_65398011的博客 4236

电源完整性仿真流程梳理

可根据仿真流程导图,一步一步的去设置完成仿真。仿真的关键,在于对电路回路的理解以及所放置的电压源与电流的合理性,对于去耦电容的选择,则需要根据谐振频率计算,从而选取有效滤波的容值。

csy17729158342的博客 3442

HADOOP数据复制工具Distcp和cp比较

测试是发现如果文件很大,使用distcp会很快,能够达到1G/s,比cp的性能会好,两者最大的区别是分布式和单线程

cyf_2008的博客 1万+

Revit二次开发之双事件:空闲事件与DocumentChanged事件

对以下文章所展示的代码进行了修改,当前展示的代码可直接复制使用。 由于本人初学,下列语言为个人理解,如有错误请指正。   《引用1》中: 使用模态对话框,或者尽量保证事件在ExternalCommand的Execute函数或者ExternalApplication的OnStartup函数里面注册。 如果一定要使用非模态对话框,那么请使用ExternalEvent事件的Raise函数,强迫...

一个Revit二次开发的实习生 6147

ChatGPT Windows桌面版:从安全下载到高效配置的全流程指南

WebView封装技术是将网页应用转化为独立桌面程序的核心方法,它通过嵌入浏览器内核实现跨平台功能复用。其原理在于利用Electron或Tauri等框架,将Web内容打包进原生应用外壳,同时注入系统级API调用能力。这项技术的工程价值在于显著提升了Web应用的系统集成度和用户体验,使其能够支持全局快捷键、独立进程和本地数据存储等原生特性。在AI助手深度集成工作流的应用场景中,这种封装模式解决了浏览器多标签页切换繁琐、会话管理不便等痛点。本文以ChatGPT桌面客户端为例,详细解析了基于开源项目的安全下载路径

weixin_30437847的博客 484

Hadoop的cp命令使用

命令相关视频讲解:Linux系统面试刷题——Nginx访问日志IP访问量排名前10命令教你如何使用Hadoop的cp命令 介绍 作为一名经验丰富的开发者,我将教你如何使用Hadoop的cp命令进行文件复制。首先,我们来看一下整个流程。 流程图 #render_12_2846707943-svg{font-family:"...

weixin_41500534的博客 451

Windows中的TLS 1.2启用方法(IIS、C#、.Net framework)

折腾几天了windows中的tls1.2启用方法!特此记录一下 开发背景: 在一个用.net framework 2.0开发的客户端程序里面嵌入功能调用第三方物联网相关接口,服务器上有一个restful接口用于接收第三方上报的数据及处理,最后再调用第三方的物联网相关接口。本机开发环境Windows 10,客户服务器是Windows Server 2008 R2。 第一次写这种物联网相关的接口调用,而且第三方提供的文档比较简单,最基本的报文示例都没。开发环境里面各种摸索一步一个坑,首先在发送HTTP请求前

dl1314ld的博客 1万+

对象存储跑大数据为何卡顿?元数据瓶颈与Parquet优化实战

对象存储(如Amazon S3)作为现代数据湖核心底座,其本质是为高可用、海量非结构化数据设计的键值系统,而非传统大数据框架所依赖的强一致性、低延迟元数据管理模型。其性能瓶颈不在吞吐带宽,而在于LIST操作的线性扫描特性与最终一致性带来的不可预测延迟;技术价值体现在计算存储分离、跨区域弹性扩展与按需计费的成本优势。典型应用场景包括电商日志分析、AI训练数据供给、实时推荐流水线等对数据新鲜度和规模敏感的工程体系。本文聚焦S3A连接器调优、分区+分桶策略、Parquet格式强制规范及LIST请求治理,直击大数据

weixin_33716941的博客 381

用宝塔面板+CentOS 7.6,30分钟搞定DNF手游私服搭建(附全套资源下载)

本文详细介绍了如何使用宝塔面板和CentOS 7.6在30分钟内快速搭建DNF手游私服。通过图形化界面操作,无需复杂命令,即可完成服务端部署、MySQL数据库配置及客户端适配,适合Linux新手快速上手。

weixin_33737774的博客 601

快速上手CH340N电路设计(CH340N USB转串口模块 USB Type-C接口 CH340系列芯片讲解)

一、上模块 二、功能分析 l 芯片:CH340N l 输入接口:USB、TYPE-C l 输出接口:TTL(5V\3.3V\GND\TX\RX) l 指示灯:电源、TX、RX 三、CH340x芯片 l CH340 是一个 USB 总线的转接芯片,实现 USB 转串口 l 全速 USB 设备接口,兼容 USB V2.0 l 硬件全双工串口,内置收发缓冲区,支持通讯波特率 50bps~2Mbps l 支持常用的 MODEM 联络信号 RTS、DTR、DCD、RI、DS...

东小东博客 5万+

hadoop fs -cp

hadoop fs -cp 若目的目录存在,则追加cp的数据,若不存在,则创建目录并写入cp的数据 如果要copy,建议: hadoop fs -rm -r ${dir_a} && hadoop fs -cp ${dir_b} ${dir_a}

m0_67402125的博客 2582

ubuntu 20.04 搭建多用户远程桌面共享及同时在线使用

摘要:本文介绍了在物理机上配置远程桌面访问的完整流程。通过setup_xrdp.sh脚本自动安装xrdp服务,修改配置文件并开放3389端口。同时提供了用户管理脚本:add_rdp_users.sh用于创建带sudo权限的远程用户,del_rdp_users.sh用于删除用户及主目录。还包含批量操作脚本add_rdp_all.sh和del_rdp_all.sh,支持一次性创建/删除多个用户(如dev1-dev5),所有用户密码统一设置为111111。完整方案实现了远程桌面环境的快速部署和用户集中管理。

623

这一篇和大家聊聊Hadoop

hello大家好 我是大家的学习成长小伙伴 我们作为一个资深的CV工程师,在开发中肯定或多或少的接触过些许大数据的知识,也或多或少的去了解过这些大数据知识,在现在这个数据为王的时代,在现在这个数据量和数据级在日益增长的今天,大数据变得炽手可热 那么什么是大数据呢,以及我们最常听说过的Hadoop、spark、storm、flink各自的优缺点、擅长的方向都是什么呢,以及hive、HBASE这些都是如何基于hdfs存储数据的,如何来分区数据的呢 Hadoop中的hdfs到底是如何支持这么大量的数据存储的,到

1492

SI案例分享--PCB通孔互连新技术的应用(VeCS)

本文介绍了VeCS的物理结构和制造过程,并通过全波仿真模拟和测量,分析了VeCS的电性能,并与传统的测量方法进行了比较。结果表明,由于有一个连续的参考平面,VeCS的TDR阻抗可以很容易地控制到目标阻抗,同时可以大大减轻信道上的串扰,的确是一种性能不错的PCB互连创新设计方案。

一只豌豆象的博客 2116

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

工具-Hadoop distcp

fs shell拷贝和移动 distcp 原理 distcp 操作方法 fs shell拷贝和移动 通常我们使用hadoop提供的fs shell来完成hdfs文件管理。为了对比dictcp,先看下常用的-cp和-mv的使用。 现有目录/lib包含文件1.data 2.data -cp如下操作 hadoop fs -cp /lib /lib2 拷贝生成相同结构的lib2 had...

文洲的专栏 3700

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

cp

hadoop cp 文件的使用 cp dir1/  dir2/  这个时候,如果已经存在dir2了,则会生成dir2/dir1 这个时候如果dir2不存在,则会生成dir2/,同时把dir1下的文件都拷贝过去。 cp dir1/* dir2/ 这种方式将dir1下的所有文件拷贝到dir2下,但是如果dir2不存在就出错,这个时候需要提前判断一下,如果不存在dir,就要mkdir一

SophieZhou的专栏 627

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

hadoop distcp命令的使用

hadoop distcp -update -skipcrccheck -m $num_map $old_table_location $new_table_location命令的使用。 简单介绍:http://blog.youkuaiyun.com/stark_summer/article/details/45869945 如何在两个集群之间进行表数据的拷贝呢? 1. 复制表结构; 2. 获取旧表

什么最重要?算法!! 3662

hadoop 常用命令

hdfs haadmin 1、-transitionToActive 2、-transitionToStandby : 将指定的namenode ID切换为Active或者standby。这个指令并不会触发“fencing method”,所以不常用,我们通常使用"hdfs haadmin -failover"来切换Namenode状态。 3、-failover [–forcefence] [–foreactive] : 在两个Namenode之间failover。这个指令会触发将first节点fail

我还是个菜鸟 3215

hadoop distcp踩坑记

distcp(分布式拷贝)是用于大规模集群内部和集群之间拷贝的工具。 它使用Map/Reduce实现文件分发,错误处理和恢复,以及报告生成。 它把文件和目录的列表作为map任务的输入,每个任务会完成源列表中部分文件的拷贝。 1、在nn1上执行 hadoop distcp hdfs://source-nn1:9000/user/xxx.txt hdfs://dest-nn1:9000/ ...

B11050101的博客 7154

Hadoop权威指南:通过distcp并行复制

Hadoop权威指南:通过distcp并行复制 distcp是一个分布式复制程序,改程序可以从Hadoop文件系统间复制大量数据,也可以将大量的数据复制到Hadoop中 distcp的典型应用是在两个HDFS集群间传输数据 hadoop distcp hdfs://namenode1/foo hdfs://namemode2/bar 默认情况下, distcp会跳过目标路径下已经存在的文件,...

weixin_30456039的博客 227

Hadoop distcp命令(一)

因为工作中涉及到了不同集群之间的数据拷贝问题,所以翻看了官方文档,为了能更好的吸收,特此将文档翻译如下。 distcp 分布式拷贝 一、总览 DistCp (分布式拷贝)是一个用来进行数据拷贝的工具,不同的是,这个命令通常是在大规模集群内部和大规模集群之间使用。DistCp命令的拷贝过程本质依然是MapReduce任务,它通过MR的方式来实现拷贝过程中的数据分发、错误处理以及报告。 该命令将文件和目录的列表作为map任务的输入,每个map任务都会复制原列表中指定路径下的文件。 早期版本的DistCp在用法、

IronWring_Fly的博客 1万+

hadoop distcp的命令和常用

一般使用hadoop -cp的命令来复制文件或者目录,但是hadoop -cp的效率对于处理大数据下的目录级别的copy并不能展现出高性能。 接下来distcp的使用,就是为了增加copy情况下的并行度,真正实现parallel的copy。 copy文件: hadoop distcp hdfs://namenode1/foo/file1 hdfs://namenode1/foo/file2 copy目录: hadoop distcp hdfs://namenode1/foo1/ hdfs://namenod

weixin_44851746的博客 1929

跨集群拷贝Distcp性能测试

distcp+shell脚本实现跨集群数据迁移

m0_46168848的博客 4132

linux tar打包命令 vs cp

tar 参考:8.3 打包指令: tar | 鸟哥的 Linux 私房菜:基础学习篇 第四版 (gitbooks.io) 参考:- 如何复制文件在 linux 比 cp 更快和安全 - ZYLK tar参数 选项与参数: -c :创建打包文件,可搭配 -v 来察看过程中被打包的文件名(filename) -t :察看打包文件的内容含有哪些文件名,重点在察看“文件名”就是了; -x :解打包或解压缩的功能,可以搭配 -C (大写) 在特定目录解开 特别留意的是, -c, -t, -...

qq_41566366的博客 1522

【Hadoop-Distcp】通过Distcp的方式进行两个HDFS集群间的数据迁移

主要说明: 1、将表名统一放到服务器文本 hotDataTable 中,按照需要将需要补充数据的表放入文本即可。 2、-i 参数:跳过异常,避免文件迁移过程中出现文件不存在等异常情况出现,异常会中断迁移任务。 3、-skipcrccheck 参数:跳过 crc 算法校验,会加快数据传输速度。 4、-update 与 -delete 参数:按照文件进行校验,B 集群 有的会保存,B 集群 没有的会按照 A 集群 进行迁移,B 集群 多出的会进行删除。(通常update与delete一起使用)

weixin_53543905的博客 1409
上一篇: hive group by | distinct区别以及性能比较
下一篇: group by后面不能使用列的别名分析
yjgithub
博客等级 码龄11年 53粉丝 105原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值