全部產品
Search
文件中心

Data Online Migration:單機部署(已下線)

更新時間:Oct 24, 2024

本文介紹如何單機部署ossimport,單機部署支援Linux和Windows系統。

前提條件

已安裝Java 1.7或Java 1.8。

快速使用

  1. 下載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           # 說明文檔,強烈建議使用前仔細閱讀
  2. 根據需求編輯conf/sys.propertiesconf/local_job.cfg檔案。

    注意不要修改以下內容:

    • conf/sys.properties中的配置項workingDirworkerUserNameworkerPasswordprivateKeyFile

    • conf/local_job.cfg的名稱、位置、配置項jobName

    配置樣本請參見設定檔樣本

    重要

    請在提交任務前確認sys.propertieslocal_job.cfg中的參數,任務提交後參數無法再修改。

  3. 配置完成後運行任務。

    • Window系統下在雙擊運行import.bat

    • Linux終端中執行bash import.sh命令。

運行方式

單機模式下,資料移轉任務有以下兩種執行方式:

  • 一鍵匯入:是對所有步驟的封裝,按照指令碼提示執行即可完成資料移轉。快速使用步驟使用的是這種執行方式,對於初級使用者建議使用一鍵匯入 。

    1. 執行一鍵匯入。

      • Window系統下在雙擊運行import.bat

      • Linux終端中執行bash import.sh命令。

      說明

      如果之前執行過程式,會提示是否從上次的斷點處繼續執行,或者重新執行同步任務。對新的資料移轉任務,或者修改了同步的源端/目的端,請選擇重新執行。

    2. Windows下任務開始後,會開啟一個新的cmd視窗執行同步任務並顯示日誌,舊視窗會每隔10秒列印一次任務狀態,資料移轉期間不要關閉兩個視窗;Linux下服務在後台執行。

    3. 當Job完成後,如果發現有任務失敗了,會提示是否重試。輸入y重試,輸入n則跳過退出。

    4. 如果上傳失敗,請查看master/jobs/local_test/failed_tasks/<taskid>/audit.log檔案,確定失敗原因。

  • 分步執行:執行啟動服務、提交任務、重試失敗子任務等步驟。

    1. 清除同名任務。

      如果以前運行過同名任務,需要重新執行任務,請先清除同名任務。如果沒有運行過,或需要重試失敗任務,不要執行清除命令。

      • Window下在cmd.exe中執行console.bat clean

      • Linux下在終端執行bash console.sh clean

    2. 提交資料移轉任務。

      ossimport不能提交同名任務,如果有請先清除。提交任務的設定檔為conf/local_job.cfg,預設任務名稱為local_test。提交任務的命令:

      • Window下在cmd.exe中執行console.bat submit

      • Linux下在終端執行bash console.sh submit

    3. 啟動服務。

      • Windows下在cmd.exe中執行console.bat start

      • Linux下在終端執行bash console.sh start

    4. 查看任務狀態。

      • Windows下在cmd.exe中執行console.bat stat

      • Linux下在終端執行bash console.sh stat

    5. 失敗Task重試。

      由於網路或其它原因,子任務可能失敗。失敗重試只重試失敗的Task,不會重試成功的Task。

      • Windows下在cmd.exe中執行console.bat retry

      • Linux下在終端執行bash console.sh retry

    6. 停止服務。

      • 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.loglogs/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.loglogs/import.log確定錯誤原因。

  • 程式異常退出,任務狀態為Abort 。如果遇到此類問題,請聯絡支援人員進行排查。