Anchor | ||||
---|---|---|---|---|
|
...
Code Block | ||||
---|---|---|---|---|
| ||||
<init-param> <param-name>DisableTaskScheduler</param-name> <param-value>TRUE</param-value> </init-param> |
システムタスク
システムタスクは、ひとつのノード上のみで有効化しなくてはいけません。
...
マスタノードは、タスク委任の調整をします。これは、オプションでバックグラウンドタスクを実行します。マスタは、明示的に無効化されていない限り(これは推奨されません)、常にシステムタスクを実行します。スレーブノードは、実行するように構成されたバックグラウンドタスクのみを実行します。
Yellowfinのクラスタは、高度に構成可能です。
- ノードは、マスタになるように構成できますが、スレーブになることはありません。これを実現するには、web.xml内のClusterManagement servletブロックにTaskTypeを含めてはいけません。
- ノードは、スレーブになるように構成できますが、マスタになることはありません。これを実現するには、web.xml内のMIStartup servletブロックに以下を追加します。
...
- ウェブに面するノードは、決してマスタ、またはスレーブにならないように構成する場合があります。この場合は、バックグラウンドタスクは、リソースにおいて、オンライプロセスと競合することがありません。これを実現するには、web.xml内のMIStartup servletブロックに以下を追加します。
...
Code Block | ||||
---|---|---|---|---|
| ||||
<init-param> <param-name>DisableTaskScheduler</param-name> <param-value>TRUE</param-value> </init-param> |
web.xml内のClusterManagement servletブロックにTaskTypeが含まれていないことを確認します。
- 特定のタスクを実行するように、ノードを構成する場合があります。同時に実行する各タイプのタスクの最大数も構成しなくてはいけません。これを実現するには、web.xml内のClusterManagement servletブロックに以下を追加します。
...
Code Block | ||||
---|---|---|---|---|
| ||||
<init-param> <param-name>TaskTypes</param-name> <param-value> FILTER_CACHE, ETL_PROCESS_TASK, SOURCE_FILTER_REFRESH </param-value </init-param> <init-param> <param-name>MaxParallelTaskCounts</param-name> <param-value> 1, 5, 3 </param-value> </init-param> |
これによりノードは、ひとつのキャッシュフィルター更新タスク、5つのデータトランスフォーメーションタスク、3つのアクセスフィルター更新タスクを同時に実行するように構成されます。
これが、ClusterManagement servletで構成されない場合、ノードはバックグラウンドタスクを実行しません。
タスクタイプ
利用可能なタスクタイプと、その説明です。
タスク名 | 説明 |
REPORT_BROADCAST_BROADCASTTASK | レポートブロードキャスト |
REPORT_BROADCAST_MIREPORTTASK | レポートデータの更新 |
ETL_PROCESS_TASK | データトランスフォーメーション |
FILTER_CACHE | キャッシュフィルターの更新 |
SOURCE_FILTER_REFRESH | アクセスフィルターの更新 |
SOURCE_FILTER_UPDATE_REMINDER | アクセスフィルター更新のリマインダー |
ORGREF_CODE_REFRESH | 参照コードの更新 |
THIRD_PARTY_AUTORUN | サードパーティ製コネクターのデータキャッシュの更新 |
SIGNALS_DCR_TASK | シグナルの事前実行タスク |
SIGNALS_ANALYSIS_TASK | シグナルの解析 |
SIGNALS_CLEANUP_TASK | シグナルの事後実行タスク |
COMPOSITE_VIEW_REFRESH | コンポジットビューのデータ更新 |
こちらは推奨例です。
- システム内で繰り返し実行されるタスクを定義します。
- シグナルやデータトランスフォーメーションなど、高頻度でリソースが集中するタスクのために、ノードを専用化します。
- ノードはコア数に比例して、複数のタスクを並行で実行することができますが、タスクによっては、計算に要する待ち時間の割合が高いものもあり、他のタスクが待機している間に、タスクを実行することもできます。ひとつのノードは、スレッドの総数を微調整するために、アプリケーションをプロファイリングしなくてはいけません。Yellowfinでは、1コア当たり5スレッド以下を推奨しています。この数は、ノード上で実行するよう構成されたタスク間で分割されます。例えば、複数のキャッシュフィルター更新タスクを実行する場合、最大数は「MaxParallelTaskCount」に割り当てられます。
- すべてのバックグラウンドタスクのために生成されるスレッド数は、以下のパラメーターを使用して制御できます。
- TaskSchedulerThreads - すべてのバックグラウンドタスクで利用可能なスレッドの最大数
- TaskSchedulerMaxThreadQueue - 「待機」キュー内のスロット数。待機キュー内のアイテムは、次のサイクルを待つことなく、スレッドが解放されると同時に実行されます。
以下の構成を検討します。
TaskSchedulerThreads = 5
TaskSchedulerMaxThreadQueue = 15
TaskType | MaxParallelTaskCount = FILTER_CACHE | 8
ETL_PROCESS_TASK | 3
...
動的委譲
DYNAMIC、またはREPOSITORYモードでは、バックグラウンドタスクの委譲を動的に実行することができます。バックグラウンドタスクを実行しているノードに障害が発生した場合、タスクは別のノードに委譲されます。
...
language | java |
---|
...
- SIGNALS_ANALYSIS_TASK | 10
ノードは、3つの構成済みタイプのタスクを、並行で5つ実行することができます。
5つのタスクが実行中の場合、次のタスクは「待機」キューに追加されます。タスクの実行が完了するとともに、待機中のタスクの実行が開始されます。
5つのタスクが実行中で、15のタスクがスレッドの解放を待っている場合、次のタスクは却下されます。
理想的には、(TaskSchedulerThreads + TaskSchedulerMaxThreadQueue) = Σ MaxParallelTaskCount になります。
- SIGNALS_ANALYSIS_TASK | 10
シグナルとクラスタリング
SIGNALS_DCR_TASK、SIGNALS_ANALYSIS_TASK、SIGNALS_CLEANUP_TASKのみを実行するノードは、「シグナルノード」としてデザインされます。ノードは、これらのタイプをひとつ以上実行しますが、これ以外のタイプを実行することはありません。クラスタは、ひとつ以上のシグナルノードを持つことができます。シグナルノードには特定のライセンスが必要であり、ウェブリクエストやその他のバックグラウンドタスクの処理に使用することができません。また、シグナルノードは、マスタになることができません。
Code Block | ||||
---|---|---|---|---|
| ||||
<init-param> <param-name>TaskTypes</param-name> <param-value> SIGNALS_DCR_TASK, SIGNALS_ANALYSIS_TASK, SIGNALS_CLEANUP_TASK </param-value </init-param> <init-param> <param-name>AutoTaskDelegation<name>MaxParallelTaskCounts</param-name> <param-value>TRUE< <param-value>2,5,2 </param-value> </init-param> |
...
Section | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
...