0%

Presto-Trial

阅读更多

1 核心概念

组件类型:

  • Coordinator
    • 解析sql
    • 生成查询计划
    • 管理并调度Worker。同时,其自身也可作为Worker
  • Worker
    • Connector中获取数据,并按照执行计划进行计算

presto_architecture

2 部署

一个Presto集群至少包含一个Coordinator和一个Worker,其中Coordinator可以同时作为CoordinatorWorker(生产环境最好不要这样做)

2.1 配置简介

Presto配置相关的目录结构如下:

  • etc/catalog:各个Connector的配置,可以参考Connectors
  • config.properties:核心配置
  • jvm.config:Java虚拟机相关的配置
  • log.properties:日志相关的配置
  • node.properties:节点元数据相关的配置
1
2
3
4
5
6
7
etc
├── catalog
│   └── mysql.properties
├── config.properties
├── jvm.config
├── log.properties
└── node.properties

2.2 部署Coordinator

参考Deploying Presto

2.2.1 config.properties

  • coordinator:必须为true
  • node-scheduler.include-coordinatortrue表示该Coordinator同时也作为Worker,单节点的Presto集群或者测试环境可以配置成true
  • http-server.http.port:监听的http端口,用于节点间交互
  • discovery-server.enabledtrue表示当前节点作为服务发现的server
  • discovery.uri:服务发现的serveruri,一般情况下,用Coordinator作为server,因此,uri通常为http://<coordinator_host>:<coordinator_http-server.http.port>
1
2
3
4
5
6
7
8
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8080
query.max-memory=50GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://example.net:8080

2.2.2 jvm.config

Java虚拟机的配置

1
2
3
4
5
6
7
8
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

2.2.3 log.properties

一般用于配置日志级别

1
com.facebook.presto=INFO

2.2.4 node.properties

  • node.id:每个机器得不一样
  • node.data-dir:数据目录,包括日志以及运行时数据
1
2
3
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/presto/data

2.3 部署Worker

参考Deploying Presto

2.3.1 config.properties

  • coordinator:必须为false
  • http-server.http.port:监听的http端口,用于节点间交互
  • discovery.uri:服务发现的serveruri,一般情况下,用Coordinator作为server,因此,uri通常为http://<coordinator_host>:<coordinator_http-server.http.port>
1
2
3
4
5
6
coordinator=false
http-server.http.port=8080
query.max-memory=50GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery.uri=http://example.net:8080

2.3.2 jvm.config

Java虚拟机的配置

1
2
3
4
5
6
7
8
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

2.3.3 log.properties

一般用于配置日志级别

1
com.facebook.presto=INFO

2.3.4 node.properties

  • node.id:每个机器得不一样
  • node.data-dir:数据目录,包括日志以及运行时数据
1
2
3
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/presto/data

2.4 控制台

直接浏览器访问<coordinator.ip>:<http-server.http.port>即可

2.5 命令行客户端

参考Command Line Interface

  • 下载最新的presto-cli-x.xxx-executable.jar,该jar包可以直接运行
  • 将其重命名为prestomv presto-cli-x.xxx-executable.jar presto
  • ./presto --server <coordinator.ip>:<http-server.http.port> --catalog mysql --schema tpch
    • --catalog指定connector类型
    • --schema指定database