はじめに

複数ノード構成時のアーキテクチャについてご紹介します。


Verticaはマスターノードが不要

Verticaでは複数ノード構成時に「マスターノード」という概念が存在しません。このため、全てのノードはクライアントからの接続を受け付けることができます。

Verticaのノードは、イニシエータとエグゼキュータという役割に分かれます。
クラスタを構成するすべてのノードは、イニシエータおよびエグゼキュータのどちらにもなり得ます。

イニシエータ…クライアントからのクエリを受け付けるノード
エグゼキュータ…実際にクエリを処理するノード

これを踏まえ、Verticaが接続要求を受けたときの処理の流れ(図1)をご覧ください。
001_Initiator

図1:クライアントからの接続要求のイメージ図
※クリックすると拡大表示できます



<大まかな処理ステップ>
 ①クライアントからクエリが実行されると、
  接続を受け付けたノードがイニシエータとなります。

 ②各エグゼキュータに処理命令を送ります。

 ③エグゼキュータは受け取った処理命令を実行し、
  結果をイニシエータに返します。

 ④最後にイニシエータは結果を集計し、
  クライアントに結果セットを返します。



他の製品とのMPPアーキテクチャの違い

他の製品ではマスターノードが存在するため、同時実行性が低くパフォーマンス面でボトルネックになる傾向があります。しかしVerticaの場合には、マスターノードが無いため、任意の1ノードに接続後にイニシエーターが処理をコントロールします。

他の製品とのMassively Parallel Processor(MPP)を比較したのが以下の図です。

002_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 本記事を公開