一、框架概述
presto是一款Facebook开源的MPP架构的OLAP查询引擎,可针对不同数据源执行大容量数据集的一款分布式SQL执行引擎。适用于交互式分析查询,数据量支持GB到PB字节
1.清洗的架构,是一个能够独立运行的系统,不依赖于任何其他外部系统。例如调度,presto自身提供了对集群的监控,可以根据监控信息完成调度
2.简单的数据结构,列式存储,逻辑行,大部分数据都可以轻易的转化成presto所需要的这种数据结构
3.丰富的插件接口,完美对接外部存储系统,或者添加自定义的函数
Facebook公司研发了hive,但是hive底层是转换成MR任务,频繁和磁盘打交道,很慢,所以又研发了presto,presto是基于内存的分布式计算引擎,是将SQL转换成task,支持多数据源,处理任意地方的数据,通常会集成hive,使用hive管理元数据
二、框架架构
presto采用典型的master-slave模型,有一个coordinator节点,一个discovery server节点,多个worker节点组成,discovery server通常内嵌于coordinator节点中
1.coordinator(master)负责meta管理,worker管理,query的解析和调度
2.worker则负责计算和读写
3.discovery server,通常内嵌于coordinator节点中,也可以单独部署,用于节点心跳
三、数据模型
采取三层表结构
1.catalog对应某一类数据源,例如hive的数据,或MySQL的数据
2.schema对应MySQL中的数据库
3.table对应MySQL中的表
四、单机版安装
1.下载
SERVER:服务
Master(Coordinator)协调节点
Workers工作节点
COMMAND LINE INTERFACE
JDBC DRIVER
可通过JDBC连接服务,编写DDL、DML及DQL语句,发送执行
2.安装JDK(1.8)
3.解压presto安装包
tar -zxvf presto-server-0.271.tar.gz
ln -s presto-server-0.271 presto
创建配置文件存储目录
mkdir -p /Users/FengZhen/Desktop/Hadoop/presto/presto/etc
4.配置
etc下
4.1 vim config.properties
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8090
query.max-memory=6GB
query.max-memory-per-node=2GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://localhost:8090
4.2 vim jvm.config
-server
-Xmx3G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
4.3 vim node.properties
node.environment=hudipresto
node.id=presto-node1
node.data-dir=/Users/FengZhen/Desktop/Hadoop/presto/presto/data
4.4 配置hive相关
mkdir catalog
vim catalog/hive.properties
connector.name=hive-hadoop2
hive.metastore.uri=thrift://localhost:9083
hive.parquet.use-column-names=true
hive.config.resources=/Users/FengZhen/Desktop/Hadoop/presto/presto/etc/catalog/core-site.xml,/Users/FengZhen/Desktop/Hadoop/presto/presto/etc/catalog/hdfs-site.xml
4.5配置MySQL相关
vim catalog/mysql.properties
connector.name=mysql
connection-url=jdbc:mysql://localhost:3306
connection-user=root
connection-password=1234qwer
5.启动服务
presto/bin/launcher start
进程名:PrestoServer
6.安装Presto CLI命令行客户端
将presto-cli-0.271-executable.jar放到bin目录下
mv presto-cli-0.271-executable.jar presto
chmod +x presto
启动测试
presto --server localhost:8090
MacBook-Pro:bin FengZhen$ ./presto --server localhost:8090
presto> help
Supported commands:
QUIT
EXPLAIN [ ( option [, ...] ) ] <query>
options: FORMAT { TEXT | GRAPHVIZ }
TYPE { LOGICAL | DISTRIBUTED }
DESCRIBE <table>
SHOW COLUMNS FROM <table>
SHOW FUNCTIONS
SHOW CATALOGS [LIKE <pattern>]
SHOW SCHEMAS [FROM <catalog>] [LIKE <pattern>]
SHOW TABLES [FROM <schema>] [LIKE <pattern>]
USE [<catalog>.]<schema>
presto> show catalogs;
Catalog
---------
hive
mysql
system
(3 rows)
Query 20220323_140341_00001_q2hp8, FINISHED, 1 node
Splits: 19 total, 19 done (100.00%)
0:04 [0 rows, 0B] [0 rows/s, 0B/s]
presto> show schemas from hive;
Schema
--------------------
db_hudi
default
information_schema
(3 rows)
Query 20220323_140422_00003_q2hp8, FINISHED, 1 node
Splits: 19 total, 19 done (100.00%)
0:03 [3 rows, 47B] [1 rows/s, 18B/s]