このセクションでは、Batch Compute-cli ツールを使用して、ログファイル内の「INFO」、「WARN」、「ERROR」、および「DEBUG」の出現回数をカウントするジョブを送信する方法について説明します。
注: 事前に Batch Compute サービスにサインアップしていることを確認してください。
内容:
Batch Compute-cli ツールのインストールと構成
ジョブの準備
データファイルを OSS にアップロードする
タスクプログラムを準備する
ジョブの送信
ジョブの実行ステータスの確認
ジョブの実行結果の確認
Batch Compute-cli ツールのインストールと構成については、「準備」をクリックしてください。
2. ジョブの準備
このジョブの目的は、ログファイル内の「INFO」、「WARN」、「ERROR」、および「DEBUG」の出現回数をカウントすることです。
このジョブには、次のタスクが含まれています。
分割タスクは、ログファイルを3つの部分に分割するために使用されます。
カウントタスクは、ログファイルの各部分に「INFO」、「WARN」、「ERROR」、および「DEBUG」が何回出現するかをカウントするために使用されます。カウントタスクでは、InstanceCount を 3 に設定する必要があります。これは、3 つのカウントタスクが同時に開始されることを示します。
マージタスクは、カウントタスクのすべての結果をマージします。
DAG
2.1. データファイルを 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 oss
コマンドは、OSS インスタンスに関連するいくつかの典型的なアクションを実行できます。bcs oss -h
は、このコマンドに関するヘルプ情報を表示します。テストするデータが少ない場合は、このコマンドを使用することをお勧めします。データ量が多い場合、マルチスレッドがまだ実装されていないため、アップロードまたはダウンロードに時間がかかります。OSS インスタンスへのデータのアップロード方法の詳細については、「OSS ツール」を参照してください。
2.2 タスクプログラムの準備
この例で使用されるジョブプログラムは、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 # 分割タスクプログラム
|-- count.py # カウントタスクプログラム
|-- merge.py # マージタスクプログラム
注: タスクプログラムを変更しないでください。
3. ジョブの送信
3.1. ジョブ設定のコンパイル
log-count の親ディレクトリに、ファイルを作成します: job.cfg (log-count と同じ親ディレクトリの下)。ファイルには次の内容が含まれています。
[DEFAULT]
job_name=log-count
description=デモ
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 ファイルのタスク記述の詳細については、「複数のタスク」を参照してください。
3.2. ジョブの送信
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 パスを同じローカルディレクトリに添付することはできません。
4. ジョブの実行ステータスの確認
bcs j # ジョブリストを取得します。取得されたジョブリストは毎回キャッシュされます。一般的に、キャッシュ内の最初のジョブは、まさに送信したジョブです。
bcs ch 1 # キャッシュ内の最初のジョブのステータスを確認します。
bcs log 1 # キャッシュ内の最初のジョブのログを確認します。
5. ジョブの実行結果の確認
ジョブが実行された後、次のコマンドを実行して OSS の結果を確認します。
bcs oss cat oss://your-bucket/log-count/merge_result.json
期待される結果は次のとおりです。
{"INFO": 2460, "WARN": 2448, "DEBUG": 2509, "ERROR": 2583}