部署 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 路由器 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/[email protected]
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