学习 Presto(一):Presto 简介

简介

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

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

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

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

国外使用 Presto 的公司主要有:Facebook(Creator)、Airbnb、Dropbox 等

国内使用 Presto 公司主要由:京东、美团、唯品会等,京东 JD-Presto 研发团队出版了目前市面上唯一一本关于 Presto 的书籍:《Presto 技术内幕》

Presto 开发非常活跃,版本更新速度较快,本文基于 Presto 0.166

架构

Presto 架构图:

presto_architecture

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

主节点 Presto Coordinator,解析 SQL 语句、生成查询执行计划、管理 Worker 节点等

从节点 Presto Worker,执行 Task、处理数据等

部署

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

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

通用配置

编辑 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:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p

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

编辑 etc/log.properties 文件:

com.facebook.presto=INFO  

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  
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 单个节点最大内存。

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  
discovery.uri=http://master:8080  

coordinatorfalse Worker 节点。

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

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

query.max-memory-per-node 单个节点最大内存。

discovery.uri 发现服务地址。

启停

启动服务:

bin/launcher start  

停止服务:

bin/launcher stop  

参考