一、Presto 概述
1、Presto 简介
Presto 是一个开源的分布式 SQL 查问引擎,实用于交互式剖析查问,数据量反对 GB 到 PB 字节,Presto 尽管具备解析 SQL 的能力,但它并不属于规范的数据库领域。
Presto 反对在线数据查问,包含 Hive,关系数据库以及专有数据存储。一条 Presto 查问能够将多个数据源的数据进行合并,能够逾越整个组织进行剖析,Presto 次要用来解决响应工夫小于 1 秒到几分钟的场景。
2、Presto 架构
Presto 查问引擎是基于 Master-Slave 的架构,运行在多台服务器上的分布式系统,由一个 Coordinator 节点和多个 Worker 节点组成,Coordinator 负责解析 SQL 语句,生成执行打算,散发执行工作给 Worker 节点执行,Worker 节点负责理论执行查问工作。
Coordinator 节点
Coordinator 服务器是用来解析查问语句,执行打算剖析和治理 Presto 的 Worker 结点,跟踪每个 Work 的流动状况并协调查问语句的执行。Coordinator 为每个查问建设模型,模型蕴含多个 Stage,每个 Stage 再转为 Task 散发到不同的 Worker 上执行,协调通信基于 REST-API,Presto 装置必须有一个 Coordinator 节点。
Worker 节点
Worker 负责执行查问工作和解决数据,从 Connector 获取数据,Worker 间会替换两头数据。Coordinator 从 Worker 获取后果并返回最终后果给 Client 端,当 Worker 启动时会播送本人并发现 Coordinator,告知 Coordinator 可用状态,协调通信基于 REST-API,Presto 通常会装置多个 Worker 节点。
数据源适配
Presto 能够适配多种不同的数据源,能够和数据源连贯和交互,Presto 是通过表的齐全限定名解决 table,Catalog 对应类数据源,Schema 对应数据库,Table 对应数据表。
Presto 中解决的最小数据单元是一个 Page 对象,一个 Page 对象蕴含多个 Block 对象,每个 Block 对象是一个字节数组,存储一个字段的若干行,多个 Block 横切的一行是实在的一行数据。
二、Presto 装置
1、安装包治理
[root@hop01 presto]# pwd
/opt/presto
[root@hop01 presto]# ll
presto-cli-0.196-executable.jar
presto-server-0.189.tar.gz
[root@hop01 presto]# tar -zxvf presto-server-0.189.tar.gz
2、配置管理
在 presto 装置目录中创立 etc 文件夹,并增加以下配置信息:
/opt/presto/presto-server-0.189/etc
节点属性
每个节点的特定环境配置:etc/node.properties;
[root@hop01 etc]# vim node.properties
node.environment=production
node.id=presto01
node.data-dir=/opt/presto/data
配置内容:环境名称,惟一 ID,数据目录。
JVM 配置
JVM 的命令行选项,用于启动 Java 虚拟机的命令行选项列表:etc/jvm.config。
[root@hop01 etc]# vim jvm.config
-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
配置属性
Presto 服务器的配置,每个 Presto 服务器都能够充当协调器和工作器,如果独自应用一台机器来执行协调工作能够在更大的集群上提供最佳性能,这里 PrestoServer 既当一个 coordinator 也是一个 worker 节点:etc/config.properties。
[root@hop01 etc]# vim config.properties
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8083
query.max-memory=3GB
query.max-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://hop01:8083
这里 coordinator=true 示意以后 Presto 实例充当协调器角色。
日志配置
[root@hop01 etc]# vim log.properties
com.facebook.presto=INFO
Catalog 属性
/opt/presto/presto-server-0.189/etc/catalog
配置 hive 适配:
[root@hop01 catalog]# vim hive.properties
connector.name=hive-hadoop2
hive.metastore.uri=thrift://192.168.37.133:9083
配置 MySQL 适配:
[root@hop01 catalog]# vim mysql.properties
connector.name=mysql
connection-url=jdbc:mysql://192.168.37.133:3306
connection-user=root
connection-password=123456
3、运行服务
启动命令
[root@hop01 /]# /opt/presto/presto-server-0.189/bin/launcher run
启动日志
这样 presto 就启动胜利了。
三、客户端装置
1、Jar 包治理
[root@hop01 presto-cli]# pwd
/opt/presto/presto-cli
[root@hop01 presto-cli]# ll
presto-cli-0.196-executable.jar
[root@hop01 presto-cli]# mv presto-cli-0.196-executable.jar presto-cli.jar
2、连贯 MySQL
java -jar presto-cli.jar --server ip:9000 --catalog mysql --schema sq_export
四、源代码地址
GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent
浏览标签
【Java 根底】【设计模式】【构造与算法】【Linux 零碎】【数据库】
【分布式架构】【微服务】【大数据组件】【SpringBoot 进阶】【Spring&Boot 根底】
【数据分析】【技术导图】【职场】