公开课回放地址: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数据传输
SCP(Secure Copy)是一种基于SSH协议进行加密传输的文件复制协议。该协议通过在远程服务器上运行SCP的服务端,然后在本地机器上运行SCP客户端来实现安全、加密的文件传输。
优点:
- 安全性高,支持加密传输
- 简单易用,无需配置服务或应用
缺点:
- 速度相对较慢
- 不支持高并发传输
- 传输大量数据时,可能会导致网络拥塞或阻塞
可以通过修改加密方式提高传输速度
ftp数据传输
文件传输协议(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服务器
#!/bin/bash
ftp -i -n <<!
open ${1} ${2}
user ${3} ${4}
binary
get /${5} /data/${5}
quit
!
从ftp服务器拉去数据
操作机同时操作两台集群
优点:简单方便,处理小数据量时好用
缺点:数据量大时会受到网络和带宽的影响,速度会慢
distcp数据迁移
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/
调整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数仓中的数据进行迁移,应该怎么做合适?