このガイドでは、コマンドラインツールを使用して、ログファイル内の "INFO"、"WARN"、"ERROR"、"DEBUG" の発生回数をカウントするジョブを送信する方法について説明します。
ジョブの準備
目的:ログファイル内の "INFO"、"WARN"、"ERROR"、"DEBUG" の発生回数をカウントします。
このジョブは、split、count、merge の 3 つのタスクで構成されます。
split タスクは、ログファイルを 3 つの部分に分割します。
count タスクは、各部分の "INFO"、"WARN"、"ERROR"、"DEBUG" の発生回数を集計します。
InstanceCountを 3 に設定すると、3 つの count タスクが同時に実行されます。merge タスクは、count タスクの結果を結合します。
データファイルの OSS へのアップロード
この例のデータファイルをダウンロードします: log-count-data.txt
log-count-data.txt を oss://your-bucket/log-count/log-count-data.txt にアップロードします。
your-bucket をご利用のバケット名に置き換えてください。この例では、中国 (深セン) (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 コマンドは、OSS のためのいくつかの一般的な関数を提供します。bcs o -h を実行してヘルプ情報を表示します。このコマンドは、少量のデータでのテストに便利です。ただし、マルチスレッドをサポートしていないため転送が遅くなるため、大量のデータセットのアップロードまたはダウンロードに使用することは推奨しません。OSS へのデータアップロード方法の詳細については、「OSS の一般的なツール」をご参照ください。
タスクプログラムの準備
この例のジョブプログラムは Python で記述されています。この例のプログラムパッケージをダウンロードします: log-count.tar.gz
パッケージを展開するには、次のコマンドを実行します:
mkdir log-count && tar -xvf log-count.tar.gz -C log-count展開後、log-count/ ディレクトリは次の構造になります:
log-count
|-- conf.py # 構成
|-- split.py # split タスクプログラム
|-- count.py # count タスクプログラム
|-- merge.py # merge タスクプログラム注:プログラムを修正する必要はありません。
ジョブの送信
ジョブ構成の作成
log-count の親ディレクトリに、次の内容で job.cfg という名前のファイルを作成します。
[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この構成は、マルチタスクジョブを記述しています。タスクの順序は split -> count -> merge です。
cfg フォーマットの詳細については、「マルチタスクのサポート」をご参照ください。
送信コマンド
bcs sub --file job.cfg -r oss://your-bucket/log-count/:/home/input/ -w oss://your-bucket/log-count/:/home/output/-r と -w フラグは、それぞれ読み取り専用マウントと書き込み可能マウントを指定します。詳細については、「OSS のマウント」をご参照ください。
同じ OSS パスを異なるローカルディレクトリにマウントできます。ただし、異なる OSS パスを同じローカルディレクトリにマウントすることはできません。
ディレクトリをマウントする場合、そのパスはスラッシュ (
/) で終わる必要があることに注意してください。
ジョブステータスの確認
bcs j # ジョブリストを取得します。このコマンドは実行のたびにリストをキャッシュします。通常、最後に送信されたジョブが最初に表示されます。
bcs ch 1 # キャッシュされたジョブのステータスを確認します。「1」を「bcs j」の出力から得たご利用のジョブのインデックスに置き換えてください。
bcs log 1 # キャッシュされたジョブのログを表示します。「1」をジョブのインデックスに置き換えてください。結果の表示
ジョブが完了したら、次のコマンドを実行して OSS の結果を表示します。
bcs oss cat oss://your-bucket/log-count/merge_result.json出力は次のようになります:
{"INFO": 2460, "WARN": 2448, "DEBUG": 2509, "ERROR": 2583}