资源规划

组件 bigdata-node1 bigdata-node2 bigdata-node3
OS centos7.6 centos7.6 centos7.6
JDK jvm jvm jvm
Presto N.A N.A PrestoServer/presto-cli/YanagishimaServer

安装介质

官网:https://prestodb.github.io
版本:presto-server-0.219.tar.gz、presto-cli-0.219-executable.jar、yanagishima-18.0.zip
下载:https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.219/presto-server-0.219.tar.gzhttps://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.219/presto-cli-0.219-executable.jarhttps://github.com/yanagishima/yanagishima/archive/18.0.zip

环境准备

安装JDK

参考:《 CentOS7.6-安装JDK-1.8.221

安装Python

Python-2.4+

安装Presto服务端

单机部署

解压

  1. cd /share
  2. wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.219/presto-server-0.219.tar.gz
  3. tar -zxvf presto-server-0.219.tar.gz -C ~/modules/

配置

在安装目录中创建一个目录etc , 加入以下配置:

  1. cd ~/modules/presto-server-0.219
  2. # 数据目录:用于存储日志、本地元数据等的数据目录
  3. mkdir data
  4. # 配置目录
  5. mkdir etc && cd ./etc
  1. 配置etc/node.properties。

节点属性:特定于每个节点的环境配置。

  1. touch node.properties
  2. vi node.properties

内容如下:

  1. # 环境名称(类似于集群名称),群集中的所有Presto节点必须具有相同的环境名称
  2. node.environment=production
  3. # Presto安装的唯一标识符,对于每个节点,这必须是唯一的
  4. node.id=presto1
  5. # 数据目录的位置(文件系统路径)。Presto将在此处存储日志和其他数据
  6. node.data-dir=/home/vagrant/modules/presto-server-0.219/data
  1. 配置etc/jvm.config。

JVM Config:Java虚拟机的命令行选项,包含用于启动Java虚拟机的命令行选项列表。该文件的格式是一个选项列表,每行一个。

  1. touch jvm.config
  2. vi jvm.config

内容如下:

  1. -server
  2. -Xmx16G
  3. -XX:+UseG1GC
  4. -XX:G1HeapRegionSize=32M
  5. -XX:+UseGCOverheadLimit
  6. -XX:+ExplicitGCInvokesConcurrent
  7. -XX:+HeapDumpOnOutOfMemoryError
  8. -XX:+ExitOnOutOfMemoryError
  1. 配置etc/config.properties。

配置属性:Presto服务器的配置,包含Presto服务器的配置。每个Presto服务器都可以充当协调器和工作器,但是专用一台机器来执行协调工作可以在更大的集群上提供最佳性能。

  1. touch config.properties
  2. vi config.properties

内容如下:

  1. coordinator=true
  2. node-scheduler.include-coordinator=true
  3. http-server.http.port=8081
  4. query.max-memory=3GB
  5. query.max-memory-per-node=1GB
  6. query.max-total-memory-per-node=2GB
  7. discovery-server.enabled=true
  8. discovery.uri=http://192.168.0.103:8081

配置解释:

  • coordinator

允许此Presto实例充当协调器(接受来自客户端的查询并管理查询执行)。

  • node-scheduler.include-coordinator

允许在协调器上安排工作。对于较大的集群,协调器上的处理工作可能会影响查询性能,因为计算机的资源不可用于调度,管理和监视查询执行的关键任务。

  • http-server.http.port

指定HTTP服务器的端口。Presto使用HTTP进行内部和外部的所有通信。

  • query.max-memory

查询可能使用的最大分布式内存量。

  • query.max-memory-per-node

查询可在任何一台计算机上使用的最大用户内存量。

  • query.max-total-memory-per-node

查询可在任何一台计算机上使用的最大用户和系统内存量,其中系统内存是读取器,写入程序和网络缓冲区等执行期间使用的内存。

  • discovery-server.enabled

Presto使用Discovery服务查找群集中的所有节点。每个Presto实例都会在启动时使用Discovery服务注册自己。为了简化部署并避免运行其他服务,Presto协调器可以运行Discovery服务的嵌入式版本。它与Presto共享HTTP服务器,因此使用相同的端口。

  • discovery.uri

Discovery服务器的URI。因为我们在Presto协调器中启用了Discovery的嵌入式版本,所以它应该是Presto协调器的URI。替换example.net:8080以匹配Presto协调器的主机和端口。此URI不得以斜杠结尾。

说明:此处为了方便**测试,不考虑性能,只用单节点,即是coordinator也充当worker。同时,**8080端口容易起冲突,将修改为8081。
分布式搭建,请参考官网,并修改相关配置:
https://prestodb.github.io/docs/current/installation/deployment.html

  1. 配置etc/log.properties。

日志级别配置文件,允许为命名的记录器层次结构设置最小日志级别。每个记录器都有一个名称,通常是使用记录器的类的完全限定名称。记录器具有基于名称中的点的层次结构(如Java包)。

  1. touch log.properties
  2. vi log.properties

内容如下:

  1. com.facebook.presto = INFO

连接器

配置多数据源:

  1. mkdir -p ~/modules/presto-server-0.219/etc/catalog

Hive Connector

  1. vi ~/modules/presto-server-0.219/etc/catalog/hive.properties

内容如下:

  1. connector.name=hive-hadoop2
  2. hive.metastore.uri=thrift://192.168.0.101:9083
  3. hive.config.resources=/home/vagrant/modules/hadoop-2.7.2/etc/hadoop/core-site.xml,/home/vagrant/modules/hadoop-2.7.2/etc/hadoop/hdfs-site.xml

MySQL Connector

  1. vi ~/modules/presto-server-0.219/etc/catalog/mysql.properties

内容如下:

  1. connector.name=mysql
  2. connection-url=jdbc:mysql://192.168.0.103:3306?useUnicode=true&characterEncoding=UTF-8&useSSL=false&autoReconnect=true&failOverReadOnly=false
  3. connection-user=root
  4. connection-password=123456

更多关于连接器的配置信息,请参考官网:
https://prestodb.github.io/docs/current/connector.html

启动服务

  1. cd ~/modules/presto-server-0.219
  2. # 前台方式启动
  3. ./bin/launcher run
  4. # 守护进程方式启停
  5. ./bin/launcher start
  6. ./bin/launcher stop
  7. ./bin/launcher kill
  8. ./bin/launcher restart
  9. ./bin/launcher status

验证

  1. # 进程查看
  2. jps
  3. ps -ef | grep presto
  4. # 日志查看
  5. tail -f -n 100 /home/vagrant/modules/presto-server-0.219/data/var/log/http-request.log

集群部署

//TODO

安装Presto CLI

Presto CLI提供了一个基于终端的交互式shell,用于运行查询。CLI是一个自动执行的JAR文件,这意味着它的行为类似于普通的UNIX可执行文件。

  1. cd ~/modules/presto-server-0.219
  2. # 下载介质
  3. wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.219/presto-cli-0.219-executable.jar
  4. # cp /share/presto-cli-0.219-executable.jar ~/modules/presto-server-0.219/
  5. mv presto-cli-0.219-executable.jar presto-cli
  6. # 设置执行权限
  7. chmod +x presto-cli
  • Hive Connector

若连接器使用Hive Connector,则启动Presto CLI之前需要先启动Hive服务。

  1. cd ~/modules/apache-hive-2.3.4-bin
  2. nohup bin/hive --service metastore >/dev/null 2>&1 &

启动Presto CLI:

  1. cd ~/modules/presto-server-0.219
  2. ./presto-cli --server 192.168.0.103:8081 --catalog hive --schema defalut
  3. java -jar presto-cli --server 192.168.0.103:8081 --catalog hive --schema defalut

命令行终端中输入:

  1. show schemas;

如果显示的信息与Hive中的信息一致就可以了,有一点点不同,hivesql中的database,在这里叫schema。所以查看数据库时,就得用show schemas,且查询时每个表必须要加上schema;

  • MySQL Connector

启动Presto CLI:

  1. cd ~/modules/presto-server-0.219
  2. ./presto-cli --server 192.168.0.103:8081 --catalog mysql --schema eagle
  3. java -jar presto-cli --server 192.168.0.103:8081 --catalog mysql --schema eagle

命令行终端中输入:

  1. show tables;

Web UI:http://bigdata-node3:8081

安装Presto可视化客户端

■ yanagishima

解压

  1. cd /share
  2. wget https://github.com/yanagishima/yanagishima/archive/18.0.zip
  3. cp yanagishima-18.0.zip ~/modules/
  4. cd ~/modules
  5. unzip yanagishima-18.0.zip

配置

  1. vi ~/modules/yanagishima-18.0/conf/yanagishima.properties
  • Hive Connector ```shell

    web port

    jetty.port=7080

Hive Connector

presto.datasources=root-presto presto.coordinator.server.root-presto=http://192.168.0.103:8081 catalog.root-presto=hive schema.root-presto=default sql.query.engines=presto auth.mysql-presto=false

默认配置

presto.query.max-run-time-seconds=1800 presto.max-result-file-byte-size=1073741824 select.limit=500 audit.http.header.name=some.auth.header use.audit.http.header.name=false to.values.query.limit=500 check.datasource=false cors.enabled=false

  1. - **MySQL Connector**
  2. ```shell
  3. # web port
  4. jetty.port=7080
  5. # MySQL Connector
  6. presto.datasources=mysql-presto
  7. presto.coordinator.server.mysql-presto=http://192.168.0.103:8081
  8. catalog.mysql-presto=mysql
  9. schema.mysql-presto=eagle
  10. sql.query.engines=presto
  11. auth.mysql-presto=false
  12. # 默认配置
  13. presto.query.max-run-time-seconds=1800
  14. presto.max-result-file-byte-size=1073741824
  15. select.limit=500
  16. audit.http.header.name=some.auth.header
  17. use.audit.http.header.name=false
  18. to.values.query.limit=500
  19. check.datasource=false
  20. cors.enabled=false

启动

  1. cd ~/modules/yanagishima-18.0
  2. nohup bin/yanagishima-start.sh >y.log 2>&1 &

验证

Web UI:http://bigdata-node3:7080

  1. -- 注意:SQL结束不要使用分号(“;”)
  2. show tables
  3. SELECT * FROM mysql.eagle."ke_users" LIMIT 100
  4. SELECT * FROM ke_users

■ DBeaver

1. 新建数据源

image.png

2. 选择向导

image.png

3. 选择连接类型

image.png

4. 连接设置

image.png

5. 验证

进行如上操作直接点击完成即可自动下载jdbc驱动,下载过程可能会失败,多试几次即可,驱动下载完毕即可连接Presto,然后就可以执行查询了。CentOS7_Presto-0.219 - 图5

参考

CSDN:Presto部署安装
https://blog.csdn.net/onionm/article/details/99011996
简书:Presto安装及连接MySQL
https://www.jianshu.com/p/1936d345abac?from=singlemessage