閱讀106 返回首頁    go 小米


提交作業例子__Docker_操作指南_批量計算-阿裏雲

步驟

  • 提交作業簡介
  • 作業準備
    • 上傳數據文件到OSS
    • 準備任務程序
  • 提交作業
    • 編寫作業配置
    • 提交命令
  • 查看作業運行狀態
  • 查看運行結果

1. 提交作業簡介

在 BatchCompute 中, 提交作業時使用 docker 與普通作業基本相同, 隻有2點區別:

(1) 使用支持Docker的ImageId

您隻需要將任務描述的 ImageId 指定為 BatchCompute 的公共鏡像的Id(支持Docker的鏡像, ID為img-ubuntu),或者使用設置了該ImageId的 Cluster的ClusterId.

(2) 在task描述的環境變量(EnvVars)中增加如下兩個參數:

字段名稱 描述 是否可選
BATCH_COMPUTE_DOCKER_IMAGE Docker鏡像名稱 可選
BATCH_COMPUTE_DOCKER_REGISTRY_OSS_PATH Docker鏡像在 OSS-Registry 中的存儲路徑 可選
  • 如果沒有 BATCH_COMPUTE_DOCKER_IMAGE 參數,表示不使用 docker ,這時 BATCH_COMPUTE_DOCKER_REGISTRY_OSS_PATH 將被忽略。
  • 如果有 BATCH_COMPUTE_DOCKER_IMAGE, 則表示使用 docker。

2. 作業準備

本作業程序使用python編寫,目的是統計一個日誌文件中“INFO”,”WARN”,”ERROR”,”DEBUG”出現的次數。

該作業包含3個任務: split, count 和 merge

  • split 任務會把日誌文件分成 3 份。
  • count 任務會統計每份日誌文件中“INFO”,”WARN”,”ERROR”,”DEBUG”出現的次數 (count 任務需要配置InstanceCount為3,表示同時啟動3個 count 任務)。
  • merge 任務會把 count 的結果統一合並起來。

DAG圖例:

DAG圖例

(1) 上傳數據文件到OSS

下載本例子所需的數據: log-count-data.txt

將 log-count-data.txt 上傳到:

oss://your-bucket/log-count/log-count-data.txt

  • your-bucket如表示您自己創建的bucket,本例子假設region為: cn-shenzhen.
  • 如何上傳到OSS,請參考OSS上傳文檔

(2) 準備任務程序

本例子的作業程序是使用python編寫的, 下載本例子所需的程序: log-count.tar.gz

使用下麵的目錄解壓:

  1. mkdir log-count && tar -xvf log-count.tar.gz -C log-count

解壓後的log-count/目錄結構如下

  1. log-count
  2. |-- conf.py # 配置
  3. |-- split.py # split 任務程序
  4. |-- count.py # count 任務程序
  5. |-- merge.py # merge 任務程序
  • 注意:不需要改動程序

2. 提交作業

提交作業可以使用 python sdk 或者 java sdk, 或者控製台提交,本例子使用命令行工具提交。

(1) 編寫作業配置

在log-count的父目錄下創建一個文件: job.cfg(此文件要與log-count目錄平級), 內容如下:

  1. [DEFAULT]
  2. job_name=log-count
  3. description=demo
  4. pack=./log-count/
  5. deps=split->count;count->merge
  6. [split]
  7. cmd=python split.py
  8. [count]
  9. cmd=python count.py
  10. nodes=3
  11. [merge]
  12. cmd=python merge.py

這裏描述了一個多任務的作業,任務的執行順序是 split->count->merge。

(2) 提交命令

  1. bcs sub --file job.cfg -r oss://your-bucket/log-count/:/home/input -w oss://your-bucket/log-count/:/home/output --docker localhost:5000/myubuntu@oss://your-bucket/dockers/
  • -r 和 -w 表示隻讀掛載和可寫映射,具體請看這裏: OSS掛載
  • 同一個oss路徑,可以掛載到不同的本地目錄。但是不同的oss路徑是不能掛載到同一個本地目錄的,一定要注意。
  • —docker 表示使用docker,格式: image_name@storage_oss_path, 會自動將docker名稱和倉庫地址配置到環境變量。

4. 查看作業運行狀態

  1. bcs j # 獲取作業列表, 每次獲取作業列表後都會將列表緩存下來,一般第一個即是你剛才提交的作業
  2. bcs ch 1 # 查看緩存中第一個作業的狀態
  3. bcs log 1 # 查看緩存中第一個作業日誌

5. 查看結果

Job結束後,可以使用以下命令查看存在OSS中的結果。

  1. bcs oss cat oss://your-bucket/log-count/merge_result.txt

內容應該如下:

  1. {"INFO": 2460, "WARN": 2448, "DEBUG": 2509, "ERROR": 2583}

最後更新:2016-11-23 16:04:15

  上一篇:go 前言__Docker_操作指南_批量計算-阿裏雲
  下一篇:go 本地調試__Docker_操作指南_批量計算-阿裏雲