最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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

评论

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

创建一个科学决策必备的A/B实验,都需要哪些准备?——火山引擎 DataTester 使用指南

字节跳动数据平台

大数据 A/B测试

HTML零基础入门教程(一)

异星球的小怪同志

前端 HTML5, CSS3 DW 零基础 11月月更

一款超好用的Json编辑工具

Jackpop

EventBridge助力阿里云视觉智能开放平台AI智能存储实践

Apache RocketMQ

AI 消息队列 EventBridge

洞见科技中标安康市数据要素流通平台(隐私计算平台)建设项目

洞见科技

Vue插件(plugin)

Augus

vue.js 11月月更

初探Apollo远程服务配置中心

海风极客

阿波罗 11月月更 apllo 远程配置中心

Zebec Chain有望成为公链赛道新兴生力军,地平线计划持续进击

小哈区块

几分钟实现对恶意IP地址进行拦截,腾讯云Web防火墙实在太香了!

wljslmz

腾讯云 Web应用防火墙 黑名单 11月月更

数据报告 | 2022年双十一变化趋势分析报告

前嗅大数据

双十一 数据报告 电商报告

现代API的类型划分

阿泽🧸

API 11月月更

CSS的学习笔记(五)

lxmoe

CSS 前端 学习笔记 11月月更

应用发布新版本如何保障流量无损

阿里巴巴云原生

阿里云 微服务 云原生

专访吴静涛丨从未有人把金融信创挑战说的这么透彻!

云科通明湖

深入Redis数据结构和底层原理

海风极客

redis 缓存 11月月更

实践竞争力第一!洞见科技获评艾瑞咨询隐私计算金融市场「综合领导者」

洞见科技

洞见科技中标浙江农商联合银行「隐私计算平台」项目

洞见科技

数据分析的步骤

穿过生命散发芬芳

数据分析 11月月更

Vivado安装和使用

二哈侠

Verilog FPGA系统 vivado 11月月更

一篇文章彻底理解数据库的各种超时参数

明哥的IT随笔

数据库 JDBC

网址访问速度免费加速教程:又拍云cdn

程序员余白

网页加速 CDN加速 11月月更

【活动报名】11月19日 | AI GC 的技术与应用构建

亚马逊云科技 (Amazon Web Services)

人工智能 机器学习

Git 分支管理策略汇总

AlwaysBeta

git GitHub gitlab 分支管理

算法题学习---链表中环的入口结点

桑榆

算法题 11月月更

Go-MySQL-Driver,让Go语言拥抱MySQL

海风极客

Go MySQL 11月月更

泛型由入门到精通

好程序员IT教育

阿里云研究员马涛:龙蜥社区做对了两件事

云布道师

开源 云栖大会 龙蜥社区

数据中心的能源之翼:华为数据中心能源与伙伴共同飞翔

脑极体

阿里CTO程立:首个全面深度用云的天猫双11,更敏捷、更经济、更绿色

阿里技术

云计算 severless

1.6k Star!可以优雅的使用Git了。。。

Jackpop

【愚公系列】2022年11月 微信小程序-app.json配置属性之networkTimeout

愚公搬代码

11月月更

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