[B 站公开课] 多 Hadoop 集群间如何做数据迁移

教程 青牛 ⋅ 于 2023-12-19 11:38:20 ⋅ 237 阅读

公开课回放地址:https://www.bilibili.com/video/BV14j411W7g3

hadoop数据迁移

Hadoop 是一个分布式计算平台,提供了数据存储和数据计算的功能。

当有机房下线,数据容灾,机房搬迁等应用场景时。就需要将原来hadoop集群中的数据迁移到新的集群中时,就需要考虑怎么在两个hadoop集群中迁移数据。

常见的迁移数据方式有scp、ftp和distcp。

  • scp(Secure Copy Protocol)

  • ftp(File Transfer Protocol)

  • distcp(Distributed Copy)

scp数据传输

file

SCP(Secure Copy)是一种基于SSH协议进行加密传输的文件复制协议。该协议通过在远程服务器上运行SCP的服务端,然后在本地机器上运行SCP客户端来实现安全、加密的文件传输。

优点:
- 安全性高,支持加密传输
- 简单易用,无需配置服务或应用

缺点:
- 速度相对较慢
- 不支持高并发传输
- 传输大量数据时,可能会导致网络拥塞或阻塞

file

可以通过修改加密方式提高传输速度

file

ftp数据传输

file

文件传输协议(File Transfer Protocol,FTP)是用于在网络上进行文件传输的一套标准协议

优点:
- 传输速度快,支持高并发传输
- 支持多种操作系统和协议

缺点:
- 安全性较低
- 需要配置服务或应用程序

安装ftp客户端

1 安装wget
yum install -y wget
2 备份
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.bak
3 华为yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://repo.huaweicloud.com/repository/conf/CentOS-7-reg.repo 
4 清理缓存
yum clean all
5 重新生成缓存
yum makecache
6 查看yum源信息
yum repolist
7 执行安装ftp客户端
yum install -y ftp

编写脚本测试

#!/bin/bash
ftp -i -n <<!
open ${1} ${2}
user ${3} ${4}
binary
put ${5}
quit
!

put数据到ftp服务器

file

#!/bin/bash

ftp -i -n <<!
open ${1} ${2}
user ${3} ${4}
binary
get /${5} /data/${5}
quit
!

从ftp服务器拉去数据

file

操作机同时操作两台集群

file

优点:简单方便,处理小数据量时好用

缺点:数据量大时会受到网络和带宽的影响,速度会慢

distcp数据迁移

file

DistCp(Distributed Copy)是用于大规模集群内部或者集群之间的高性能拷贝工具,和在linux上执行cp,scp实现效果是一致的,不同的是,cp是将本机的文件和目录拷贝到本机的其它地方,scp则可以将A机器的文件或者目录拷贝到B机器,而Distcp则可以实现的是A(hdfs)集群的数据拷贝到B(hdfs)集群,而分布式使得数据拷贝时,可以实现A级群的DN节点同时向B集群的DN节点发送数据,突破了单机拷贝的网卡速率限制,拷贝效率更高。

优点:
- 支持分布式计算平台之间进行高速数据迁移
- 支持集群级别操作,可以方便地进行大规模数据备份和恢复操作
- 自动处理失败的情况,可以继续进行传输

缺点:
- 对于小量数据传输,distcp 拷贝不如 scp 和 ftp 快速

 #-update 更新
 # -overwrite 覆盖
 # -m 同时启动的最大map数
 #-pugp 保留权限相关属性
 #- bandwidth  500M,每个map最多使用100Mb带宽。
 hadoop distcp   hdfs://ns1/etc  hdfs://nn2-62374:9000/

file

调整map数量

 hadoop distcp  -m 5  hdfs://ns1/etc  hdfs://nn2-62374:9000/
 hadoop distcp  -m 30  hdfs://ns1/etc  hdfs://nn2-62374:9000/

更新

 hadoop distcp -update  hdfs://ns1/demo  hdfs://nn2-62374:9000/

综上所述,选择哪种方式进行迁移数据,要根据具体的需求来决定。对于小量的数据迁移,可以考虑使用 scp 或 ftp,其中scp可以保证传输安全性,如果安全性不考虑的话,可以使用ftp,速度要快于scp,而对于大规模数据迁移,可以使用 distcp。

思考题:

1,如果集群版本不同,在使用distcp进行数据迁移时应该注意什么?

2,如果公司想要将hive数仓中的数据进行迁移,应该怎么做合适?

版权声明:原创作品,允许转载,转载时务必以超链接的形式表明出处和作者信息。否则将追究法律责任。来自海汼部落-青牛,http://hainiubl.com/topics/76422
点赞
成为第一个点赞的人吧 :bowtie:
回复数量: 0
    暂无评论~~
    • 请注意单词拼写,以及中英文排版,参考此页
    • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
    • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
    • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
    • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
    Ctrl+Enter