Gearpump 基本概念

システムのタイムスタンプとアプリケーションのタイムスタンプ

システムのタイムスタンプはバックエンドクラスタシステムの時間を意味します。アプリケーションのタイムスタンプはメッセージが生成された時間を意味します。For example, for IoT edge device, the timestamp at which field sensor device creates a message is type of application timestamp, while the timestamp at which that message get received by the backend is type of system time.

マスターとワーカー

Gearpump はマスター スレーブ構造に従います。各クラスタは1つ以上のマスターノードと幾つかのワーカーノードを含みます。ワーカーノードは1つのマシーン上のローカルリソースの管理に対して責任があり、マスターノードはクラスタ全体の全体的なリソースの管理に対して責任があります。

アクター構造

アプリケーション

アプリケーションは並列したいものであり、クラスタ上で実行されます。アプリケーションには異なる種類があり、例えばMapReduceアプリケーションとストリーミングアプリケーションは異なるタイプのアプリケーションです。Gearpumpは本質的にはストリーミングのタイプのアプリケーションをサポートし、distributedShellのような独自のアプリケーションタイプを生成するために使うことができる幾つかのテンプレートも含んでいます。

AppMaster と Executor

実行時に、各アプリケーションのインスタンスは1つのAppMasterといくつかのexecutorによって表されます。AppMaster はコマンドとアプリケーションインスタンスのコントロールセンターを表します。それはjobを片付けるために、ユーザ、マスター、ワーカーおよびexecutorとやり取りを行います。各 executor は分散型アプリケーションのための並行単位です。一般的にAppMasterとExecutorはワーカーノード上のJVMプロセスとして開始されるでしょう。

アプリケーションのサブミッションフロー

ユーザがアプリケーションをマスターにサブミットする場合、Masterは最初にAppMasterを開始するために利用可能なワーカーを見つけるでしょう。AppMasterが開始した後で、AppMasterはexecutorを開始するためにもっと多くのリソース(worker)をマスターに要求するでしょう。これでExecutorは空の容器になります。executorが開始した後で、AppMasterはexecutorに実際の計算タスクを分散し、それらを並行して実行するでしょう。

アプリケーションをサブミットするために、GearpumpクライアントはDAG内で定義された計算を指定し、これをアクティブなmasterにサブミットします。MasterにSubmitApplicationメッセージが送信され、MasterはこれをAppMasterに転送します。

アプリケーションのサブミット 図: ユーザがアプリケーションをサブミット

AppManagerは利用可能なワーカーを見つけ、ワーカーのサブプロセスのJVM内でAppMasterを起動します。そしてAppMasterはアプリケーション内で定義されたようにDAGを分散するためにリソースの割り当てのためにマスターと交渉するでしょう。そして割り当てられたワーカーはexecutor(新しいJVM)を起動するでしょう。

executorとタスクの起動 図: executorとタスクの起動

ストリーミング のトポロジ、プロセッサ、およびタスク

ストリーミングアプリケーションに関して、各アプリケーションはトポロジーを含みます。これはデータフリーを説明するDAG(有向非循環グラフ)です。DAG内の各ノードはプロセッサです。例えば、単語の数え上げのために二つのプロセッサ、SplitとSum、を含みます。Splitプロセッサは行を単語のリストに分割し、そしてSumプロセッサは各ワードの頻出度を合計します。アプリケーションはプロセッサのDAGです。各プロセッサはメッセージを処理します。

DAG 図: プロセッサ DAG

ストリーミング タスクとパーティショナー

ストリーミングアプリケーション タイプについて、タスクは並行化の最小単位です。実行時に、各プロセッサはタスクのリストに並列化され、異なるタスクは異なるexecutorの中で実行されます。パーティショナーがupstreamプロセッサタスクとdownstreamプロセッサタスクとの間でデータのシャッフルを表示するように定義することができます。

データのシャッフル 図: タスクデータのシャッフル

TOP
inserted by FC2 system