当前位置: 首页 > news >正文

两个hdfs之间迁移传输数据

本文参考其他大数据大牛的博文做了整理和实际验证,主要解决hdfs跨集群复制/迁移问题。
在hdfs数据迁移时总会涉及到两个hdfs版本版本问题,致力解决hdfs版本相同和不同两种情况的处理方式,长话短说,进正文。

distcp: hadoop自带的分布式复制程序

​ distcp 是hadoop自带的分布式复制程序,该程序可以从 Hadoop 文件系统间复制大量数据,也可以将大量的数据复制到 Hadoop 中。

​ distcp 的典型应用场景是在两个 HDFS 集群之间传输数据。

情况1:Hdfs版本相同(如果两个集群运行相同版本的 Hadoop,就非常适合使用 hdfs 方案):

hadoop distcp hdfs://namenode1/foo hdfs://namenode2/bar#这行指令把第一个集群 /foo 目录(及其内容)复制到第二个集群的 /bar 目录下,所以第二个集群最后的目录结构是 /bar/foo。如果 /bar 不存在,则新建一个。也可以指定多个源路径,并把所有路径都复制到目标路径下。
#注意,源路径必须是绝对路径。

情况2:Hdfs版本不同(使用基于只读 HTTP 协议的 HFTP 文件系统并从源文件系统中读取数据):

如果试图在两个运行着不同 HDFS 版本的集群上使用 distcp 复制数据并使用 hdfs 协议,会导致复制作业失败,因为两个系统版本的 RPC 是不兼容的。

想要弥补这种情况,可以使用基于只读 HTTP 协议的 HFTP 文件系统并从源文件系统中读取数据。

这个作业必须运行在目标集群上,进而实现 HDFS RPC 版本的兼容。

hadoop distcp hftp://namenode1:50070/foo hdfs://namenode2/bar#注意,需要在 URI 源中指定 namenode 的 Web 端口。这是由 dfs.http.address 属性决定的,其默认值为50070
#这个作业必须运行在目标集群上,进而实现 HDFS RPC 版本的兼容。

情况3:不考虑hdfs版本

使用 webhdfs 协议(替代hftp)后,对源集群和目标集群均可以使用HTTP协议进行通信,且不会造成任何不兼容的问题

hadoop distcp webhdfs://namenodel: 50070/foo webhdfs://namenode2:50070/bar

另外一个变种是使用 HDFS HTTP 代理服务作为源 distcp 或者目标 distcp,进而具备了设置防火墙和控制带宽的优点。

distcp 的选项
在默认情况下, distcp 会跳过目标路径下已经存在的文件,但可以通过 -overwrite 选项覆盖现有的文件。也可以通过 -update 选项来选择有改动的文件。
使用 -overwrite 和 -update 选项中任意一个(或两个)需要改变源路径和目标路径的解释方式如果改变先前例子中第一个集群 /foo 目录下的一个文件,就会进行下面的命令将修改同步到第二个集群上:hadoop distcp -update hdfs://namenodel/foo hdfs://namenode2/bar/foo 因为源目录下的内容已被复制到目标目录下,所以需要在目标路径中添加额外的子目录 /foo。
(如果对 rsync 命令比较熟悉,可以认为 -overwrite 或 -update 选项就是在源路径末尾添加一个斜杠。)有很多选项可以用来控制 distcp 的复制方式,包括保留文件属性,忽略节点故障和限制文件或总数据的复制量。不带任何选项运行时,将显示使用说明。
distcp 的底层原理

​ distcp 是作为一个 MapReduce 作业来实现的,该复制作业是通过集群中并行运行的 map 来完成。这里没有 Reducer。

每个文件通过一个 map 进行复制,并且 distcp 试图为毎一个 map 分配大致相等的数据来执行,即把文件划分为大致相等的块。map 的数量是这样确定的。让每一个 map 复制合理的数据量来尽量减少构建任务时所涉及的开销,这是一个很好的想法,所以每个 map 至少复制256MB数据(除非输入的总数据量较少,否则一个 map 就可以完成所有的复制)。例如,将 1GB 大小的文件分给4个map任务。如果数据非常大则有必要限制 map 的数量进而限制带宽和集群的使用。默认情况下,每个集群节点最多分配20个map任务。例如,将 1000GB 的文件复制到一个由 100 个节点组成的集群,一共分配 2000 个 map 任务(每个节点 20 个 map 任务),所以每个map任务平均复制 512MB 数据。通过对 distcp 指定 -m 参数,可以减少分配的map任务数。例如,-m 1000 将分配 1000 个 map 任务,每个平均复制 1GB 数据

学习参考:https://blog.csdn.net/Shockang/article/details/117729852

相关文章:

两个hdfs之间迁移传输数据

本文参考其他大数据大牛的博文做了整理和实际验证,主要解决hdfs跨集群复制/迁移问题。 在hdfs数据迁移时总会涉及到两个hdfs版本版本问题,致力解决hdfs版本相同和不同两种情况的处理方式,长话短说,进正文。 distcp: hadoop自带的…...

C++ 缺失的数字

有n个数字&#xff0c;值就是1~n&#xff0c;现发现丢失了2个数字&#xff0c;请你根据剩余的n-2个数字&#xff0c;编程计算一下&#xff0c;缺失的是哪两个数字呢&#xff1f; &#xff08;使用桶排&#xff0c;标记输入过的数字&#xff09; #include<bits/stdc.h> us…...

JVM,JRE和JDK的区别

JVM&#xff0c;JRE和JDK的区别 JVM(Java Virtual Machine&#xff0c;Java虚拟机)JREJRE目录结构 JDK JVM(Java Virtual Machine&#xff0c;Java虚拟机) Java程序的跨平台特性主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设备上运行&#xff0c;Java虚拟机中…...

合宙Air724UG LuatOS-Air LVGL API控件--日历 (Calendar)

日历 (Calendar) LVGL 提供了一个用来选择和显示当前日期的日历控件。 示例代码 – 高亮显示的日期 highlightDate lvgl.calendar_date_t() – 日历点击的回调函数 – 将点击日期设置高亮 function event_handler(obj, event) if event lvgl.EVENT_VALUE_CHANGED then da…...

[python]问题:pandas处理excel里的多个sheet

Pandas 可以很容易地处理 Excel 文件中的多个工作表。首先,你需要安装 pandas 和 openpyxl(用于读取 .xlsx 文件)库。你可以使用以下命令安装这两个库: pip install pandas openpyxl接下来,你可以使用以下代码来处理 Excel 文件中的多个工作表: import pandas as pd# 读…...

[MySQL] MySQL基础操作汇总

文章目录 前言1.数据库概述1.1 数据库相关概念1.2登录MySQL&#xff1a;1.3 MySQL常用命令1.4表&#xff1a;1.5SQL语句分类&#xff1a; 2.CRUD操作2.1 DQL1.基础查询基础查询&#xff08;简单查询&#xff09;条件查询&#xff1a;排序查询&#xff1a;分组查询&#xff1a;分…...

C语言每日一题 ---- 打印从1到最大的n位数(Day 1)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;C语言天天练 &#x…...

2023-08-23 LeetCode每日一题(统计点对的数目)

2023-08-23每日一题 一、题目编号 1782. 统计点对的数目二、题目链接 点击跳转到题目位置 三、题目描述 给你一个无向图&#xff0c;无向图由整数 n &#xff0c;表示图中节点的数目&#xff0c;和 edges 组成&#xff0c;其中 edges[i] [ui, vi] 表示 ui 和 vi 之间有一…...

LLMs之Code:SQLCoder的简介、安装、使用方法之详细攻略

LLMs之Code&#xff1a;SQLCoder的简介、安装、使用方法之详细攻略 目录 SQLCoder的简介 1、结果 2、按问题类别的结果 SQLCoder的安装 1、硬件要求 2、下载模型权重 3、使用SQLCoder 4、Colab中运行SQLCoder 第一步&#xff0c;配置环境 第二步&#xff0c;测试 第…...

数学建模(四)整数规划—匈牙利算法

目录 一、0-1型整数规划问题 1.1 案例 1.2 指派问题的标准形式 2.2 非标准形式的指派问题 二、指派问题的匈牙利解法 2.1 匈牙利解法的一般步骤 2.2 匈牙利解法的实例 2.3 代码实现 一、0-1型整数规划问题 1.1 案例 投资问题&#xff1a; 有600万元投资5个项目&…...

openGauss学习笔记-47 openGauss 高级数据管理-权限

文章目录 openGauss学习笔记-47 openGauss 高级数据管理-权限47.1 语法格式47.2 参数说明47.3 示例 openGauss学习笔记-47 openGauss 高级数据管理-权限 数据库对象创建后&#xff0c;进行对象创建的用户就是该对象的所有者。数据库安装后的默认情况下&#xff0c;未开启三权分…...

开始MySQL之路——MySQL 事务(详解分析)

MySQL 事务概述 MySQL 事务主要用于处理操作量大&#xff0c;复杂度高的数据。比如说&#xff0c;在人员管理系统中&#xff0c;你删除一个人员&#xff0c;你即需要删除人员的基本资料&#xff0c;也要删除和该人员相关的信息&#xff0c;如信箱&#xff0c;文章等等&#xf…...

注解和class对象和mysql

注解 override 通常是用在方法上的注解表示该方法是有重写的 interface 表示一个注解类 比如 public interface override{} 这就表示是override是一个注解类 target 修饰注解的注解表示元注解 deprecated 修饰某个元素表示该元素已经过时了 1.不代表该元素不能用了&…...

【桌面小屏幕项目】ESP32开发环境搭建

视频教程链接&#xff1a; 【【有手就行系列】嵌入式单片机教程-桌面小屏幕实战教学 从设计、硬件、焊接到代码编写、调试 ESP32 持续更新2022】 https://www.bilibili.com/video/BV1wV4y1G7Vk/?share_sourcecopy_web&vd_source4fa5fad39452b08a8f4aa46532e890a7 一、esp…...

CSS 滚动容器与固定 Tabbar 自适应的几种方式

问题 容器高度使用 px 定高时&#xff0c;随着页面高度发生变化&#xff0c;组件展示的数量不能最大化的铺满&#xff0c;导致出现底部留白。容器高度使用 vw 定高时&#xff0c;随着页面宽度发生变化&#xff0c;组件展示的数量不能最大化的铺满&#xff0c;导致出现底部留白…...

IP 地址追踪工具

IP 地址跟踪工具是一种网络实用程序&#xff0c;允许您扫描、跟踪和获取详细信息&#xff0c;例如 IP 地址的 MAC 和接口 ID。IP 跟踪解决方案通过使用不同的网络扫描协议来检查网络地址空间来收集这些详细信息。一些高级 IP 地址跟踪器软件&#xff08;如 OpUtils&#xff09;…...

最新企业网盘产品推荐榜发布

随着数字化发展&#xff0c;传统的文化存储方式已无法跟上企业发展的步伐。云存储的出现为企业提供了新的文件管理存储模式。企业网盘作为云存储的代表性工具&#xff0c;被越来越多的企业所青睐。那么在众多企业网盘产品中&#xff0c;企业该如何找到合适的企业网盘呢&#xf…...

实用的面试经验分享:程序员们谈论他们的面试历程

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…...

6.oracle中listagg函数使用

1. 作用 可以实现行转列&#xff0c;将多列数据聚合为一列&#xff0c;实现数据的压缩 2. 语法 listagg(measure_expr&#xff0c;delimiter) within group ( order by order_by_clause); 解释&#xff1a; measure_expr可以是基于任何列的表达式 delimiter分隔符&#xff0c…...

习题练习 C语言(暑期)

编程能力小提升&#xff01; 前言一、转义字符二、重命名与宏定义三、三目运算符四、计算日期到天数转换五、计算字符串长度六、宏定义应用七、const常量八、C语言基础九、const常量&#xff08;二&#xff09;十、符号运算十一、记负均正十二、SWITCH&#xff0c;CASE十三、错…...

Cursor智能体工具包:从AI编程助手到自主规划开发伙伴

1. 项目概述&#xff1a;一个为AI编程助手赋能的智能工具包如果你和我一样&#xff0c;日常重度依赖Cursor这类AI编程助手&#xff0c;那你肯定也经历过这样的时刻&#xff1a;面对一个复杂的重构任务&#xff0c;你不得不把需求拆成十几条指令&#xff0c;一条条喂给AI&#x…...

WorkBuddy+PPT Master组合,AI-PPT 的效率革命

用 AI 做 PPT&#xff0c;10 分钟出了 30 页&#xff0c;漂亮得不行。大家好&#xff0c;我是小虎。可下载到本地&#xff0c;双击打开&#xff0c;傻眼了。所有文字都是图片&#xff0c;一个都改不了。想改个标题&#xff1f;没办法。想调个字号&#xff1f;没办法。想加一页&…...

基于Wechaty的插件化聊天机器人开发:从消息管道到指令系统

1. 项目概述与核心价值最近在折腾聊天机器人&#xff0c;特别是基于微信生态的自动化工具时&#xff0c;发现一个挺普遍的需求&#xff1a;如何让机器人更“聪明”地处理群聊里的各种指令和消息&#xff1f;很多开发者朋友都卡在消息路由、指令解析和状态管理这些繁琐的细节上&…...

CubeMX默认配置的坑:STM32 LPUART的ORE溢出错误如何彻底解决(从寄存器到HAL库的避坑指南)

STM32 LPUART的ORE溢出错误&#xff1a;从硬件机制到HAL库的深度解决方案 当你在深夜调试STM32的LPUART接口时&#xff0c;突然发现串口"神秘"地停止了响应——这种场景对于经验丰富的嵌入式工程师来说并不陌生。问题的根源往往指向那个容易被忽视的Overrun Error&am…...

手把手教你用LabelImg标注自己的数据集:从哆啦A梦到实战项目的YOLOv5训练准备

从哆啦A梦到工业级应用&#xff1a;LabelImg数据标注与YOLOv5训练全流程实战 在计算机视觉领域&#xff0c;数据标注的质量往往决定了模型性能的上限。就像建筑需要坚实的地基一样&#xff0c;一个优秀的YOLOv5模型离不开精心准备的数据集。本文将带您从零开始&#xff0c;通过…...

代码评审可视化图谱:从Diff到Graph的工程实践与实现

1. 项目概述&#xff1a;当代码评审遇上可视化图谱在团队协作开发中&#xff0c;代码评审&#xff08;Code Review&#xff09;是保障代码质量、促进知识共享的关键环节。然而&#xff0c;传统的代码评审流程&#xff0c;尤其是在处理大型、复杂的变更集&#xff08;Change Set…...

从PDCA到DevOps:构建可落地的持续改进框架与实践指南

1. 项目概述&#xff1a;一个关于持续改进的实践框架在软件工程、产品研发乃至个人成长的领域里&#xff0c;“持续改进”这个词我们听得耳朵都快起茧子了。几乎每个团队都在提敏捷、提DevOps、提精益&#xff0c;其核心思想都绕不开“持续改进”这四个字。但说实话&#xff0c…...

基于静态分析与规则引擎的智能代码审查机器人设计与实现

1. 项目概述&#xff1a;一个能帮你自动“说话”的代码机器人 最近在GitHub上看到一个挺有意思的项目&#xff0c;叫 rokpiy/auto-commenter 。光看名字&#xff0c;你大概能猜到它的核心功能&#xff1a;自动生成评论。但如果你以为这只是个简单的“复制粘贴”脚本&#xff…...

VisualCppRedist AIO终极指南:一劳永逸解决Windows软件运行问题

VisualCppRedist AIO终极指南&#xff1a;一劳永逸解决Windows软件运行问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 还在为"应用程序无法启动"…...

JESD204B高速串行接口技术解析与应用实践

1. JESD204B接口技术深度解析JESD204B作为第三代高速串行接口标准&#xff0c;正在彻底改变数据转换器与逻辑器件之间的连接方式。我在实际项目中使用过ADC16DX370和DAC38J84等多款支持JESD204B的器件&#xff0c;深刻体会到这种接口带来的设计变革。相比传统的LVDS或CMOS并行接…...