写点什么

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

评论

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

TiDB 迁移升级思考

TiDB 社区干货传送门

版本升级 管理与运维 应用适配 7.x 实践

深入剖析 Kubernetes 原生 Sidecar 容器

Se7en

阿里巴巴中国站关键字搜索API返回值研究:电商数据驱动的用户体验优化

技术冰糖葫芦

api 货币化 API 安全 API 文档

程序员转行8大方向,都考虑一下

秃头小帅oi

数据同步新突破!一招解决文化公司系统对接难题!

聚道云软件连接器

案例分享

深入揭秘 TiDB LTS v8.1.0:为何这次更新是数据管理者的福音?

TiDB 社区干货传送门

8.x 实践

快速上手TiDB,体验全新的一栈式实时HTAP数据库

TiDB 社区干货传送门

安装 & 部署

星辰资讯:TiDB v8.1.0 发版!稳!

TiDB 社区干货传送门

新版本/特性解读 8.x 实践

如何使用GPT-4o?GPT-4o 有什么新功能?如何使用 GPT-4o API?如何升级GPT4Plus?

蓉蓉

openai GPT-4 gpt4o

喜讯!MIAOYUN入围新疆信息产业公司多项技术服务框架采购协议!

MIAOYUN

运维 云原生 数字化 智慧电力 AI人工智能

反向代购系统搭建|逆向海淘平台搭建|对接淘宝京东1688微店拼多多等国内平台货源

tbapi

淘宝代购系统 逆向淘宝代购系统 海淘系统

TiDB多数派节点故障恢复指南

TiDB 社区干货传送门

实践案例 集群管理 管理与运维 6.x 实践

小梅西、狮子哥和Tidb升级赛跑记

TiDB 社区干货传送门

性能测评 新版本/特性解读 6.x 实践 7.x 实践 8.x 实践

一文对比 Amazon Aurora 与 TiDB

TiDB 社区干货传送门

数据库架构选型 数据库架构设计

【TiDB 社区第三届专栏征文大赛】TiDB 在单机上模拟部署生产环境集群

TiDB 社区干货传送门

版本测评 安装 & 部署 8.x 实践

TiDB Vector + Dify 快速构建 AI Agent

TiDB 社区干货传送门

实践案例 应用适配 数据库前沿趋势

一键解锁!贸易行业实现银行与财务系统秒级对接,效率飙升!

聚道云软件连接器

案例分享

走进京东“卓越研效架构师”首期研习营圆满收官

京东科技开发者

和鲸“101数智领航计划”——在武大解码 GeoAI,地理空间智能(GeoAI)学术研讨会及编程工作坊圆满落幕

ModelWhale

人工智能 遥感影像 气象预测 地球科学 地理空间智能

Aloudata 重磅发布《NoETL 开启自动化数据管理新时代》白皮书

Aloudata

数据管理 noetl

墨天轮《2023年中国数据库行业年度分析报告》正式发布!

墨天轮

人工智能 数据库 时序数据库 图数据库 向量数据库

大模型应用之基于Langchain的测试用例生成

京东科技开发者

TiUP 源码初探

TiDB 社区干货传送门

集群管理 管理与运维 安装 & 部署 TiDB 源码解读

PingCAP 成为唯一获评 2024 Gartner® Peer Insights™ 云数据库管理系统「客户之选」的中国厂商

先锋IT

业技融合:“业、产、研”一体的需求管理指南

嘉为蓝鲸

DevOps 研发管理 产研团队

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