全部產品
Search
文件中心

Data Online Migration:分布式部署(已下線)

更新時間:Oct 24, 2024

本文介紹如何分布式部署ossimport,分布式部署目前只支援Linux系統,Windows系統暫不支援。

前提條件

  • 請選擇至少兩台機器作為遷移叢集,其中一台作為Master,其餘的作為Worker。

  • 請確保網路連接正常,以便Master與Worker之間通過SSH串連。

  • 請確保所有Worker的使用者名稱和密碼一致。

    說明

    Master與Worker之間需要SSH串連或者在sys.properties配置Worker登入資訊。

下載並安裝ossimport

  1. 下載ossimport

    分布式版本下載地址ossimport-2.3.7.tar.gz,將ossimport安裝包下載到本地。

  2. 安裝ossimport

    說明

    選擇一台機器作為Master,後續的操作都在Master上執行。

    1. 登入伺服器後執行以下命令 ,建立ossimport目錄。

      mkdir -p $HOME/ossimport
    2. 進入壓縮包目前的目錄,執行以下命令 ,將壓縮包解壓到指定目錄。

      tar -zxvf ossimport-2.3.7.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.propertiesconf/job.cfgconf/workers

  • conf/job.cfg:分布式模式下任務的設定檔範本,資料移轉前請按照實際參數修改。

  • conf/sys.properties:系統運行參數設定檔,如工作目錄、Worker運行參數等請在該檔案中配置。

  • conf/workers:worker列表。

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

  • Worker列表workers請啟動服務前確定,啟動後無法再增加或刪除。

運行

  • 執行遷移任務

    分布式部署時,執行任務的一般步驟是修改任務設定檔、部署服務、清除同名任務、提交任務、啟動遷移服務、查看任務狀態、重試失敗子任務以及停止遷移任務。詳細說明如下:

    • 部署服務。在Linux終端執行bash console.sh deploy。該命令會根據使用者配置的conf/workers,將ossimport部署到所有機器上。

      說明

      部署前請保證設定檔conf/job.cfg、conf/workers已經修改完成。

    • 清除同名任務。如果運行過同名任務,需要重新執行任務,請先清除同名任務。如果沒有運行過,或需要重試失敗子任務,不需要執行清除命令。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

    • 失敗任務重試。由於網路或其它原因,任務可能運行失敗。失敗重試只重試失敗的任務,成功的任務不會重試。Linux下在終端執行bash console.sh retry [job_name],job_name 為選擇性參數,指定job_name時重試失敗任務的子任務,不指定job_name時重試所有任務的失敗子任務。

    • 停止服務。Linux終端執行bash console.sh stop

    提示:

    • bash console.sh在參數錯誤時,會自動提示命令格式。

    • 設定檔和提交任務中的目錄,推薦使用絕對目錄。

    • 任務的配置,即job.cfg中的配置項。

      重要

      配置項提交後不允許修改。

  • 常見任務失敗原因

    • 上傳過程中來源目錄的檔案發生了修改,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/import.log

    • Task的失敗原因,可以查看master/jobs/${JobName}/failed_tasks/${TaskName}/audit.log

    • Task的失敗檔案,可以查看master/jobs/${JobName}/failed_tasks/${TaskName}/error.list

    • 上述日誌僅作為排查問題時的參考,您的業務和應用不要依賴於該內容。

遷移結果校正

ossimport不對遷移檔案進行校正,無法保證遷移結果的正確性和一致性。在遷移任務完成後,請您務必自行做好源端和目的端資料的一致性校正。

如您在未校正源端和目的端資料一致性前,刪除來源資料,由此所引起的一切損失和後果均由您自行承擔。

常見錯誤及排除

請查看常見錯誤及排除