写点什么

非结构化数据迁移 -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:331513

评论

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

AI电视里的达摩

脑极体

AI

匠心打造超级 ping,多运营商多协议全方位测试,sir.net 正式上线!

timerring

测试 网站 IP

成事:程序员最硬的通货,产品经理最好的PRD

AI时代的一滴水

程序员 成长

开放平台架构的本质

柯杰

YashanDB 知识库|数据库明明在线,yasboot 却显示“off”?其实是启动方式不对

数据库砖家

数据库·

YashanDB 知识库|主备延迟怎么查?一文教你搞懂根源在哪

数据库砖家

数据库

Semantic Kernel也能充当MCP Client

为自己带盐

semantic kernel MCP

YashanDB |自研 YFS,为共享集群打造专属“高性能存储引擎”

数据库砖家

数据库

Manus 技术路线的硬伤

柯杰

百度搜索AI开放计划:让应用连接精准流量的秘诀

Yan-英杰

MCP 百度搜索开放平台 百度AI开放计划 mcpserver create2025

[翻译]Java内存分配器不做垃圾清理的好处-Java11

极客罗杰

从程序员到架构师看似很简单,实则一点都不难!

程序员高级码农

Java 程序员 架构师

运维实战来了|手把手教你构建 YashanDB 的 Prometheus Exporter

数据库砖家

数据库·

YashanDB 知识库|YMP 迁移报告无法下载?可能是你的 Java 版本“太新了”

数据库砖家

Arthas classloader (查看 classloader 的继承树,urls,类加载信息)

刘大猫

ClassLoader Arthas 大模型 类加载信息 继承树

如何鉴别全彩LED显示屏的品质等级

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家 户内led显示屏

全球线上直播会议丨快速赋能企业,仿真技术如何实现降本增效?

Altair RapidMiner

仿真 CAE hyperworks Inspire Simlab

为千行万业开算力通途,为什么是百舸?

脑极体

AI

YashanDB 知识库|如何回收表空间?高水位线是关键!

数据库砖家

数据库·

YashanDB 知识库|跨库访问不求人!手把手教你用 DBLink 玩转多库联动

数据库砖家

数据库、

百度搜索AI开放计划:助力开发者通过MCP Server连接用户和应用

猫头虎

AI MCP 百度搜索开放平台 百度AI开放计划 mcpserver

CFD专栏丨FlightStream-基于面元法的快速CFD分析工具

Altair RapidMiner

CAE Hypermesh CFD 流体仿真 FlightStream

如何在 Windows 11 上下载并安装免费版 Microsoft 365?office 365免费产品密钥激活码获取

阿拉灯神丁

Office 365 Microsoft 365 办公软件 智能办公 office破解版

如何成功防护T级超大流量的DDoS攻击

网络安全服务

CDN 服务器 DDoS 高防服务器 高防IP

YashanDB 知识库|数据误删别慌!一文教你搞定“表闪回”

数据库砖家

数据库·

YashanDB 知识库|YMP 报 YAS-04204 创建索引失败?可能是你配置超了并发上限

数据库砖家

数据库·

YashanDB 知识库|共享集群换 IP 怎么操作?这篇教你全流程无坑换网段!

数据库砖家

数据库·

Rime 最新 TTS 模型 Arcana:能听到呼吸声和轻微口腔音;Bubba AI:专为卡车司机打造的语音交互智能体丨日报

声网

百度文小言全面接入文心4.5Turbo、X1Turbo,进一步增强多模态能力

极客天地

百度慧播星打造高说服力数字人,具备四大能力

极客天地

Arthas memory(查看 JVM 内存信息)

刘大猫

JVM 监控 Arthas memory 查看JVM内存信息

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