Presto 0.299 配置文件详解

详解 Presto 0.299 的 etc 目录全部配置文件:node.properties(节点属性)、jvm.config(JVM 参数含 JDK17 attach 必配)、config.properties(coordinator/worker/单节点多套参数表)、log.properties(日志级别)、catalog 目录(jmx/tpch/tpcds 实测连接器 + mysql/postgresql/hive 示例连接器)。全部基于 0.299 集群/单节点实测。

PrestoPresto配置详解参数调优集群Ubuntu 22.04大数据数据仓库OLAP大数据与计算引擎查询引擎2026/10/02

Presto 0.299 配置文件详解

目标:详解 Presto 0.299 的 etc 目录全部配置文件。安装目录下需手动创建 etc 目录,其下包含 node.properties(节点属性)、jvm.config(JVM 参数)、config.properties(服务器核心配置)、log.properties(日志级别)、catalog/(连接器/数据源配置)。以下均基于 0.299 的 3 节点集群与单节点实测。

配置目录总览

presto-server-0.299/
└── etc/
    ├── node.properties      # 节点属性(每个节点独立)
    ├── jvm.config           # JVM 启动命令行参数
    ├── config.properties    # Presto Server 核心配置
    ├── log.properties       # 日志级别(默认 com.facebook.presto: INFO)
    └── catalog/
        ├── jmx.properties
        ├── tpch.properties
        ├── tpcds.properties
        ├── mysql.properties      # 示例:MySQL 连接器
        ├── postgresql.properties # 示例:PostgreSQL 连接器
        └── hive.properties       # 示例:Hive 连接器

一、node.properties —— 节点属性

每个节点独立,Presto 首次安装时创建,至少包含 3 项:

参数说明实测值
node.environment集群名,同一集群所有节点必须一致;显示在 Web UI 右上角presto
node.id每节点的唯一标识,重启/升级保持稳定,多实例各写唯一值presto-coordinator
node.data-dir数据/日志存储目录(建议放安装目录外)/opt/data/presto/data
node.environment=presto
node.id=presto-coordinator
node.data-dir=/opt/data/presto/data

二、jvm.config —— JVM 参数

启动 JVM 时使用的命令行选项,一行一个。OutOfMemoryError 会使 JVM 进入不一致状态,故用 HeapDump + ExitOnOutOfMemoryError 强制终止。内存按机器 free -g 酌情设置。

-server
-Xmx3G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
-XX:ReservedCodeCacheSize=256M
-Djdk.attach.allowAttachSelf=true
参数作用
-Xmx最大堆内存(worker 一般 2-4G,coordinator 依调度负载可更大)
-XX:+UseG1GC使用 G1 垃圾回收器(Presto 推荐)
-XX:G1HeapRegionSize=32MG1 堆分区大小
-XX:+HeapDumpOnOutOfMemoryErrorOOM 时 dump 堆
-XX:+ExitOnOutOfMemoryErrorOOM 时强制终止进程
-Djdk.attach.allowAttachSelf=trueJDK17 必配:允许 Attach API 自连接,不配则启动报 Can not attach to current VM

三、config.properties —— 服务器核心配置

3.1 集群 coordinator(不兼 worker,生产推荐)

coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8080
query.max-memory=5GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://10.0.0.21:8080

3.2 集群 worker

coordinator=false
http-server.http.port=8080
query.max-memory=5GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=1GB
discovery.uri=http://10.0.0.21:8080

3.3 单节点(测试/开发)

coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=5GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://10.0.0.24:8080

3.4 参数说明

参数含义
coordinator本实例是否作为 coordinator(接收客户端查询并调度执行)
node-scheduler.include-coordinatorcoordinator 是否同时承担 worker 调度。大集群设 false 以保协调资源
http-server.http.portHTTP 端口,Presto 内外部通讯均走 HTTP
query.max-memory单个查询可用最大内存
query.max-memory-per-node单节点上单个查询可用内存上限
query.max-total-memory-per-node单节点上查询用户+系统总内存上限(须 < -Xmx 减去 headroom)
discovery-server.enabled是否内嵌 Discovery 服务(coordinator 设为 true,用于节点注册发现)
discovery.uriDiscovery 服务地址,即 coordinator 地址,不能以 / 结尾
scheduler.http-client.*调度器 HTTP 请求/空闲超时(大集群建议 10m)
task.max-worker-threads每节点任务工作线程数

⚠️ 内存校验:query.max-total-memory-per-node + heap headroom(约 30% 堆)必须小于 -Xmx,否则启动报 Invalid memory configuration。

四、log.properties —— 日志级别

类似 Java 日志级别:INFO / DEBUG / ERROR / WARN。

com.facebook.presto=INFO

改成 DEBUG 可输出更细日志排查连接器问题,需重启生效。

五、catalog/ —— 连接器配置(数据源)

Presto 通过 connector 访问数据源,connector 挂载在 catalog 上。在 etc/catalog/<name>.properties 注册后,<name> 即成为 catalog 名,可用 catalog.schema.table 访问。

5.1 jmx(实测)

cat > etc/catalog/jmx.properties <<'EOF'
connector.name=jmx
EOF

jmx catalog 暴露 current / history 等 schema,可查 JVM/MBean。实测 SHOW TABLES FROM jmx.current 返回 374 张表;查询各节点 JVM:

SELECT node, vmname, uptime FROM jmx.current."java.lang:type=runtime";
presto-worker2      OpenJDK 64-Bit Server VM     363523
presto-worker1      OpenJDK 64-Bit Server VM     363698
presto-coordinator  OpenJDK 64-Bit Server VM     615311

5.2 tpch / tpcds(实测,自包含基准数据)

echo 'connector.name=tpch' > etc/catalog/tpch.properties
echo 'connector.name=tpcds' > etc/catalog/tpcds.properties

无需外部数据源即可生成基准数据,实测:

SELECT count(*) FROM tpch.sf1.orders;      -- 1500000
SELECT count(*) FROM tpch.sf1.lineitem;    -- 6001215

5.3 mysql(示例)

cat > etc/catalog/mysql.properties <<'EOF'
connector.name=mysql
connection-url=jdbc:mysql://192.168.100.10:3306
connection-user=root
connection-password=q1w2e3r4
EOF

5.4 postgresql(示例)

cat > etc/catalog/postgresql.properties <<'EOF'
connector.name=postgresql
connection-url=jdbc:postgresql://192.168.100.11:5432/example
connection-user=example
connection-password=q1w2e3r4
EOF

5.5 hive(示例,需连接 Hive Metastore 与 HDFS)

cat > etc/catalog/hive.properties <<'EOF'
connector.name=hive-hadoop2
hive.metastore.uri=thrift://192.168.100.12:9083
hive.config.resources=/etc/hadoop/conf/core-site.xml,/etc/hadoop/conf/hdfs-site.xml
hive.allow-drop-table=true
hive.storage-format=ORC
hive.max-partitions-per-writers=1000
EOF

hive.metastore.uri 与 Hive hive-site.xml 的 metastore 地址、端口(默认 9083)对应。

注意事项

  • 修改 jvm.config / config.properties / 新增 catalog 文件后均需重启生效:systemctl restart presto
  • 新增 catalog 文件后重启即可生效,无需改动其它文件
  • node.environment、node.id 修改需节点一致性校验
  • discovery.uri 使用 coordinator 的 IP/域名,集群内必须可达

参考链接


本文档由 www.quzuo.net 平台开发

Presto 0.299 配置文件详解 - Quzuo