閱讀521 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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_HOMEOSS_IMPORT_WORK_DIR 請使用絕對路徑配置,如 /home/<user>/ossimport/home/<user>/ossimport/workdir

配置

分布式部署有三個個配置文件conf/sys.propertiesconf/local_job.cfgconf/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

  上一篇:go  如何實現一份報表,不同人看不同的數據
  下一篇:go  談談關於PHP的代碼安全相關的一些致命知識