ビジュアル MapReduce モデルは、MapReduce モデルに基づいて開発され、可視化された O&M 機能をサポートします。バックエンドでコードを修正する必要はありません。SchedulerX コンソールでジョブの分散モデルをビジュアル MapReduce モデルに変更するだけです。すると、ジョブに対して生成されたすべてのタスクを含むページがコンソールに表示されます。このページでは、各タスクの詳細と結果を表示し、各タスクを再実行できます。
注意事項
古いバージョンの SDK にはセキュリティの脆弱性があります。SDK をバージョン 1.12.2 以降にアップグレードしてください。
これはプロフェッショナル版でのみ利用可能です。
タスク数は 1,000 を超えることはできません。
タスクのサイズは 64 KB を超えることはできません。
タスクのカスタムラベル情報を表示する場合、タスクオブジェクトに指定されたインターフェイスを実装する必要があります。
ProcessResult の result フィールドの戻り値のサイズは 1,000 バイトを超えることはできません。
reduce メソッドを使用する場合、すべてのタスクの結果がマスターノードにキャッシュされます。この場合、マスターノードで高いメモリプレッシャーが発生します。タスク数を少なくし、result フィールドの戻り値を小さくすることをお勧めします。reduce メソッドが不要な場合は、MapJobProcessor インターフェイスを直接呼び出すことができます。
フェールオーバーがトリガーされた場合、SchedulerX はタスクを複数回実行することがあります。この場合、タスクのべき等性を独自に実装する必要があります。
インターフェイス
ビジュアル MapReduce モデルは、MapReduce モデルのすべてのインターフェイスを継承します。ビジュアル MapReduce モデルのジョブ処理コードは、MapReduce モデルのコードと同じです。詳細については、「MapReduce」をご参照ください。
オプション: ビジュアル MapReduce モデルによって実行される各タスクにラベルを指定できます。タスクのラベルを表示する場合は、タスクオブジェクトに com.alibaba.schedulerx.worker.processor.BizSubTask インターフェイスを実装する必要があります。
インターフェイス
説明
必須
public Map<String, String> labelMap()このインターフェイスは、タスクのラベル情報を出力するために使用されます。ラベル情報には、アカウント名、プロダクトコード、都市、およびタスクオブジェクトのその他のカスタム特徴が含まれます。
いいえ
MapReduce とビジュアル MapReduce の比較
項目 | MapReduce | ビジュアル MapReduce |
タスク数 | 100 万以上。 | 1,000 以下。 |
タスク開発モード | 両者に違いはありません。 | |
タスクリスト | サポートされていません。 | サポートされています。 |
タスク実行詳細 | サポートされていません。 | サポートされています。詳細には、各タスクの実行レコード、実行ステータス、ログ、トレース分析、および実行スタックが含まれます。 |
タスクラベル | サポートされていません。 | サポートされています。タスクに BizSubTask インターフェイスを実装すると、ビジネスラベルに関する情報を表示できます。 |
タスク操作 | サポートされていません。 | サポートされています。単一のタスクを停止および再実行できます。 |
ジョブ開発のサンプルコード
一度に複数のアカウントを処理する
例: 一度に複数の銀行口座を処理したいとします。各銀行口座は独立したタスクと見なされ、クラスター内でグローバル並列モードで実行できます。タスクリスト内の各タスクには、簡単にクエリできるようにアカウント情報を表示する必要があります。これにより、各銀行口座の処理ステータスと実行詳細を迅速に理解できます。以下のサンプルコードをご参照ください。
各カスタムアカウント情報サブタスクオブジェクトのラベル情報を表示するには、com.alibaba.schedulerx.worker.processor.BizSubTask インターフェイスとその labelMap メソッドを実装する必要があります。
Processor を使用して各銀行口座のビジネスロジックを処理し、com.alibaba.schedulerx.worker.processor.MapReduceJobProcessor を継承します。
手順
ジョブ構成
SchedulerX コンソールにログインします。左側のナビゲーションウィンドウで、[タスク管理] をクリックします。
[タスク管理] ページで、[タスクの作成] をクリックします。
[タスクの作成] パネルで、[実行モード] ドロップダウンリストから [ビジュアル MapReduce] を選択します。

[詳細設定] セクションで、必要に応じてパラメーターを構成します。その他のパラメーターの詳細については、「ジョブ管理の高度なパラメーター」をご参照ください。
パラメーター
説明
配布ポリシー
ポーリングスキーム: システムは、各ワーカーに同数のタスクを均等に分散します。このポリシーは、各ワーカーがタスクの処理にほぼ同じ時間を必要とするシナリオに適しています。これがデフォルト値です。
負荷最適ポリシー: マスターノードはワーカーノードの負荷を自動的に検出します。このポリシーは、サブタスクの処理時間が大幅に異なるシナリオに適しています。
説明このパラメーターは、クライアントバージョンが V1.10.14 以降の場合にのみ表示されます。
単一マシンでの同時サブタスク数
ワーカー上の実行スレッドの数。デフォルト値: 5。実行を高速化するには、より大きな値を指定できます。ダウンストリームまたはデータベースが指定した値に耐えられない場合は、より小さな値を指定できます。
サブタスクの失敗リトライ回数
タスクが失敗した場合のリトライ回数。デフォルト値: 0。
サブタスクの失敗リトライ間隔
2 回の連続したリトライの間隔。単位: 秒。デフォルト値: 0。
サブタスクのフェールオーバー戦略
ワーカーがタスクの実行に失敗して停止した後、新しいワーカーにタスクを分散するかどうかを指定します。スイッチをオンにすると、フェールオーバーがトリガーされたときにシステムがタスクを複数回実行する可能性があります。タスクのべき等性を実装する必要があります。
説明このパラメーターは、クライアントバージョンが V1.8.13 以降の場合にのみ表示されます。
マスターノードが実行に参加する
マスターノードがタスクの実行に参加するかどうかを指定します。タスクを実行するには、少なくとも 2 つのワーカーが利用可能である必要があります。非常に多数のタスクが存在する場合は、スイッチをオフにすることをお勧めします。
説明このパラメーターは、クライアントバージョンが V1.8.13 以降の場合にのみ表示されます。
可視化機能
ジョブが実行された後、[実行リスト] ページでジョブを見つけ、[操作] 列の [詳細] をクリックしてタスクの実行詳細を表示できます。
[サブタスクリスト] タブで、各タスクの実行ステータスを表示します。

[サブタスクリスト] タブで、管理したいタスクを見つけ、[操作] 列の [ログ] をクリックして、各タスクのビジネスログ情報を表示し、実行結果を分析します。

ジョブの実行レコードが利用可能になったら、[現在の実行詳細] タブの [ThreadDump] をクリックして、関連するマシンのスレッド実行ステータスを表示し、ジョブのエラー詳細を分析します。

トレース分析が接続された後、[サブタスクリスト] タブのタスクの [TraceId] 列の値をクリックして、対応するトレースの詳細をクエリできます。詳細については、「トレース分析の統合」をご参照ください。

