本文檔將介紹如何使用命令行工具來提交一個(gè)作業(yè),目的是統(tǒng)計(jì)一個(gè)日志文件中“INFO”,”WARN”,”ERROR”,”DEBUG”出現(xiàn)的次數(shù)。

命令行工具安裝和配置

作業(yè)準(zhǔn)備

目的:統(tǒng)計(jì)一個(gè)日志文件中“INFO”,”WARN”,”ERROR”,”DEBUG”出現(xiàn)的次數(shù)。

該作業(yè)包含3個(gè)任務(wù):split, count 和 merge:

  • split 任務(wù)會(huì)把日志文件分成 3 份。
  • count 任務(wù)會(huì)統(tǒng)計(jì)每份日志文件中“INFO”,”WARN”,”ERROR”,”DEBUG”出現(xiàn)的次數(shù)(count 任務(wù)需要配置 InstanceCount 為3,表示同時(shí)啟動(dòng) 3 個(gè) count 任務(wù))。
  • merge 任務(wù)會(huì)把 count 的結(jié)果合并起來。

DAG圖例:

DAG

上傳數(shù)據(jù)文件到OSS

下載本例子所需的數(shù)據(jù):log-count-data.txt

將 log-count-data.txt 上傳到:oss://your-bucket/log-count/log-count-data.txt

說明 your-bucket 表示您自己創(chuàng)建的 bucket,本例子假設(shè) region 為:cn-shenzhen。
bcs oss upload ./log-count-data.txt oss://your-bucket/log-count/log-count-data.txt

bcs oss cat oss://your-bucket/log-count/log-count-data.txt  # 檢查是否上傳成功

bcs o 命令提供幾個(gè) OSS 常用的功能,使用 bcs o -h 可以查看幫助,測(cè)試少量數(shù)據(jù)時(shí)使用很方便,但上傳下載大量數(shù)據(jù)時(shí)不建議使用(沒有實(shí)現(xiàn)多線程,上傳下載慢。更多關(guān)于如何上傳到 OSS,請(qǐng)參考 常用 OSS 工具

準(zhǔn)備任務(wù)程序

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

使用下面的目錄解壓:

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

解壓后的log-count/目錄結(jié)構(gòu)如下

log-count
  |-- conf.py    # 配置
  |-- split.py       # split 任務(wù)程序
  |-- count.py      # count 任務(wù)程序
  |-- merge.py    # merge 任務(wù)程序

說明:不需要改動(dòng)程序

提交作業(yè)

編寫作業(yè)配置

在 log-count 的父目錄下創(chuàng)建一個(gè)文件:job.cfg(此文件要與 log-count 目錄平級(jí)), 內(nèi)容如下:

[DEFAULT]
job_name=log-count
description=demo
pack=./log-count/
deps=split->count;count->merge

[split]
cmd=python split.py

[count]
cmd=python count.py
nodes=3

[merge]
cmd=python merge.py

這里描述了一個(gè)多任務(wù)的作業(yè),任務(wù)的執(zhí)行順序是 split>count>merge。

關(guān)于 cfg 格式的描述,請(qǐng)看 多任務(wù)支持

提交命令

bcs sub --file job.cfg -r oss://your-bucket/log-count/:/home/input/ -w oss://your-bucket/log-count/:/home/output/
  • -r 和 -w 表示只讀掛載和可寫映射,具體請(qǐng)查看 OSS 掛載
  • 同一個(gè) OSS 路徑,可以掛載到不同的本地目錄。但是不同的 OSS 路徑是不能掛載到同一個(gè)本地目錄的,一定要注意。
  • 這里需要注意的是,如果掛載的是目錄,一定要以“/”結(jié)尾。

查看作業(yè)運(yùn)行狀態(tài)

bcs j   # 獲取作業(yè)列表, 每次獲取作業(yè)列表后都會(huì)將列表緩存下來,一般第一個(gè)即是你剛才提交的作業(yè)
bcs ch 1  # 查看緩存中作業(yè)的狀態(tài),這里的1是bcs j命令查詢出的剛剛提交的作業(yè)序號(hào)
bcs log 1 # 查看緩存中序號(hào)為1的作業(yè)日志

查看結(jié)果

Job 結(jié)束后,可以使用以下命令查看 OSS 的結(jié)果。

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

內(nèi)容應(yīng)該如下:

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