はじめに
複数ノード構成時のアーキテクチャについてご紹介します。Verticaはマスターノードが不要
Verticaでは複数ノード構成時に「マスターノード」という概念が存在しません。このため、全てのノードはクライアントからの接続を受け付けることができます。Verticaのノードは、イニシエータとエグゼキュータという役割に分かれます。
クラスタを構成するすべてのノードは、イニシエータおよびエグゼキュータのどちらにもなり得ます。
イニシエータ…クライアントからのクエリを受け付けるノード
エグゼキュータ…実際にクエリを処理するノード
これを踏まえ、Verticaが接続要求を受けたときの処理の流れ(図1)をご覧ください。
図1:クライアントからの接続要求のイメージ図
※クリックすると拡大表示できます
※クリックすると拡大表示できます
<大まかな処理ステップ>
①クライアントからクエリが実行されると、
接続を受け付けたノードがイニシエータとなります。
②各エグゼキュータに処理命令を送ります。
③エグゼキュータは受け取った処理命令を実行し、
結果をイニシエータに返します。
④最後にイニシエータは結果を集計し、
クライアントに結果セットを返します。
接続を受け付けたノードがイニシエータとなります。
②各エグゼキュータに処理命令を送ります。
③エグゼキュータは受け取った処理命令を実行し、
結果をイニシエータに返します。
④最後にイニシエータは結果を集計し、
クライアントに結果セットを返します。
他の製品とのMPPアーキテクチャの違い
他の製品ではマスターノードが存在するため、同時実行性が低くパフォーマンス面でボトルネックになる傾向があります。しかしVerticaの場合には、マスターノードが無いため、任意の1ノードに接続後にイニシエーターが処理をコントロールします。他の製品とのMassively Parallel Processor(MPP)を比較したのが以下の図です。
図2:MPP構成の比較
※クリックすると拡大表示できます
※クリックすると拡大表示できます
どのノードもエグゼキュータになることができるVerticaでは、特定のノードが処理のボトルネックになりにくいため、他製品と比べて高い同時実行性を誇ります。
参考
以下の記事では、複数ノード構成のメリットについてご紹介しています。合わせてご確認ください。Verticaノードのクラスタ
http://vertica-tech.ashisuto.co.jp/node_cluster/
ロードバランスの概要
http://vertica-tech.ashisuto.co.jp/load-balance/
検証バージョンについて
この記事の内容はVertica 9.2で確認しています。更新履歴
2019/04/14 検証バージョンを9.2に変更2015/08/18 本記事を公開