Presto-实时数据分析引擎

  • Facebook Presto是以sql语言作为接口的分布式查询引擎,类似Cloudera公司的impala,但presto支持更丰富的数据库查询;
  • Presto支持标准的ANSI SQL包含查询,聚合函数,JSON以及窗口函数;
  • Presto引擎将需要查询的数据加载到服务器内存,对数据库没有侵略性,给数据库压力较小;
  • 一条Presto查询可以将多个数据源的数据进行合并,可以跨越整个组织进行分析;
  • Presto支持大部分关系型数据库以及专有数据存储,包含hive,Cassandra等;
  • Presto也能作为kettle和datax等数据传输工具的输入端;
  • Presto可以作为finereport bi的查询工具;
  • 集群化部署,支持高可用,高并发,线性扩展;

1. 环境准备

1.1. 规划

两台CentOS7.8操作系统:

10.0.10.200 centos-001 coordinator/workers ##主节点也做workers

10.0.10.201 centos-002 workers ##工作节点

1.2. 安装包下载

presto镜像地址:https://repo1.maven.org/maven2/com/facebook/presto/

presto-server-0.275.tar.gz:https:/ /repo1.maven.org/maven2/com/facebook/presto/presto-server/0.275/

presto-cli-0.275-executable.jar:https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.275/

jdk-8u331-linux-x64.tar.gz:https://www.oracle.com/java/technologies/javase/javase8u211-later-archive-downloads.html

1.3. 解压并安装jdk(所有节点)

解压目录:/usr/java/jdk1.8.0_331

## 配置环境变量
vi /etc/profile

## 添加一下内容
# JAVA_HOME
JAVA_HOME=/usr/java/jdk1.8.0_331
JRE_HOME=/usr/java/jdk1.8.0_331/jre
CLASS_PATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH

## 使环境变量生效
source /etc/profile

2. Presto安装

2.1. 解压
# 创建presto目录
mkdir /opt/presto

# 解压
tar -zxvf /opt/software/presto-server-0.275.tar.gz -C /opt/presto/

# 将客户端文件放在bin目录,并重命名
cp presto-cli-0.275-executable.jar /opt/presto/presto-server-0.275/bin/
mv /opt/presto/presto-server-0.275/bin/presto-cli-0.275-executable.jar /opt/presto/presto-server-0.275/bin/presto

# 增加可执行权限
chmod +x /opt/presto/presto-server-0.275/bin/presto
2.2. 配置

1)创建配置文件

# 创建data目录
mkdir -p /opt/presto/data
# 创建配置文件
touch /opt/presto/presto-server-0.275/etc/config.properties
touch /opt/presto/presto-server-0.275/etc/jvm.config
touch /opt/presto/presto-server-0.275/etc/log.properties
touch /opt/presto/presto-server-0.275/etc/node.properties

2)config.properties

coordinator节点:

coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8085
query.max-memory=2GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=1GB
discovery-server.enabled=true
discovery.uri=http://10.0.10.200:8085

workers节点:

coordinator=false
http-server.http.port=8085
query.max-memory=2GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=1GB
discovery.uri=http://10.0.10.200:8085

3)jvm.config(主从节点一致)

-server
-Xmx16G
-XX:-UseBiasedLocking
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+ExplicitGCInvokesConcurrent
-XX:+ExitOnOutOfMemoryError
-XX:+HeapDumpOnOutOfMemoryError
-XX:ReservedCodeCacheSize=512M
-XX:PerMethodRecompilationCutoff=10000
-XX:PerBytecodeRecompilationCutoff=10000
-Djdk.attach.allowAttachSelf=true
-Djdk.nio.maxCachedBufferSize=200000

4)node.properties

coordinator节点:

node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff-001
node.data-dir=/opt/presto/data

workers节点:

node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff-002
node.data-dir=/opt/presto/data

5)log.properties(主从节点一致)

io.trino=INFO
2.3. 配置MySQL连接
# 创建catalog目录
mkdir -p /opt/presto/presto-server-0.275/etc/catalog
# 创建mysql.properties文件
vi /opt/presto/presto-server-0.275/etc/catalog/mysql.properties
connector.name=mysql
connection-url=jdbc:mysql://10.0.10.200:10000?sslMode=REQUIRED&serverTimezone=GMT%2B8&useSSL=false
connection-user=admin
connection-password=******

Presto连接支持7种类型数据库:hive、mysql、oracle、postgresql、SQL server、MongoDB、Kudu。仅限于查询、连接。还支持中间件连接(redis、kafka、Elasticsearch )

具体properties文件的编写可参考官网:https://prestodb.io/docs/current/connector.html

2.4. 复制程序文件到从节点

以上配置完成后,将主节点的/opt/presto文件复制到所有从节点的/opt/presto目录即可,注意修改主从不一致的config.properties和node.properties文件即可

2.5. 启动presto
# 第一次建议调试启动
/opt/presto/presto-server-0.275/bin/launcher --verbose run

# 后台启动(日志在/opt/presto/data/var/log)
/opt/presto/presto-server-0.275/bin/launcher start

# 停止服务
/opt/presto/presto-server-0.275/bin/launcher stop

# 从启
/opt/presto/presto-server-0.275/bin/launcher restart
2.6. 查看presto的web ui页面

地址:http://10.0.10.200:8085/

Presto-实时数据分析引擎_第1张图片

3. 查询

3.1. 启动客户端
# 进入客户端
/opt/presto/presto-server-0.275/bin/presto --server 10.0.10.200:8085
# 查看连接的数据源
show catalogs;
3.2. 查看MySQL中的库表
# 查看所有库
show schemas from mysql;

# 单表查询
select * from mysql.presto.tbl_presto_query_test_20220824 LIMIT 100;

4. 客户端工具连接Presto

4.1. Dbeaver下载安装

github地址:https://github.com/dbeaver/dbeaver

下载地址:https://github.com/dbeaver/dbeaver/releases

4.2. Dbeaver连接Presto

1)新建数据库连接–>SQL–>PrestoDB–>输入以下信息

2)填写连接信息

主机:10.0.10.200

端口:8085
用户名:填任意值即可

密码可不填,如果填写密码,presto就认为是有配置帐号密码了,这时候为了安全就会走SSL认证,但是实际presto没有设置SSL认证,会报错

3)测试连接

如果没有安装驱动的话,这里Dbeaver会自动下载最新的presto jdbc连接驱动,下载完成即可连接成功

Presto-实时数据分析引擎_第2张图片

5. 总结

至此Presto安装完成,后续在工作或者学习中遇到更多问题再更新,如果有什么需要补充的欢迎评论指出!

你可能感兴趣的:(笔记,开发语言,sql,大数据,数据库开发,etl)