OssImport係列之三——分布式部署
下載
單機部署目前隻支持Linux,Windows暫不支持。
分布式版本下載地址 ossimprt-2.2.0.tar.gz ,下載到本地後,使用命令 tar -zxvf ossimprt-2.2.0.tar.gz -C $HOME/ossimport
解壓,解壓後的文件結構如下:
ossimport
├── bin
│ ├── console.jar # Console模塊jar包
│ ├── master.jar # Master模塊jar包
│ ├── tracker.jar # Tracker模塊jar包
│ └── worker.jar # Worker模塊jar包
├── conf
│ ├── job.cfg # Job配置文件模板
│ ├── sys.properties # 係統運行參數配置文件
│ └── workers # Worker列表
├── console.sh # 命令行工具,目前支持隻Linux
├── logs # 日誌目錄
└── README.md # 說明文檔,使用前請仔細閱讀
注意:
- OSS_IMPORT_HOME:OssImport的根目錄,默認為解壓命令中的目錄
$HOME/ossimport
,也可以通過命令export OSS_IMPORT_HOME=<dir>
或修改係統配置文件$HOME/.bashrc
設置,推薦使用默認目錄; - OSS_IMPORT_WORK_DIR:OssImport的工作目錄,通過
conf/sys.properties
的配置項workingDir
指定,推薦為$HOME/ossimport/workdir
; -
OSS_IMPORT_HOME 或 OSS_IMPORT_WORK_DIR 請使用絕對路徑配置,如
/home/<user>/ossimport
或/home/<user>/ossimport/workdir
。
配置
分布式部署有三個個配置文件conf/sys.properties
、conf/local_job.cfg
、conf/workers
,配置項的含義請看 介紹
章節。
-
conf/job.cfg
:分布式模式下任務的配置文件模板,數據遷移前請按照實際參數修改; -
conf/sys.properties
:係統運行參數配置文件,如工作目錄、Worker運行參數等請在該文件中配置; -
conf/workers
:worker列表。
運行
執行命令
分布式部署時,執行任務的一般步驟是 修改任務配置文件、*清除同名任務*、*提交任務*、*啟動遷移服務*、*重試失敗子任務*、*停止遷移任務*。詳細說明如下:
- 清除同名任務。如果運行過同名任務,需要從新執行任務,請先清除同名任務。如果沒有運行過,或需要重試失敗任務,不需要執行清除命令。Linux終端中執行
bash console.sh clean job_name
。 - 提交數據遷移任務。OssImport不能重複提交同名任務,如果有請請使用
clean
命令清除。提交任務需要指定任務的配置文件,任務的配置文件模板在conf/job.cfg
,建議在模板的基礎上修改。Linux終端執行bash console.sh submit [job_cfg_file]
,提交配置文件為 job_cfg_file 的任務,job_cfg_file
為可選參數,不指定是默認為$OSS_IMPORT_HOME/conf/job.cfg
,$OSS_IMPORT_HOME
默認為console.sh
所在的目錄。 - 啟動服務。Linux終端執行
bash console.sh start
。 - 查看任務狀態。Linux終端執行
bash console.sh stat
。 - 失敗Task重試。由於網絡或其它原因,Task可能運行失敗。失敗重試隻重試失敗的Task,成功的Task不會重試。Linux下在終端執行
bash console.sh retry [job_name]
,*job_name* 為可選參數,指定時重試任務job_name
的失敗子任務,不指定job_name
時重試所有任務的失敗子任務。 - 停止服務。Linux終端執行
bash console.sh stop
。
提示:
-
bash console.sh
在參數錯誤時,會自動提示命令格式; - 配置文件和提交任務中的目錄,推薦使用絕對目錄。
常見任務失敗原因
- 上傳過程中源目錄的文件發生了修改,
log/audit.log
裏會提示SIZE_NOT_MATCH
相關字樣的錯誤,這種情況下老的文件已經上傳成功,新的修改沒有上傳到OSS; - 源文件在上傳過程中被刪除,導致下載的時候失敗;
- 源文件名不符合OSS命名規範(不能以/開頭,不能為空),導致上傳到OSS失敗;
- 下載數據源文件失敗;
- 程序異常退出,任務狀態為*Abort*,這種情況請聯係我們。
任務狀態及日誌
任務提交後,Master分解成Task,有Worker執行Task,Tracker收集Task狀態。任務運行完成後workdir目錄內容如下:
workdir
├── bin
│ ├── console.jar # Console模塊jar包
│ ├── master.jar # Master模塊jar包
│ ├── tracker.jar # Tracker模塊jar包
│ └── worker.jar # Worker模塊jar包
├── conf
│ ├── job.cfg # Job配置文件模板
│ ├── sys.properties # 係統運行參數配置文件
│ └── workers # Worker列表
├── logs
│ ├── import.log # 歸檔日誌
│ ├── master.log # Master日誌
│ ├── tracker.log # Tracker日誌
│ └── worker.log # Worker日誌
├── master
│ ├── jobqueue # 存放尚未分解完成的任務
│ └── jobs # 存放任務運行狀態
│ └── xxtooss # 任務名稱
│ ├── checkpoints # Master分解Job到Task的checkpoint點記錄
│ │ └── 0
│ │ └── ED09636A6EA24A292460866AFDD7A89A.cpt
│ ├── dispatched # 已經分配給Worker尚未運行完成的Task
│ │ └── 192.168.1.6
│ ├── failed_tasks # 運行失敗的Task
│ │ └── A41506C07BF1DF2A3EDB4CE31756B93F_1499348973217@192.168.1.6
│ │ ├── audit.log # Task運行日誌,通過該日誌可以查看錯誤原因
│ │ ├── DONE # Task運行成功標誌,失敗為空
│ │ ├── error.list # Task錯誤列表,可以查看錯誤文件列表
│ │ ├── STATUS # 任務狀態標誌文件,內容為Failed或Completed,表示子任務失敗或成功
│ │ └── TASK # Task描述信息
│ ├── pending_tasks # 尚未分配的Task
│ └── succeed_tasks # 成功運行的Task
│ └── A41506C07BF1DF2A3EDB4CE31756B93F_1499668462358@192.168.1.6
│ ├── audit.log # Task運行日誌,通過該日誌可以查看錯誤原因
│ ├── DONE # Task運行成功標誌
│ ├── error.list # Task錯誤列表,成功為空
│ ├── STATUS # 任務狀態標誌文件,內容為Failed或Completed,表示子任務失敗或成功
│ └── TASK # Task描述信息
└── worker # Worker正在運行的Task狀態,運行完成後由Master管理
└── jobs
├── local_test2
│ └── tasks
└── local_test_4
└── tasks
提示:
- Job運行狀態查看
logs/tracker.log
,Worker的運行日誌查看logs/worker.log
,Master的運行日誌查看logs/master.log
; - Task的失敗原因,可以查看
master/jobs/${JobName}/failed_tasks/${TaskName}/audit.log
; - Task的失敗文件,可以查看
master/jobs/${JobName}/failed_tasks/${TaskName}/error.list
。
常見錯誤及排除
請參看 常見錯誤及排除。
最後更新:2017-07-12 11:02:21