單機部署(已下線)
本文介紹如何單機部署ossimport,單機部署支持Linux和Windows系統。
前提條件
已安裝Java 1.7或Java 1.8。
快速使用
下載ossimport-2.3.7.zip并解壓。
解壓后的文件結構如下:
ossimport ├── bin │ └── ossimport2.jar # 包括Master、Worker、TaskTracker、Console四個模塊的總jar ├── conf │ ├── local_job.cfg # Job配置文件 │ └── sys.properties # 系統運行參數配置文件 ├── console.bat # Windows命令行,可以分布執行調入任務 ├── console.sh # Linux命令行,可以分布執行調入任務 ├── import.bat # Windows一鍵導入,執行配置文件為conf/local_job.cfg配置的數據遷移任務,包括啟動、遷移、校驗、重試 ├── import.sh # Linux一鍵導入,執行配置文件為conf/local_job.cfg配置的數據遷移任務,包括啟動、遷移、校驗、重試 ├── logs # 日志目錄 └── README.md # 說明文檔,強烈建議使用前仔細閱讀
根據需求編輯conf/sys.properties、conf/local_job.cfg文件。
注意不要修改以下內容:
conf/sys.properties中的配置項workingDir、workerUserName、workerPassword、privateKeyFile。
conf/local_job.cfg
的名稱、位置、配置項jobName
。
配置示例請參見配置文件示例。
重要請在提交任務前確認sys.properties和local_job.cfg中的參數,任務提交后參數無法再修改。
配置完成后運行任務。
Window系統下在雙擊運行import.bat。
Linux終端中執行bash import.sh命令。
運行方式
單機模式下,數據遷移任務有以下兩種執行方式:
一鍵導入:是對所有步驟的封裝,按照腳本提示執行即可完成數據遷移。快速使用步驟使用的是這種執行方式,對于初級用戶建議使用一鍵導入 。
執行一鍵導入。
Window系統下在雙擊運行import.bat。
Linux終端中執行bash import.sh命令。
說明如果之前執行過程序,會提示是否從上次的斷點處繼續執行,或者重新執行同步任務。對新的數據遷移任務,或者修改了同步的源端/目的端,請選擇重新執行。
Windows下任務開始后,會打開一個新的cmd窗口執行同步任務并顯示日志,舊窗口會每隔10秒打印一次任務狀態,數據遷移期間不要關閉兩個窗口;Linux下服務在后臺執行。
當Job完成后,如果發現有任務失敗了,會提示是否重試。輸入y重試,輸入n則跳過退出。
如果上傳失敗,請查看master/jobs/local_test/failed_tasks/<taskid>/audit.log文件,確定失敗原因。
分步執行:執行啟動服務、提交任務、重試失敗子任務等步驟。
清除同名任務。
如果以前運行過同名任務,需要重新執行任務,請先清除同名任務。如果沒有運行過,或需要重試失敗任務,不要執行清除命令。
Window下在cmd.exe中執行console.bat clean。
Linux下在終端執行bash console.sh clean。
提交數據遷移任務。
ossimport不能提交同名任務,如果有請先清除。提交任務的配置文件為conf/local_job.cfg,默認任務名稱為
local_test
。提交任務的命令:Window下在cmd.exe中執行console.bat submit。
Linux下在終端執行bash console.sh submit。
啟動服務。
Windows下在cmd.exe中執行console.bat start。
Linux下在終端執行bash console.sh start。
查看任務狀態。
Windows下在cmd.exe中執行console.bat stat。
Linux下在終端執行bash console.sh stat。
失敗Task重試。
由于網絡或其它原因,子任務可能失敗。失敗重試只重試失敗的Task,不會重試成功的Task。
Windows下在cmd.exe中執行console.bat retry。
Linux下在終端執行bash console.sh retry。
停止服務。
Windows下關閉窗口%JAVA_HOME%/bin/java.exe。
Linux下載終端執行bash console.sh stop。
任務狀態及日志
任務提交后,Master分解成Task,由Worker執行Task,Tracker收集Task狀態。任務運行完成后ossimport目錄內容如下:
ossimport
├── bin
│ └── ossimport2.jar # 單機版jar
├── conf
│ ├── local_job.cfg # Job配置文件
│ └── sys.properties # 系統運行參數配置文件
├── console.sh # 命令行工具
├── import.sh # 一鍵導入腳本
├── logs
│ ├── import.log # 遷移日志
│ ├── job_stat.log # 任務狀態記錄
│ ├── ossimport2.log # 單機版運行日志
│ └── submit.log # 任務提交記錄
├── master
│ ├── jobqueue # 存放尚未分解完成的任務
│ └── jobs # 存放任務運行狀態
│ └── local_test # 任務名稱
│ ├── checkpoints # Master分解Job到Task的checkpoint點記錄
│ │ └── 0
│ │ └── 034DC9DD2860B0CFE884242BC6FF92E7.cpt
│ ├── dispatched # 已經分配給Worker尚未運行完成的Task
│ │ └── localhost
│ ├── failed_tasks # 運行失敗的Task
│ ├── pending_tasks # 尚未分配的Task
│ └── succeed_tasks # 成功運行的Task
│ └── A41506C07BF1DF2A3EDB4CE31756B93F_1499744514501@localhost
│ ├── audit.log # Task運行日志,通過該日志可以查看錯誤原因
│ ├── DONE # Task運行成功標志
│ ├── error.list # Task錯誤列表,可以查看錯誤文件列表
│ ├── STATUS # 任務狀態標志文件,內容為Failed或Completed,表示子任務失敗或成功
│ └── TASK # Task描述信息
└── worker # Worker正在運行的Task狀態,運行完成后由Master管理
└── jobs
└── local_test
└── tasks
Job運行信息,可以查看logs/ossimport2.log或logs/import.log。
Task的失敗原因,可以查看master/jobs/${JobName}/failed_tasks/${TaskName}/audit.log。
Task的失敗文件,可以查看master/jobs/${JobName}/failed_tasks/${TaskName}/error.list。
上述日志僅作為排查問題時的參考,您的業務和應用不要依賴于該內容。
遷移結果校驗
ossimport不對遷移文件進行校驗,無法保證遷移結果的正確性和一致性。在遷移任務完成后,請您務必自行做好源端和目的端數據的一致性校驗。
如您在未校驗源端和目的端數據一致性前,刪除源數據,由此所引起的一切損失和后果均由您自行承擔。
遷移失敗常見原因
上傳過程中源目錄的文件發生了修改,log/audit.log里會提示
SIZE_NOT_MATCH
相關字樣的錯誤,這種情況下老的文件已經上傳成功,新的修改沒有上傳到OSS。源文件在上傳過程中被刪除,導致遷移失敗。
源文件名不符合OSS命名規范(不能以正斜線(/)開頭,不能為空),導致上傳到OSS失敗。
因網絡異常、賬號權限不足等原因導致的下載數據源文件失敗,可查看logs/ossimport2.log或logs/import.log確定錯誤原因。
程序異常退出,任務狀態為Abort 。如果遇到此類問題,請聯系技術支持進行排查。