このセクションでは、コンソールを使用してジョブを送信する方法について説明します。ジョブの目的は、ログファイルに INFO、WARN、ERROR、および DEBUG が出現する回数をカウントすることです。
事前に Batch Compute サービスにサインアップしていることを確認してください。
内容:
ジョブを準備します。
1.1. データファイルを OSS にアップロードします。
1.2. タスクプログラムを OSS にアップロードします。
コンソールを使用してジョブを送信します。
ジョブステータスを確認します。
結果を確認します。
1. ジョブを準備する
ジョブの目的は、ログファイルに INFO、WARN、ERROR、および DEBUG が出現する回数をカウントすることです。
このジョブには、次のタスクが含まれています。
分割タスクは、ログファイルを3つの部分に分割するために使用されます。
カウントタスクは、ログファイルの各部分に INFO、WARN、ERROR、および DEBUG が出現する回数をカウントするために使用されます。カウントタスクでは、InstanceCount を 3 に設定する必要があります。これは、3 つのカウントタスクが同時に開始されることを示します。
マージタスクは、すべてのカウント結果をマージするために使用されます。
DAG:
1.1 データファイルを OSS にアップロードする
この例で使用されるデータファイルをダウンロードします: log-count-data.txt
log-count-data.txt ファイルを次の場所にアップロードします:
oss://your-bucket/log-count/log-count-data.txt
your-bucket
は、自分で作成したバケットを示します。この例では、リージョンはcn-shenzhen
であると想定されています。OSS へのデータのアップロード方法の詳細については、OSS へのファイルのアップロード および 一般的な OSS ツール を参照してください。
1.2 タスクプログラムを OSS にアップロードする
この例で使用されるジョブプログラムは、Python を使用してコンパイルされています。プログラム log-count.tar.gz をダウンロードします。
この例では、サンプルコードを変更する必要はありません。 log-count.tar.gz を OSS に直接アップロードできます。例:
oss://your-bucket/log-count/log-count.tar.gz.
アップロード方法は既に説明しました。
Batch Compute は、拡張子が tar.gz の圧縮パッケージのみをサポートしています。必ず上記の方法 (gzip) を使用してパッケージ化してください。そうしないと、パッケージを解析できません。
コードを変更する必要がある場合は、ファイルを解凍し、コードを変更してから、次の手順に従って変更されたコードをパックします。
コマンドは次のとおりです。
> cd log-count # ディレクトリに切り替えます。
> tar -czf log-count.tar.gz * # このディレクトリ以下のすべてのファイルを log-count.tar.gz にパックします。
次のコマンドを実行して、圧縮パッケージの内容を確認できます。
$ tar -tvf log-count.tar.gz
次のリストが表示されます。
conf.py
count.py
merge.py
split.py
2. コンソールを使用してジョブを送信する
Batch Compute コンソール にログオンします。
ジョブリスト > ジョブの送信 を選択し、ジョブを送信します。適切なリージョンを選択してください。これは、バケットのリージョンと同じである必要があります。
ここでは、AutoCluster を使用してジョブを送信します。 AutoCluster の場合は、少なくとも 2 つのパラメーターを設定する必要があります。これには以下が含まれます。
使用可能なイメージ ID。システムが提供するイメージを使用するか、イメージをカスタマイズできます。イメージをカスタマイズする方法の詳細については、イメージの使用 を参照してください。
InstanceType。インスタンスタイプの詳細については、現在サポートされているインスタンスタイプ を参照してください。
この例を実行するには、PackagePath (ジョブがパックされてアップロードされる OSS ディレクトリ。この例では
oss://your-bucket/log-count/log-count.tar.gz
です)、StdoutRedirectPath、および StderrRedirectPath (タスクの結果とエラーの出力アドレス) を対応する OSS ディレクトリ (
oss://your-bucket/log-count/logs/
) に変更する必要もあります。以下は、ジョブの JSON テンプレートです。パラメーターの詳細については、ここをクリック してください。
{ "DAG": { "Dependencies": { "split": [ "count" ], "count": [ "merge" ], "merge": [] }, "Tasks": { "split": { "InstanceCount": 1, "LogMapping": {}, "AutoCluster": { "Configs": { "Networks": { "VPC": { "CidrBlock": "192.168.0.0/16" } } }, "ResourceType": "OnDemand", "InstanceType": "ecs.sn1ne.large", "ImageId": "img-ubuntu-vpc" }, "Parameters": { "Command": { "EnvVars": {}, "CommandLine": "python split.py", "PackagePath": "oss://your-bucket/log-count/log-count.tar.gz" }, "InputMappingConfig": { "Lock": true }, "StdoutRedirectPath": "oss://your-bucket/log-count/logs/", "StderrRedirectPath": "oss://your-bucket/log-count/logs/" }, "InputMapping": { "oss://your-bucket/log-count/": "/home/input/" }, "OutputMapping": { "/home/output/": "oss://your-bucket/log-count/" }, "MaxRetryCount": 0, "Timeout": 21600, "ClusterId": "" }, "merge": { "InstanceCount": 1, "LogMapping": {}, "AutoCluster": { "Configs": { "Networks": { "VPC": { "CidrBlock": "192.168.0.0/16" } } }, "ResourceType": "OnDemand", "InstanceType": "ecs.sn1ne.large", "ImageId": "img-ubuntu-vpc" }, "Parameters": { "Command": { "EnvVars": {}, "CommandLine": "python merge.py", "PackagePath": "oss://your-bucket/log-count/log-count.tar.gz" }, "InputMappingConfig": { "Lock": true }, "StdoutRedirectPath": "oss://your-bucket/log-count/logs/", "StderrRedirectPath": "oss://your-bucket/log-count/logs/" }, "InputMapping": { "oss://your-bucket/log-count/": "/home/input/" }, "OutputMapping": { "/home/output/": "oss://your-bucket/log-count/" }, "MaxRetryCount": 0, "Timeout": 21600, "ClusterId": "" }, "count": { "InstanceCount": 3, "LogMapping": {}, "AutoCluster": { "Configs": { "Networks": { "VPC": { "CidrBlock": "192.168.0.0/16" } } }, "ResourceType": "OnDemand", "InstanceType": "ecs.sn1ne.large", "ImageId": "img-ubuntu-vpc" }, "Parameters": { "Command": { "EnvVars": {}, "CommandLine": "python count.py", "PackagePath": "oss://your-bucket/log-count/log-count.tar.gz" }, "InputMappingConfig": { "Lock": true }, "StdoutRedirectPath": "oss://your-bucket/log-count/logs/", "StderrRedirectPath": "oss://your-bucket/log-count/logs/" }, "InputMapping": { "oss://your-bucket/log-count/": "/home/input/" }, "OutputMapping": { "/home/output/": "oss://your-bucket/log-count/" }, "MaxRetryCount": 0, "Timeout": 21600, "ClusterId": "" } } }, "Description": "batchcompute job", "Priority": 0, "JobFailOnInstanceFail": true, "Type": "DAG", "Name": "log-count" }
すべてのパラメーターとディレクトリが正しいことを確認し、左下隅にある ジョブの送信 をクリックしてから、OK をクリックします。
3. ジョブステータスを確認する
ジョブリストで新しく送信されたジョブ
log-count
をクリックして、このジョブの詳細を表示します。タスク名
split
をクリックして、このタスクの詳細を表示します。緑色のブロックをクリックして、インスタンスログを表示します。
4. ジョブの実行結果を確認する
OSS コンソール にログオンし、バケットの下にある次のファイルを確認します: /log-count/merge_result.json
.
期待される結果は次のとおりです。
{"INFO": 2460, "WARN": 2448, "DEBUG": 2509, "ERROR": 2583}