Presto 安装配置

Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto基于内存并行计算,减少了磁盘IO,查询速度快;能够连接多个数据源,实现跨数据源的连表查询。

1. 版本选取

Presto 分为 prestosql 和 prestodb 两个版本线,其中 prestosql 是由开源社区进行维护的,版本更新比较快;prestodb 是由 Facebook 进行更新维护。
下载地址可以参考:
https://repo1.maven.org/maven2/com/facebook/presto/presto-server/
https://repo1.maven.org/maven2/com/facebook/presto/presto-cli

2. 安装

下载之后进行解压安装:
Presto Server:

tar -xvzf presto-server-0.221.tar.gz -C /opt
 ln -s /opt/presto-server-0.221 /opt/prestoPresto Cli:
 cp ~/downloads/presto-cli-0.221-executable.jar ${PRESTO_HOME}/bin/presto
 chmod +x /opt/presto/bin/presto

3. 配置

配置文件在目录${PRESTO_HOME}/etc/下,注意配置修改后需要同步到所有的 Presto 节点上:

3.1 config.properties:presto服务配置

Coordinator节点配置:

query.max-memory=12GB
 node-scheduler.include-coordinator=false
 query.max-memory-per-node=1GB
 http-server.http.port=8880
 discovery.uri=http://localhost:8880
 coordinator=true
 discovery-server.enabled=true

worker节点配置

query.max-memory=12GB
 node-scheduler.include-coordinator=false
 query.max-memory-per-node=1GB
 http-server.http.port=8880
 discovery.uri=http://localhost:8880
 coordinator=false

配置说明:
query.max-memory: 单个查询能用到分布在所有相关节点上的内存之和的最大值
node-scheduler.include-coordinator:coordinator是否也作为work。对于大型集群来说,在coordinator里做worker的工作会影响查询性能。
query.max-memory-per-node: 查询能用到的最大单结点内存
query.max-total-memory-per-node: 包括运行时系统内存的查询单节点最大可用总内存
http-server.http.port:指定HTTP端口。Presto使用HTTP来与外部和内部进行交流。
coordinator: 是否运行该实例为coordinator(接受client的查询和管理查询执行)。
discovery.uri: Discovery服务的URI,这个URI不能以斜杠结尾,不然会报404错误。
discovery-server.enabled: Presto使用Discovery服务去找到集群中的所有结点

3.2 node.properties: 每个节点特定配置

3.3 jvm.properties: java虚拟机的命令行选项

3.4 log.properties: 输出的日志级别

<配置2.1~2.4 参考:https://prestodb.io/docs/current/installation/deployment.html>

3.5 catalog目录:每个连接数据源配置

3.5.1 hive数据源配置:catalog/hive.properties
connector.name=hive-hadoop2
 hive.metastore.uri=
 hive.config.resources=
 hive.recursive-directories=true
 hive.allow-drop-table=true
 hive.parquet.use-column-names=true

配置说明: 参考:https://prestodb.io/docs/current/connector/hive.html
hive.recursive-directories:是否自动查询下级目录,对分区表该选型必须设置为true
hive.allow-drop-table:是否允许删除数据表
hive.parquet.use-column-names:对PARQUET文件,根据列名对应查找数据,不必保持表列名顺序与PARQUET文件一致。

3.5.2 MySQL数据源配置:catalog/mysql.properties
"connector.name=mysql
 connection-url=jdbc:mysql://...:3306
 connection-user=***
 connection-password=*****

配置说明: 参考:https://prestodb.io/docs/current/connector/mysql.html
connection-url:MySQL的host地址和端口信息
connection-user:MySQL的用户名
connection-password:MySQL的登录密码

4. 重启 Presto

修改配置文件之后,需要重新启动PrestoServer才能使配置生效
重启服务命令:service presto restart
成功启动后使用jps命令,可以看到进程:PrestoServer
日志信息见目录:/var/log/presto/ (配置项:node.properties 中 node.data-dir)

5. Presto Cli使用

通过Presto-cli连接PrestoServer:

5.1 指定连接hive数据源,default数据库

/opt/presto/bin/presto --server localhost:8880 --catalog hive --schema default

5.2 指定连接mysql数据源,testdb数据库

/opt/presto/bin/presto --server localhost:8880 --catalog mysql --schema testdb

5.3 混合数据源连接

/opt/presto/bin/presto --server localhost:8880 --catalog system --schema runtime

注意:混合数据源在SQL命令中需要加入前缀: 数据源.数据库
用来指定访问的数据表,如: mysql.testdb.testtable


参考: https://prestosql.io/docs/current/index.html