部署 Presto 路由器

安裝路由器

下載 Presto 路由器 tarball,presto-router-0.289.tar.gz,並解壓縮它。 tarball 將包含一個單一的頂層目錄 presto-router-0.289,我們將其稱為安裝目錄。

路由器需要一個資料目錄來儲存日誌等。 我們建議在安裝目錄之外建立一個資料目錄,這樣可以在升級 Presto 時輕鬆保存它。

設定路由器

在安裝目錄內建立一個 etc 目錄。 與安裝 Presto 類似,這將保存以下設定

  • 節點屬性:每個節點特定的環境設定

  • JVM 設定:Java 虛擬機的命令行選項

  • 設定屬性:Presto 路由器的設定

  • 路由器屬性:執行路由器的設定和規則

節點屬性

節點屬性檔案 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 路由器網路服務的設定。

以下提供 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

路由器屬性

路由器屬性包含一些執行路由器的特定規則。

以下提供 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 叢集的選擇器。允許 sourceuserclientTagstargetGroup

  • scheduler:路由器服務中使用的排程器類型。詳細資訊請參閱 路由器排程器。預設值為 *RANDOM_CHOICE*。

  • predictor:查詢預測器的可選 URI。路由器使用 URI 從預測器中獲取查詢資源使用資訊以進行排程。預設值為 *http://127.0.0.1:8000/v1*。

執行路由器

安裝目錄在 bin/launcher 中包含啟動器腳本。 可以透過執行以下命令將路由器作為守護程式啟動

bin/launcher start

或者,它可以在前台執行,日誌和其他輸出會寫入 stdout/stderr (如果使用像 daemontools 這樣的監管系統,則應捕獲這兩個串流)

bin/launcher run