164
阿裏雲
Linux平台使用說明__官方遷移工具_常用工具_對象存儲 OSS-阿裏雲
簡介
【ossimport2】同步工具可以將您本地或第三方雲存儲服務上的文件同步到OSS上。
主要特性:
- 支持將本地、OSS、七牛、百度對象存儲、金山對象存儲、又拍雲、亞馬遜s3、騰訊雲cos、HTTP鏈接形式的文件同步到指定OSS Bucket上
- 支持存量數據同步(允許指定隻同步某個時間點之後的文件)
- 支持增量數據自動同步
- 支持斷點續傳
- 支持上傳/下載流量控製
- 支持並行list和並行數據下載/上傳
如果您有較大量級的數據(超過20T),且期望以較短時間遷移到OSS上,除了【ossimport2】同步工具之外,我們的專業技術人員還可以為您提供多機器並行同步方案,請加旺旺群:904193608聯係我們。
運行環境
您需要在Java JDK1.7以上的環境中運行【ossimport2】同步工具,建議使用Oracle版本JDK:
注意:程序運行前請檢查進程允許打開的文件數的配置(ulimit -n 查看),如果小於10240,需要作相應修改。
部署工具
首先,在您本地服務器上創建同步的工作目錄,並且將【ossimport2】工具包下載在該目錄中。
示例:創建/root/ms目錄為工作目錄,且工具包下載在該工作目錄下。
export work_dir=/root/ms
wget https://import-service-package.oss.aliyuncs.com/ossimport2/ossimport-v2.1-linux.zip
unzip ./ossimport4linux.zip -d "$work_dir"
配置工具
編輯工作目錄($work_dir)下的配置文件conf/sys.properties:
vim $work_dir/conf/sys.properties
workingDir=/root/ms
slaveUserName=
slavePassword=
privateKeyFile=
slaveTaskThreadNum=60
slaveMaxThroughput(KB/s)=100000000
slaveAbortWhenUncatchedException=false
dispatcherThreadNum=5
您可以直接使用配置默認值。如有特殊要求,可以編輯配置字段值:
字段 | 說明 |
---|---|
workingDir | 表示當前的工作目錄,即工具包解壓後所在的目錄 |
slaveTaskThreadNum | 表示同時執行同步的工作線程數 |
slaveMaxThroughput(KB/s) | 表示遷移速度總的流量上限限製 |
slaveAbortWhenUncatchedException | 表示遇到未知錯誤時是否跳過還是abort,默認不abort |
dispatcherThreadNum | 表示分發任務的並行線程數,默認值一般夠用 |
服務運行
ossimport2支持如下命令:
- 任務提交:
java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties submit $jobConfigPath
- 任務取消:
java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties clean $jobName
- 狀態查看:
java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties stat detail
- 任務重試:
java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties retry $jobName
服務的運行和使用步驟如下:
1.啟動服務,執行如下命令:
cd $work_dir
nohup java -Dskip_exist_file=false -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties start > $work_dir/logs/ossimport2.log 2>&1 &
請注意:相關的log文件會自動生成在您執行啟動服務的當前目錄的logs目錄中,建議您在工作目錄($work_dir)下執行啟動命令。啟動任務時如果skip_exist_file=true,則在上傳中如果碰到oss上存在且長度和源端一致的文件,將會跳過此文件
2.編輯示例任務描述文件local_job.cfg
字段說明:
字段名 | 說明 |
---|---|
jobName | 自定義任務名字,任務的唯一標識, 支持提交多個名字不同的任務 |
jobType | 可以配置為import(執行數據同步操作)或者audit(僅進行同步源數據與同步目標數據全局一致性校驗) |
isIncremental=false | 是否打開自動增量模式,如果設為true,會每間隔incrementalModeInterval(單位秒)重新掃描一次增量數據,並將增量數據同步到oss上 |
incrementalModeInterval=86400 | 增量模式下的同步間隔 |
importSince | 指定時間,用於同步大於該時間的數據,這個時間為unix時間戳(秒數);默認為0 |
srcType | 同步源類型,目前支持oss,qiniu,baidu,ks3,youpai,local |
srcAccessKey | 如果srcType設置為oss、qiniu、baidu、ks3、youpai,則需要填寫數據源的access key |
srcSecretKey | 如果srcType設置為oss、qiniu、baidu、ks3、youpai,則需要填寫數據源的secret key |
srcDomain | 源endpoint |
srcBucket | 源bucket名字 |
srcPrefix | 源前綴,默認為空;如果srcType=local,則填寫本地待同步目錄,請注意您需要填寫完整的目錄路徑(以’/‘結尾)。如果srcType設置為oss、qiniu、baidu、ks3、youpai,則需要填寫待同步的Object前綴,同步所有文件前綴可以設置為空。 |
destAccessKey | 填寫同步目標端OSS 的access key |
destSecretKey | 填寫同步目標端 OSS的 secret key |
destDomain | 填寫同步目標端OSS的endpoint |
destBucket | 填寫同步目標端 OSS的bucket |
destPrefix | 填寫同步目標端文件前綴,默認為空 |
taskObjectCountLimit | 每個子任務最大的文件個數限製,這個會影響到任務執行的並行度,一般配置為總的文件數/你配置的下載線程數,如果不知道總文件數,可以配置為默認值 |
taskObjectSizeLimit | 每個子任務下載的數據量大小限製(bytes) |
scanThreadCount | 並行掃描文件的線程數,與掃描文件的效率有關 |
maxMultiThreadScanDepth | 最大允許並行掃描目錄的深度,采用默認值即可 |
注:1) 如果配置了自動增量模式,則任務會定期被執行以掃描最新的數據,該任務永遠不會結束。2) 對於srcType為youpai的情況,由於又拍雲本身API限製,list文件的操作無法實現checkpoint,在list完成之前殺掉進程會導致重新list所有文件的操作。
3.提交任務
java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties submit $work_dir/local_job.cfg
注意事項:
- 如果有同名任務正在執行,則提交任務會失敗。
- 如果您需要暫停同步任務,您可以停止ossimport2進程,需要同步時重啟ossimport2進程即可,重啟後會按照上次的進度繼續上傳。
- 如果您需要重新全量同步文件,您可以先停止ossimport2進程,再調用如下命令清除當前任務。
示例:假設當前任務名為local_test(這個任務名配置在文件local_job.cfg中),命令如下
ps axu | grep "ossimport2.jar.* start" | grep -v grep | awk '{print "kill -9 "$2}' | bash
java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties clean local_test
4.查看任務執行狀態:
[root@iZ23gztmc8fZ local]# java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties stat detail
--------------job stats begin---------------
----------------job stat begin------------------
JobName:local_test
JobState:Running
PendingTasks:0
RunningTasks:1
SucceedTasks:0
FailedTasks:0
ScanFinished:true
RunningTasks Progress:
FD813E8B93F55E67A843DBCFA3FAF5B6_1449307162636:26378979/26378979 1/1
----------------job stat end------------------
--------------job stats end---------------
這裏會顯示當前任務的總體的執行進度,並且會顯示當前正在執行的task進度。例如上文中:“26378979/26378979”表示:總共需要上傳的數據量(26378979字節)/已經上傳完成的數據量(26378979字節)。“1/1” 表示:總共需要上傳的文件個數(1個)/已經上傳完成的文件個數(1個)。
遷移工具會將用戶提交的一個job任務分解為多個task並行執行,當所有的task都執行完成之後,job任務才算執行完成。任務執行完成之後,JobState會顯示為”Succeed”或者”Failed”,表示任務執行成功或者失敗。如果任務執行失敗,可以通過如下命令查看各個task失敗的原因:
以下命令中$jobName需要替換成對應得job名字(jobName配置在文件local_job.cfg中)。
cat $work_dir/master/jobs/$jobName/failed_tasks/*/audit.log
對於任務失敗的情況,我們在工具中已經做了較為充分的重試,對於可能由於數據源或者目標源暫時不可用引起的失敗情況,可以通過如下命令嚐試重新執行失敗的TASK:
java -jar $work_dir/bin/ossimport2.jar -c $work_dir/conf/sys.properties retry $jobName
5.常見任務失敗原因
- 任務配置出錯,比如access key/id出錯,權限不足等,這種情況下通常現象是所有task都失敗,具體確認需要查看$work_dir/logs/ossimport2.log文件。
- 源文件名的編碼方式與係統默認的文件名編碼方式不符,例如在windows下文件名默認為gbk編碼,linux下默認為utf-8編碼,對於數據源是nfs的情況下較容易出現該問題。
- 上傳過程中源目錄的文件發生了修改,這種情況在audit.log裏會提示SIZE_NOT_MATCH相關字樣的錯誤,這種情況下老的文件已經上傳成功,新的修改沒有上傳到oss。
- 源文件在上傳過程中被刪除,導致下載文件時失敗。
- 源文件名不符合oss命名規範(如不能以/開頭,或不能為空),導致文件上傳到oss失敗。
- 數據源出現問題導致下載數據源文件失敗。
- 沒有先殺掉進程再執行clean有可能會導致程序執行異常。
- 程序異常退出,任務狀態為Abort,這種情況請聯係我們(請加旺旺群:904193608)。
6.建議
對於從雲端(非本地)遷移到oss,且帶寬資源不是很充足的用戶,建議夠買按量付費的ecs進行遷移(購買地址:https://ecs-buy.aliyun.com/#/postpay)
ecs配置:
- 1.付費方式選擇按量付費
- 2.地域選擇oss對應的區域
- 3.帶寬峰值選100M(流入流量和內網流量是不記費的)
- 4.係統linux/windows隨意
- 5.其他全部選擇最低配置
收費根據區域不同會略有不同,杭州配置費用,0.277元/小時,公網流量費0.8元/GB(公網帶寬:按使用流量,僅單向收取【流出】流量費用,【流入流量和內網流量不收費】,按實際使用金額每小時扣費。例如您在1小時內公網流出流量為2.5GB,收取費用為2.5GB*0.8元/小時=2.0元)
在配置遷移服務時,將targetDomain設為帶internal的內網域名;如果源端也是oss,將srcDomain也設為帶internal的內網域名,可以省掉從oss源端下載的流量費,僅收取oss訪問次數的費用;
遷移結束後釋放掉機器(注意:不是關機,是釋放)
最後更新:2016-11-23 20:01:38
上一篇:
ossprobe__常用工具_對象存儲 OSS-阿裏雲
下一篇:
Windows平台使用說明__官方遷移工具_常用工具_對象存儲 OSS-阿裏雲
授權訪問鑒權規則__如何使用RAM授權_API 參考_雲數據庫 RDS 版-阿裏雲
查詢API分組詳情__API分組相關接口_API_API 網關-阿裏雲
PolicyVersion__數據類型_RAM API文檔_訪問控製-阿裏雲
補丁管理-漏洞修複失敗__產品常見問題_服務器安全(安騎士)-阿裏雲
添加業務指標監控__Dashboard_用戶指南_雲監控-阿裏雲
Special__數據類型_API_API 網關-阿裏雲
UpdateRowInBatchWriteRowRequest__DataType_API 參考_表格存儲-阿裏雲
Media C SDK開發包__曆史版本SDK下載_SDK 參考_對象存儲 OSS-阿裏雲
搭數服務協議__相關協議_平台介紹_數加平台介紹-阿裏雲
發送普通消息(三種方式)__Java SDK_TCP 接入(專業)_消息隊列 MQ-阿裏雲
相關內容
常見錯誤說明__附錄_大數據計算服務-阿裏雲
發送短信接口__API使用手冊_短信服務-阿裏雲
接口文檔__Android_安全組件教程_移動安全-阿裏雲
運營商錯誤碼(聯通)__常見問題_短信服務-阿裏雲
設置短信模板__使用手冊_短信服務-阿裏雲
OSS 權限問題及排查__常見錯誤及排除_最佳實踐_對象存儲 OSS-阿裏雲
消息通知__操作指南_批量計算-阿裏雲
設備端快速接入(MQTT)__快速開始_阿裏雲物聯網套件-阿裏雲
查詢API調用流量數據__API管理相關接口_API_API 網關-阿裏雲
使用STS訪問__JavaScript-SDK_SDK 參考_對象存儲 OSS-阿裏雲