Presto Routerのデプロイ

Routerのインストール

Presto Routerのtarball、presto-router-0.289.tar.gzをダウンロードして展開します。tarballには、トップレベルディレクトリが1つ含まれています。 presto-router-0.289、これを *インストール* ディレクトリと呼びます。

Routerは、ログなどを保存するための *データ* ディレクトリが必要です。インストールディレクトリの外部にデータディレクトリを作成することをお勧めします。これにより、Prestoをアップグレードするときに簡単に保存できます。

Routerの設定

インストールディレクトリ内にetcディレクトリを作成します。Prestoのインストールと同様に、これには次の設定が含まれます。

  • ノードプロパティ:各ノードに固有の環境設定

  • JVM設定:Java仮想マシンのコマンドラインオプション

  • 設定プロパティ:Presto Routerの設定

  • Routerプロパティ:Routerを実行するための設定とルール

ノードプロパティ

ノードプロパティファイルetc/node.propertiesは、メインのPrestoサーバーと同じ設定を共有します。詳細はPrestoのデプロイにあります。

JVM設定

JVM設定ファイルetc/jvm.configには、Java仮想マシンの起動に使用されるコマンドラインオプションのリストが含まれています。

etc/jvm.configの例を以下に示します。

-ea
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-Xmx12G

設定プロパティ

設定プロパティファイルetc/config.propertiesには、Presto Router Webサービスの設定が含まれています。

etc/config.propertiesの例を以下に示します。

http-server.http.port=8080
http-server.log.max-history=3
http-server.log.max-size=500MB
router.config-file=etc/router-config.json

Kerberos認証が必要な場合は、次の設定を追加します。

query-tracker.http-client.authentication.enabled=true
query-tracker.http-client.authentication.krb5.name-type=USER_NAME
query-tracker.http-client.authentication.krb5.principal=presto@REMOTE.BIZ
query-tracker.http-client.authentication.krb5.remote-service-name=HTTP/PRESTO@REMOTE.BIZ
query-tracker.http-client.authentication.krb5.service-principal-pattern=PATTERN

Routerプロパティ

Routerプロパティには、Routerを実行するための特定のルールが含まれています。

etc/router-config.jsonの例を以下に示します。

{
  "groups": [
    {
      "name": "all",
      "members": ["http://127.0.0.1:61381", "http://127.0.0.1:61382"],
      "weights": [1, 5]
    }
  ],
  "selectors": [
    {
      "targetGroup": "all"
    }
  ],
  "scheduler": "RANDOM_CHOICE",
  "predictor": "http://127.0.0.1:8000/v1"
}

これらのプロパティについて説明が必要です。

  • groups:Prestoクラスターのグループ。各グループには、必須のnameと必須のmembersが含まれています。各グループには、メンバーのオプションのweightsフィールドを含めることもできます。重みは、重み付きランダム選択など、重みに関連するスケジューリングアルゴリズムに使用されます。

  • selectors:特定のPrestoクラスターを選択するためのセレクター。sourceuserclientTags、およびtargetGroupを許可します。

  • scheduler:Routerサービスで使用されるスケジューラのタイプ。詳細は、Routerスケジューラを参照してください。デフォルトは*RANDOM_CHOICE*です。

  • predictor:クエリ予測子のオプションのURI。 Routerは、スケジューリングのために予測子からクエリリソース使用量情報を取得するためにURIを使用します。デフォルトは*http://127.0.0.1:8000/v1*です。

Routerの実行

インストールディレクトリには、bin/launcherにランチャースクリプトが含まれています。Routerは、次を実行することによりデーモンとして起動できます。

bin/launcher start

または、フォアグラウンドで実行することもできます。ログとその他の出力はstdout / stderrに書き込まれます(daemontoolsなどの監視システムを使用する場合は、両方のストリームをキャプチャする必要があります)。

bin/launcher run