ES + PrestoDB
主题目的
- Elastic Stack架构概要与应用场景
- PrestoDB架构概要与应用场景
- 搭建PrestoDB运行环境
- ES与Presto混搭使用
Elastic Stack 架构概要


Elastic Stack 应用场景
- 全文检索
- 日志分析
- 指标监控
- 大数据查询/分析/计算
- 数据库查询加速
- 机器学习
ElasticSearch的安装
略,已专门单独总结 ES集群搭建
Head插件谷歌浏览器版本的安装
- 在谷歌浏览器的扩展程序里搜索“ElasticSearch Head”,安装添加插件即可。也可其他方式安装。
- 在浏览器插件程序里点击ElasticSearch Head图标,在打开的页面里对启动的ES进行连接。

DBEAVER 数据库客户端管理器
DBEAVER 下载及安装
DBEAVER连接ES
- 新建连接,找到ES,进行连接配置。如启动ES的虚拟机IP为192.168.173.129。则配置如下:

DBEAVER连接连接presto
- 新建连接,找到prestoDB,进行连接配置,注意用户名默认输入presto。

PrestoDB
PrestoDB说明
- Presto技术栈 PrestoDB 严格意义上不算数据库,因为不存储数据,更是文件查询器,可连接几十种数据源,数据MPP架构。如下图可以从ES中提取数据而不一定是HDFS。
PrestoDB架构概要

PrestoDB核心概念
- coordinator 协调节点
- worker 计算节点
- connector 数据源连接器
- mpp 大规模并行计算执行方式
PrestoDB应用场景
- OLAP分析
- Adhoc查询
- Jdbc轻度并行查询
- 支持多种数据源
presto下载安装:
官网下载:https://prestodb.io/download.html
安装及说明参考:(官网有详细的安装介绍)
https://blog.csdn.net/qq_33884969/article/details/108284558
https://zhuanlan.zhihu.com/p/111054577
准备工作。
CentOS7,JDK8。
创建prestodb文件夹
-
root用户下创建文件夹prestodb,并将prestodb的安装包如presto-server-0.253.tar.gz拖拽至此。 -
解压presto-server-0.253.tar.gz [root@localhost prestodb]
-
将解压后的文件夹改名 [root@localhost prestodb]
-
创建日志文件路径及数据文件路径 [root@localhost prestodb]
[root@localhost prestodb]
-
执行完毕如下:
[root@localhost prestodb]
data-8080 logs-8080 presto-8080 presto-cli-0.253-executable.jar presto-jdbc-0.253.jar presto-server-0.253.tar.gz
此图为讲解时用到,内容仅供参考

PrestoDB配置文件的添加
新建etc文件夹
- 在上一步解压后的文件夹presto-8080下新建etc文件夹
[root@localhost presto-8080]
新建node.properties
- 在etc文件夹下新建node.properties
[root@localhost etc]
node.environment=production
node.id=data-8080
node.data-dir=/prestodb/data-8080
新建jvm.config
[root@localhost etc]
注意 -Xmx的取值等,需时虚拟机配置而定。
-server
-Xmx4G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
-Djdk.attach.allowAttachSelf=true
新建 config.properties
- 在etc文件夹下新建config.properties
[root@localhost etc]
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
query.max-memory=2GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://localhost:8080
PrestoDB的启动
[root@localhost etc]
[root@localhost presto-8080]
bin etc lib NOTICE plugin README.txt
[root@localhost presto-8080]
[root@localhost bin]
- 执行启动命令 ./launcher run --verbose
[root@localhost bin]
http://192.168.173.135:8080/ui/

- 利用DBeaver连接PrestoDB,上面已做介绍


PrestoDB 连接ES
创建catalog文件夹
-
在上一步创建的etc文件夹下创建catalog文件夹 [root@localhost etc]
-
进入catalog目录,配置ES数据源,以为例(其它数据源配置请参考官方文档) 在catalog下创建 elasticsearch-7.11.1.properties [root@localhost catalog]
connector.name=elasticsearch
elasticsearch.host=192.168.173.129
elasticsearch.port=9200
elasticsearch.default-schema-name=default
[root@localhost catalog]
重启PrestoDB
[root@localhost bin]
执行多表查询
可以执行多表查询及字段不再大小写敏感
select a.flightnum, b.flightnum
from
es01.default.kibana_sample_data_flights as a,
es01.default.kibana_sample_data_flights as b

|