您好,登錄后才能下訂單哦!
本篇內容主要講解“怎么用Java實現非結構化數據遷移”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么用Java實現非結構化數據遷移”吧!
Java版S3Transfer工具目前為公測階段,此遷移工具支持從AWS S3、阿里云、騰訊云、百度云等存儲遷移文件到京東云對象存儲;同時也支持本地文件列表遷移。大概邏輯為先獲取文件的地址或外鏈,然后根據外鏈讀取數據,然后進行遷移,這個工具是listObject,transfer,md5check 三個工具的集成:
listObject工具的目的是列出用戶配置bucket下的所有文件的列表。如配置prefix,則列出該prefix下的所有文件列表;
transfer工具的目的是將源文件遷移到oss對象存儲中;
md5check工具用于md5值校驗。
支持豐富的數據源:
本地數據:將本地存儲的數據遷移到 OSS;
其他對象存儲:目前支持 AWS S3,阿里云 OSS,騰訊云COS,百度BOS,華為 OBS存儲遷移至京東云OSS,后續會不斷擴展;
URL 列表:根據指定的 URL 下載列表進行下載遷移到 京東云OSS;
Bucket 相互復制:京東云OSS的 Bucket 數據相互復制, 支持跨賬號跨地域及同區域的數據復制。
支持斷點續傳;
支持流量控制;
支持遷移特定前綴的文件;
支持并行數據下載、上傳;
遷移校驗:對象遷移后的校驗。
為保證實操的可操作性和直觀性,本文檔采用大文件傳輸(2個10G大小的文件),類型為s3file,從京東云賬號①通過外網傳輸至京東云賬號②對象存儲空間,用來模擬跨公有云之間的對象存儲遷移,任務控制端為京東云的一臺Centos 7.4云主機。
大文件傳輸會將單個文件分成若干個切片進行傳輸,如圖:
2. 遷移過程中,遷移日志將默認打印到 ./log 目錄下。遷移的所有文件將打印到audit-0.log中,遷移成功的文件將打印到audit.success日志中(如果將目標端傳輸成功的文件刪除后,需要刪除audit.success日志文件方可進行重新傳輸),如果需要篩選遷移失敗的文件,請使用命令:
1 grep "1$" audit-0.log*
地域 | 操作系統 | 配置 | 帶寬 | JDK版本 |
---|---|---|---|---|
華北-北京 | CentOS 7.4 64位 | 8核16G | 20Mbps | 1.8.0_191 |
需要準備兩個京東云賬號,一個在華北-北京
創建對象存儲空間,一個在華東-上海
創建對象存儲空間,以此來模擬跨公有云的對象存儲遷移。
賬號①-華北-北京:beijing-to-shanghai
賬號②-華東-上海:shanghai-from-beijing
安裝依賴包
1 yum install automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel -y
2.安裝以及編譯
1 git clone https://github.com/s3fs-fuse/s3fs-fuse.git 2 cd s3fs-fuse 3 ./autogen.sh 4 ./configure 5 make && make install
3.創建密碼文件
1 echo Access_Key_ID:Access_Key_Secret > ~/.passwd-s3fs 2 chmod 600 ~/.passwd-s3fs
Access_Key_ID:Access_Key_Secret獲取方式:https://uc.jdcloud.com/account/accessKey
4.掛載對象存儲到本地目錄/hcc(目錄名稱根據自己的名字簡稱定義)
1 mkdir /hcc 2 s3fs 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.查看掛載結果
1 df -h
6.通過dd命令在所掛載的對象存儲里生成文件
這個命令會在所掛載的源對象存儲Bucket里生成2個大小為10GB的小文件。
1 cd /hcc 2 for ((i=1;i<=2;i++));do dd if=/dev/zero of=block_$i.file bs=1M count=10240;done
文件生成結果:
下載解壓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
配置環境變量
1 vim /etc/profile
在配置文件尾部加入
1 ######## JDK ####### 2 JAVA_HOME=/usr/local/jdk1.8.0_191 3 JAVA_BIN=/usr/local/jdk1.8.0_191/bin 4 PATH=$PATH:$JAVA_BIN 5 CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 6 export JAVA_HOME JAVA_BIN PATH CLASSPATH
重新加載變量配置文件并查看jdk版本
1 [root@pocenv-hcc-test-hb jdk8]# source /etc/profile 2 [root@pocenv-hcc-test-hb jdk8]# java -version 3 java version "1.8.0_191" 4 Java(TM) SE Runtime Environment (build 1.8.0_191-b12) 5 Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)
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
重點說明:
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;
阿里云:https://help.aliyun.com/document_detail/31837.html?spm=a2c4g.11186623.6.572.6a537f5ewpHZJZ
騰訊云:https://cloud.tencent.com/document/product/436/6224
百度云:https://cloud.baidu.com/doc/BOS/S3.html#.E6.9C.8D.E5.8A.A1.E5.9F.9F.E5.90.8D
華為云:https://support.huaweicloud.com/api-obs/zh-cn_topic_0136050628.html
src.bucket:源對象存儲的Bucket;
des.access.id/des.secret.key:目標對象存儲的AK/SK;
des.endpoint:目標對象存儲的Endpoint;
des.bucket:目標對象存儲的Bucket;
注:如下標紅內容是我們需要關注的(“:“ 后要加個空格才能生效):
##########################################################################################
#jobType 為 listObject,transfer
jobType
: transfer
#sourceType 類型共有:urlfile,diskfile,s3file,aliyunfile,disklistfile
sourceType
: 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 : XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
des.secret.key: XXXXXXXXXXXXXXXXXXXXXXXXXXXXX
des.endpoint : http://s3.cn-east-2.jdcloud-oss.com
des.bucket : shanghai-from-beijing
des.prefix :
后臺啟動:
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.location=application.yml
通過傳輸過程提示,我們可以看到文件傳輸狀態和結果:
任務傳輸完成后如下圖:
我們點擊目標對象存儲空間shanghai-from-beijing
,能看到在源對象存儲空間beijing-to-shanghai
生成的兩個10GB文件已經傳輸過來了。
到此,相信大家對“怎么用Java實現非結構化數據遷移”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。