【ArchSummit架构师峰会】基于大模型的基础框架、中台、应用层等专题全覆盖 >>> 了解详情
写点什么

非结构化数据迁移 -Java 版 S3Transfer

  • 2019-10-21
  • 本文字数:3638 字

    阅读完需:约 12 分钟

非结构化数据迁移-Java 版S3Transfer

一、操作说明

1、JAVA 版迁移工具说明

Java 版 S3Transfer 工具目前为公测阶段,此迁移工具支持从 AWS S3、阿里云、腾讯云、百度云等存储迁移文件到京东云对象存储;同时也支持本地文件列表迁移。大概逻辑为先获取文件的地址或外链,然后根据外链读取数据,然后进行迁移,这个工具是 listObject,transfer,md5check 三个工具的集成:


listObject 工具的目的是列出用户配置 bucket 下的所有文件的列表。如配置 prefix,则列出该 prefix 下的所有文件列表;


transfer 工具的目的是将源文件迁移到 oss 对象存储中;


md5check 工具用于 md5 值校验。

2、工具特点

  • 支持丰富的数据源:

  • 本地数据:将本地存储的数据迁移到 OSS;

  • 其他对象存储:目前支持 AWS S3,阿里云 OSS,腾讯云 COS,百度 BOS,华为 OBS 存储迁移至京东云 OSS,后续会不断扩展;

  • URL 列表:根据指定的 URL 下载列表进行下载迁移到 京东云 OSS;

  • Bucket 相互复制:京东云 OSS 的 Bucket 数据相互复制, 支持跨账号跨地域及同区域的数据复制。

  • 支持断点续传;

  • 支持流量控制;

  • 支持迁移特定前缀的文件;

  • 支持并行数据下载、上传;

  • 迁移校验:对象迁移后的校验。

3、实操迁移场景说明

为保证实操的可操作性和直观性,本文档采用大文件传输(2 个 10G 大小的文件),类型为 s3file,从京东云账号①通过外网传输至京东云账号②对象存储空间,用来模拟跨公有云之间的对象存储迁移,任务控制端为京东云的一台 Centos 7.4 云主机。


4、备注

1.大文件传输会将单个文件分成若干个切片进行传输,如图:



2.迁移过程中,迁移日志将默认打印到 ./log 目录下。迁移的所有文件将打印到 audit-0.log 中,迁移成功的文件将打印到 audit.success 日志中(如果将目标端传输成功的文件删除后,需要删除 audit.success 日志文件方可进行重新传输),如果需要筛选迁移失败的文件,请使用命令:


1grep "1$" audit-0.log*
复制代码

二、环境准备

1、新建云主机

2、新建 Bucket

需要准备两个京东云账号,一个在华北-北京创建对象存储空间,一个在华东-上海创建对象存储空间,以此来模拟跨公有云的对象存储迁移。


账号①-华北-北京:beijing-to-shanghai


账号②-华东-上海:shanghai-from-beijing



3、使用 S3fs 在云主机实例上挂载 Bucket

1.安装依赖包


1yum install automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel -y
复制代码


2.安装以及编译


1git clone https://github.com/s3fs-fuse/s3fs-fuse.git2cd s3fs-fuse3./autogen.sh4./configure5make && make install
复制代码


3.创建密码文件


1echo Access_Key_ID:Access_Key_Secret > ~/.passwd-s3fs2chmod 600 ~/.passwd-s3fs
复制代码


Access_Key_ID:Access_Key_Secret[](https://uc.jdcloud.com/account/accessKey)
复制代码



4.挂载对象存储到本地目录/hcc(目录名称根据自己的名字简称定义)


1mkdir /hcc2s3fs bucketname /hcc -o passwd_file=~/.passwd-s3fs -o url="https://s3.cn-north-1.jcloudcs.com"
复制代码


mkdir:创建hcc文件夹作为本地挂载目录s3fs:手动挂载命令,其中bucketname为bucket名称、/hcc是本地挂载路径、passwd_file为密码文件位置、url为京东云对象存储兼容S3域名(请输入空间的Bucket域名)
复制代码


5.查看挂载结果


1df -h
复制代码



6.通过 dd 命令在所挂载的对象存储里生成文件


这个命令会在所挂载的源对象存储Bucket里生成2个大小为10GB的小文件。
复制代码


1cd /hcc2for ((i=1;i<=2;i++));do dd if=/dev/zero of=block_$i.file bs=1M count=10240;done
复制代码


文件生成结果:



4、部署 JAVA 环境

下载解压 jdk


1[root@pocenv-hcc-test-hb ~]# wget https://pocenv-hcc.oss.cn-north-1.jcloudcs.com/jdk-8u191-linux-x64.tar.gz && tar zxf jdk-8u191-linux-x64.tar.gz && mv jdk1.8.0_191/ /usr/local/ && ln -s /usr/local/jdk1.8.0_191/ /usr/local/jdk
复制代码


配置环境变量


1vim /etc/profile
复制代码


在配置文件尾部加入


1######## JDK #######2JAVA_HOME=/usr/local/jdk1.8.0_1913JAVA_BIN=/usr/local/jdk1.8.0_191/bin4PATH=$PATH:$JAVA_BIN5CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar6export JAVA_HOME JAVA_BIN PATH CLASSPATH
复制代码


重新加载变量配置文件并查看 jdk 版本


1[root@pocenv-hcc-test-hb jdk8]# source /etc/profile2[root@pocenv-hcc-test-hb jdk8]# java -version3java version "1.8.0_191"4Java(TM) SE Runtime Environment (build 1.8.0_191-b12)5Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
复制代码

三、迁移操作

1、下载 Java 版 S3Transfer

1[root@pocenv-hcc-test-hb ~]# mkdir -p /root/java_transfer;cd /root/java_transfer;wget https://downloads.oss.cn-north-1.jcloudcs.com/transfer-tools-java-1.0.0.jar;wget https://downloads.oss.cn-north-1.jcloudcs.com/application.yml
复制代码

2、配置文件说明application.yml

重点说明:


  • jobType:任务类型,分为 listObject 列出文件、transfer 传输、md5check md5 检查,我们这里是传输,所以选择 transfer;

  • sourceType:数据来源的类型,分别为 urlfile,diskfile,s3file(AWS S3、腾讯云 COS、百度 BOS、华为 OBS、京东云 OSS)aliyunfile,disklistfile(本地文件列表),我们京东云是兼容 s3 的,所以选择 s3file;

  • src.access. id/ src.secret.key:源对象存储的 AK/SK;

  • src.endpoint:源对象存储的 Endpoint;

  • 阿里云腾讯云百度云华为云

  • src.bucket:源对象存储的 Bucket;

  • des .access.id /des.secret.key:目标对象存储的 AK/SK;

  • des.endpoint:目标对象存储的 Endpoint;

  • des.bucket:目标对象存储的 Bucket;


注:如下标红内容是我们需要关注的(“:“ 后要加个空格才能生效):


###########################################################################################jobType 为 listObject,transferjobType: transfer#sourceType 类型共有:urlfile,diskfile,s3file,aliyunfile,disklistfilesourceType: s3file#urlType : onlyUrl##############################################################################################sourceType 为 urlfile ,diskfile时,filePath 为必填项#filePath:
#urlFilePrefix: 10
#该链接的Content-Disposition超过京东云限制,如不获取该header值继续传,则配置为true;否则将该url打印在错误日志里,由用户对该url的header值自行修改ContentDispositionTooLongContinue: false#sourceType为urlfile,表示从用户提供的url列表中迁移。文件列表内容为[ object外链,objectkey ] 使用逗号分隔
###########################源bucket配置#################################################jdcloud#src.access.id : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX#src.secret.key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX#src.endpoint : https://s3.cn-north-1.jcloudcs.com
#aliyun#src.access.id : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX#src.secret.key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX#src.endpoint : https://oss-cn-beijing.aliyuncs.com
#tencent#src.access.id : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX#src.secret.key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX#src.endpoint : https://cos.ap-beijing.myqcloud.com
#baidu#src.access.id : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX#src.secret.key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX#src.endpoint : https://s3.bj.bcebos.com
#aws#src.access.id : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX#src.secret.key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX#src.endpoint : https://s3.us-east-2.amazonaws.com
#huawei#src.access.id : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX#src.secret.key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX#src.endpoint : https://obs.cn-north-1.myhuaweicloud.com
#qiniu#src.access.id : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX#src.secret.key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX#src.endpoint : https://cn-south-1-s3.qiniu.com#src.domainOfBucket : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#-bucket#src.bucket : beijing-to-shanghai#src.prefix :
##################目标bucket配置 destination ############################################################des.access.id : XXXXXXXXXXXXXXXXXXXXXXXXXXXXXdes.secret.key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXdes.endpoint : http://s3.cn-east-2.jdcloud-oss.comdes.bucket : shanghai-from-beijingdes.prefix :
复制代码

3、启动 S3Transfer

后台启动:


1[root@SpringBoot-forbuild java_transfer]# nohup java -jar transfer-tools-java-1.0.0.jar --Dspring.config.location=application.yml &
复制代码


前台启动:


1[root@SpringBoot-forbuild java_transfer]# java -jar transfer-tools-java-1.0.0.jar --Dspring.config.locatio
复制代码

4、启动效果

通过传输过程提示,我们可以看到文件传输状态和结果:


5、传输结果

任务传输完成后如下图:



我们点击目标对象存储空间 shanghai-from-beijing,能看到在源对象存储空间 beijing-to-shanghai 生成的两个 10GB 文件已经传输过来了。



2019-10-21 18:33971

评论

发布
暂无评论
发现更多内容

阿里云张新涛:异构计算为数字经济提供澎湃动力

阿里云弹性计算

XR 元宇宙 视觉计算

类似 Teambition 的9大最佳项目管理软件

PingCode

[Day43]-[回溯]-解数独

方勇(gopher)

LeetCode 数据结构算法

【LeetCode】爬楼梯的最少成本Java题解

Albert

算法 LeetCode 5月月更

【达人专栏】还不会用Apache Dolphinscheduler吗,大佬用时一个月写出的最全入门教学【二】

Apache DolphinScheduler

Apache 大数据 开源 workflow dophinscheduler

直播预告丨OpenHarmony标准系统多媒体子系统之视频解读

Anna

OpenHarmony

M-DAO开辟区块链全新战场,或成DAO赛道龙头

小哈区块

六、云原生可观测性

穿过生命散发芬芳

可观测性 5月月更

SPDK QOS机制解析

天翼云开发者社区

天翼云高可用虚拟IP(HAVIP)实践

天翼云开发者社区

netty系列之:在netty中使用native传输协议

程序那些事

Java Netty 程序那些事 5月月更

首发!高性能数据访问中间件 OBProxy(一):功能模块及特性详解

OceanBase 数据库

oceanbase

设计模式关系图(全网首发)之结构和创建模式

设计模式

区块链Web3招聘:海量开发产品岗位等你来 Pick

TinTinLand

区块链

中国电子云数据库 Mesh 项目 DBPack 的实践

峨嵋闲散人

分布式事务 分库分表 读写分离

[Day44]-[回溯]-括号生成

方勇(gopher)

LeetCode 回溯算法 数据结构算法

Wallys/ AR9531/WiFi Card/ MMCX

wallys-wifi6

AR9531 30dBm high power

mark:vscode 无法远程访问连接

webrtc developer

vscode

Hoo研究院|币海寻珠—5月区块链行业投资机构动向(上)

区块链前沿News

区块链 投资 虎符 Hoo

对话上市公司数字化转型:激活数据要素 倍增数字价值

WorkPlus

银行需明确低代码与无代码开发平台差异,以在技术上降低试错成本

易观分析

银行

小红书信息流推荐多样性解决方案

小红书技术REDtech

推荐 SSD 多样性 KDD

AIRIOT物联网低代码平台如何配置欧姆龙omron驱动?

AIRIOT

低代码 物联网 驱动配置

大画 Spark :: 网络(7)-Spark网络中的“四次握手”Executor注册到Driver过程中的TransportClient与细节过程

dclar

大数据 hadoop spark 架构设计 源代码

时序数据库在桥梁监测领域中的应用

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

DPU芯片企业中科驭数加入龙蜥社区,构建异构算力生态

OpenAnolis小助手

芯片 生态 龙蜥社区 CLA 中科驭数

JVM进阶(十六)——JAVA 双亲委派模型

No Silver Bullet

类加载 双亲委派模型 5月月更

M-DAO开辟区块链全新战场,或成DAO赛道龙头

西柚子

“晕乎乎的概念”:阿里云函数计算的“应用”又是个啥

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

LinkedList 源码分析-新增

zarmnosaj

5月月更

Liga 讨论: ToB产品可不可以免费?

LigaAI

SaaS

非结构化数据迁移-Java 版S3Transfer_架构_韩超超_InfoQ精选文章