ES + PrestoDB
主题目的
- Elastic Stack架构概要与应用场景
- PrestoDB架构概要与应用场景
- 搭建PrestoDB运行环境
- ES与Presto混搭使用
Elastic Stack 架构概要
-
Beats以轻量化方式收集、解析和传输数据。
-
Elasticsearch 分布式、RESTful 风格的搜索和分析及存储。
-
Kibana 实现数据可视化。在 Elastic Stack 中进行导航。
-
Logstash 采集、转换、充实,然后输出。
Elastic Stack 应用场景
- 全文检索
- 日志分析
- 指标监控
- 大数据查询/分析/计算
- 数据库查询加速
- 机器学习
ElasticSearch的安装
略,已专门单独总结 ES集群搭建
Head插件谷歌浏览器版本的安装
- 在谷歌浏览器的扩展程序里搜索“ElasticSearch Head”,安装添加插件即可。也可其他方式安装。
- 在浏览器插件程序里点击ElasticSearch Head图标,在打开的页面里对启动的ES进行连接。
DBEAVER 数据库客户端管理器
DBEAVER 下载及安装
-
官网下载最新版本 https://dbeaver.io/
-
绿色版,解压即可,然后点击dbeaver.exe。
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]# tar -zxvf presto-server-0.253.tar.gz
-
将解压后的文件夹改名
[root@localhost prestodb]# mv presto-server-0.253 presto-8080
-
创建日志文件路径及数据文件路径
[root@localhost prestodb]# mkdir data-8080 [root@localhost prestodb]# mkdir logs-8080
-
执行完毕如下:
[root@localhost prestodb]# ls
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]# mkdir etc
新建node.properties
- 在etc文件夹下新建node.properties
[root@localhost etc]# vim node.properties
node.environment=production
node.id=data-8080
#数据目录
node.data-dir=/prestodb/data-8080
新建jvm.config
- 在etc文件夹下新建jvm.config
[root@localhost etc]# vim jvm.config
注意 -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]# config.properties
coordinator=true
#启用内部work职责
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的启动
- 切换到bin目录下
[root@localhost etc]# cd ..
[root@localhost presto-8080]# ls
bin etc lib NOTICE plugin README.txt
[root@localhost presto-8080]# cd bin
[root@localhost bin]#
- 执行启动命令 ./launcher run --verbose
[root@localhost bin]# ./launcher run --verbose
- 启动成功后访问ui地址
http://192.168.173.135:8080/ui/
- 利用DBeaver连接PrestoDB,上面已做介绍
-
执行语句查看系统库下的schema
show schemas from "system"
PrestoDB 连接ES
创建catalog文件夹
-
在上一步创建的etc文件夹下创建catalog文件夹
[root@localhost etc]# mkdir catalog
-
进入catalog目录,配置ES数据源,以为例(其它数据源配置请参考官方文档)
在catalog下创建 elasticsearch-7.11.1.properties
[root@localhost catalog]# vim elasticsearch-7.11.1.properties
connector.name=elasticsearch elasticsearch.host=192.168.173.129 elasticsearch.port=9200 elasticsearch.default-schema-name=default
[root@localhost catalog]# mv elasticsearch-7.11.1.properties es01.properties
重启PrestoDB
[root@localhost bin]# ./launcher run --verbose
执行多表查询
可以执行多表查询及字段不再大小写敏感
select a.flightnum, b.flightnum
from
es01.default.kibana_sample_data_flights as a,
es01.default.kibana_sample_data_flights as b