学习 Presto(一):Presto 简介

更新至 Presto 313

简介

Presto 是一个开源的分布式 SQL 查询引擎,用于对 GB 到 PB 量级的数据源,进行交互式查询。

官网地址:https://prestosql.io/

与 Presto 相类似的产品有:Apache HiveApache ImpalaClickHouse 等。

Presto 被称为“SQL on Everything”,因为 Presto 通过其 Connector 支持包括 MySQL、Hive、Kafka、Cassandra 和 HBase(通过 Phoenix) 等多种数据源。

京东 JD-Presto 研发团队出版了目前市面上唯一一本关于 Presto 的书籍:《Presto 技术内幕》。

架构

Presto 架构图:

presto_architecture

Presto 采用了主从(Master-Slave)架构:

主节点 Coordinator 的主要职责包括:解析 SQL 语句、生成查询执行计划、管理 Worker 节点等。从节点 Worker 主要职责包括:执行 Task、数据处理等。

部署

在 Presto 根目录创建 etc 目录,创建以下配置文件:

  • node.properties 集群节点配置信息
  • jvm.config JVM 配置信息
  • config.properties Presto Server 配置信息
  • log.properties 日志配置信息(可选)

JDK 配置(可选)

Presto 313 要求 JDK 8u161+ 版本以上,如果集群上 JDK 版本较低,则需要单独为 Presto 准备高版本的的 JDK。

下载 tar.gz JDK 安装包到本地,解压缩。

编辑 bin/launcher 文件,添加如下配置:

export JAVA_HOME=/usr/lib/jdk8  
export PATH=$JAVA_HOME:$PATH  

即可以使用新版本的 JDK。

通用配置

编辑 etc/node.properties 文件:

node.environment=test  
node.id=master  
node.data-dir=/var/lib/presto/data  

node.environment 环境名称,集群中所有节点必须保持一致。

node.id 集群中节点的唯一标识。

node.data-dir 本地数据目录,用于存储数据文件和日志文件。

编辑 etc/jvm.config 文件:

-server
-Xmx16G
-XX:-UseBiasedLocking
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+ExplicitGCInvokesConcurrent
-XX:+ExitOnOutOfMemoryError
-XX:+UseGCOverheadLimit
-XX:+HeapDumpOnOutOfMemoryError
-XX:ReservedCodeCacheSize=512M
-Djdk.nio.maxCachedBufferSize=2000000

以上是官方推荐的配置,可以根据实际情况适当调整。

编辑 etc/log.properties 文件:

io.prestosql=WARN  

Coordinator 节点配置

编辑 etc/config.properties 文件:

coordinator=true  
node-scheduler.include-coordinator=false  
http-server.http.port=8080  
query.max-memory=8GB  
query.max-memory-per-node=4GB  
query.max-total-memory-per-node=4GB  
discovery-server.enabled=true  
discovery.uri=http://master:8080  

coordinatortrue Coordinator 节点;

node-scheduler.include-coordinator 是否允许在 Coordinator 节点上调度任务,开启将影响 Coordinator 节点性能,生产环境建议关闭;

http-server.http.port HTTP 服务监听端口号;

query.max-memory 查询最大内存;

query.max-memory-per-node 单个节点允许使用的最大用户内存;

query.max-total-memory-per-node 单个节点允许使用的最大用户和系统内存;

discovery-server.enabled 是否作为发现服务,Presto 实例启动会将自己注册到发现服务上;

discovery.uri 发现服务地址。

Worker 节点配置

编辑 etc/config.properties 文件:

coordinator=false  
http-server.http.port=8080  
query.max-memory=8GB  
query.max-memory-per-node=4GB  
query.max-total-memory-per-node=4GB  
discovery.uri=http://master:8080  

coordinatorfalse Worker 节点。

启停

启动服务:

bin/launcher start  

前台启动服务,用于调试:

bin/launcher run  

停止服务:

bin/launcher stop  

参考