presto安装 部署 开发
1. presto简介及架构
1.1. 简介
Presto是一个facebook开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。presto的架构由关系型数据库的架构演化而来。presto之所以能在各个内存计算型数据库中脱颖而出,在于以下几点:
- 清晰的架构,是一个能够独立运行的系统,不依赖于任何其他外部系统。例如调度,presto自身提供了对集群的监控,可以根据监控信息完成调度。
- 简单的数据结构,列式存储,逻辑行,大部分数据都可以轻易的转化成presto所需要的这种数据结构。
- 丰富的插件接口,完美对接外部存储系统,或者添加自定义的函数。
- 用户可以根据presto定义的接口标准,自定义的扩展数据源的查询。例如Hbase的查询。
- 支持sql的混合计算,即同一种数据源的不同库或表,或将多个数据源的数据进行合并
1.2. 架构模型
Presto采用典型的master-slave模型
- coordinator(master)负责meta管理,worker管理,query的解析和调度
是一个中心的查询角色,它主要的一个作用是接受查询请求,将他们转换成各种各样的任务,将任务拆解后分发到多个worker去执行各种任务的节点
1、解析SQL语
2、⽣成执⾏计
3、分发执⾏任务给Worker节点执
- worker则负责计算和读写
是一个真正的计算的节点,执行任务的节点,它接收到task后,就会到对应的数据源里面,去把数据提取出来,提取方式是通过各种各样的connector:
1、负责实际执⾏查询任务
- discovery server, 通常内嵌于coordinator节点中,也可以单独部署,用于节点心跳
是将coordinator和woker结合到一起的服务:
1、Worker节点启动后向Discovery Server服务注册
2、Coordinator从Discovery Server获得Worker节点
1.3. 数据模型
presto采取三层表结构
- catalog 对应某一类数据源,例如hive的数据,或mysql的数据
- schema 对应hive中的数据库
- table 对应hive中的表
查询示例:
presto:default> select * from hive.default.test001
2. presto安装部署
2.1. 下载相关包
在官网上下载所需版本的包
https://repo1.maven.org/maven2/com/facebook/presto/presto-server/
2.2. 解压下载的tar包
mkdir -p /opt/presto/data
tar -xvzf presto-server-0.259.tar.gz -C /opt/presto/
- data 用于存储日志、本地元数据等的数据目录。