Presto 安装配置

1.Presto简介:

1.presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。
2.presto的设计和编写完全是为了解决像Facebook这样规模的商业数据仓库的交互式分析和处理速度的问题。
3.主要用来处理秒级查询场景。

下入在官网:
https://prestodb.io/overview.html

presto简介.png

2.Presto 架构

presto架构图.png

详细的架构图


详细架构图.png

3.presto 安装部署

部署规划:

名称 服务器ip 角色
master01 192.168.1.151 Coordinator
master02 192.168.1.152 presto Worker
slave01 192.168.1.153 presto Worker

3.1 需要的文件:

presto-server-0.245.tar.gz 下载地址:;
https://repo1.maven.org/maven2/com/facebook/presto/presto-server/
presto-cli-0.223.1.jar 用更低的版本不要用高版本否则会出现乱码
下载地址:https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/

3.2 下载后上传服务器:

1.presto-server-0.245.tar.gz    presto-cli-0.223.1.jar
2.解压: tar -zxvf  presto-server-0.245.tar.gz
3.在 cd   /home/presto/presto-server-0.245  中创建etc 文件夹  mkdir  etc
4. 在/home/presto/presto-server-0.245/etc 下面创建文件:
5. 创建存储的文件夹:
6. mkdir -p /home/presto/presto-datadir
7.在etc 下面创建三个文件 :
config.properties  jvm.config  log.properties  node.properties

8.编辑文件vim jvm.config

-server
-Xmx16G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
-DHADOOP_USER_NAME=hdfs

9.编辑文件vim config.properties

coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=10008
query.max-memory=50GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
discovery-server.enabled=true
discovery.uri=http://192.168.1.151:10058

  1. 编辑vi log.properties
com.facebook.presto=INFO

11.编辑文件:vi node.properties

node.environment=production
node.id=master01
node.data-dir=/home/presto/presto-datadir
  1. 在/home/presto/presto-server-0.245/etc 下面创建catalog 文件夹 并且创建文件
    创建 hive.properties 并且编辑
[root@master01 etc]# pwd
/home/presto/presto-server-0.245/etc
[root@master01 etc]# cd catalog/
[root@master01 catalog]# ll
总用量 8
-rw-r--r-- 1 root root 181 1月  28 00:45 hive.properties
-rw-r--r-- 1 root root  20 1月  28 00:45 jmx.properties
[root@master01 catalog]# vi hive.properties
connector.name=hive-hadoop2
hive.metastore.uri=thrift://master02.pxx.com:9083
hive.config.resources=/etc/hadoop/3.1.4.0-315/0/core-site.xml,/etc/hadoop/3.1.4.0-315/0/hdfs-site.xml

12.2 在/home/presto/presto-server-0.245/etc/目录下面创建 catalog/ 创建文件 jmx.properties

[root@master01 etc]# pwd
/home/presto/presto-server-0.245/etc
[root@master01 etc]# cd catalog/
[root@master01 catalog]# ll
总用量 8
-rw-r--r-- 1 root root 181 1月  28 00:45 hive.properties
-rw-r--r-- 1 root root  20 1月  28 00:45 jmx.properties
[root@master01 catalog]# vi jmx.properties 

connector.name=jmx

3.3 将该文件分发到其他机器

1.发送master02机器    scp -r /home/presto/presto-server-0.245/ root@master02.com:/home/presto/
2.发送slave01机器  scp -r /home/presto/presto-server-0.245/ root@slave01.com:/home/presto/

3.4 需要 修改的文

3.4.1master02 机器需要修改的第一个文件:

master02 机器需要修改的第一个文件:
在这个路径下面:/home/presto/presto-server-0.245/etc
[root@master02 etc]# ls
catalog  config.properties  jvm.config  log.properties  node.properties
编辑文件 vim node.properties  主要配置node.id 配置不一样
node.environment=production
node.id=master02
node.data-dir=/home/presto/presto-datadir

3.4.2 master02 机器需要修改的第二个文件:

路径:/home/presto/presto-server-0.245/etc/

编辑文件
[root@master02 etc]# vi config.properties
coordinator=false    # 注释掉表示不是coordinator
#node-scheduler.include-coordinator=false  # 注释掉表示不是coordinator
http-server.http.port=10008
query.max-memory=50GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
#discovery-server.enabled=true   #  注释掉
discovery.uri=http://192.168.1.151:10058

3.4.3 Slave01 机器需要修改的第一个文件:提示主要修改id 不能重复

路径: /home/presto/presto-server-0.245/etc
[root@master02 etc]# vi node.properties 
node.environment=production
node.id=master03
node.data-dir=/home/presto/presto-datadir

3.44 Slave01 机器需要修改的第二个文件

路径:/home/presto/presto-server-0.245/etc

  编辑文件
[root@slave01 etc]# vi config.properties
coordinator=false    # 注释掉表示不是coordinator
#node-scheduler.include-coordinator=false  # 注释掉表示不是coordinator
http-server.http.port=10008
query.max-memory=50GB
query.max-memory-per-node=1GB
query.max-total-memory-per-node=2GB
#discovery-server.enabled=true   #  注释掉
discovery.uri=http://192.168.1.151:10058

3.5 首先要启动hive 的Hive Metastore 服务:

 nohup bin/hive --service metastore >/dev/null 2>&1 &

3.6 首先要启动master01,master02,slave01 机器上的presto service 服务

1.后台启动
[root@master01 presto]$ bin/launcher run
[root@master02 presto]$ bin/launcher run
[root@slave01 presto]$ bin/launcher run
2.前台启动
[root@master01 presto]$ bin/launcher start
[root@master02 presto]$ bin/launcher start
[root@slave01 presto]$ bin/launcher start
3. 日志位置:/home/presto/presto-datadir/var/log
4. tail -f  /home/presto/presto-datadir/var/log/server.log

访问服务端:http://192.168.1.151:10058/ui/

presto服务端.png

4. 启动presto client 客户端

4.1 下载客户端 --> presto-cli-0.223.1.jar

1.地址:https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/
2.修改名称
[root@master01 opt]#  mv  presto-cli-0.223.1.jar   prestocli
3.赋值权限
[root@master01 opt]#   chmod +x prestocli
4.启动:prestocli
[root@master01 opt]# ./prestocli --server 192.168.1.151:10058 --catalog hive --schema db_wudl;
presto:db_wudl> show tables;
可以看到你建的表表示成功:

5.遇到的问题:

  启动客户端的时候 会出现乱码情况,原因是客户端的版本太高,可以换成低版本的presto-cli
  错误如下:
presto 报错.png

6. 还会遇到一个错误:

查询的时候会遇到lzo 压缩问题:
错入如下:
Query 20210106_113208_00005_s5r85 failed: Unable to create input format com.hadoop.mapred.DeprecatedLzoTextInputFormat

这时候需要将 hadoop-lzo-0.4.20.jar 加入到presto service 中
hadoop-lzo-0.4.20.jar 下载
路径:/home/presto/presto-server-0.245/plugin/hive-hadoop2
重启服务就可以了


7.presto 的web 安装:

简介:

yanagishima 是presto的一个客户端web工具,目前支持相对较好,部署一下。

7.1 编译过程略

7.2 主要的配置文件

注意:

注意一定要在这个目录下新建一个空的hive_setup_query_your-hive文件

解压:
unzip yanagishima-18.0.zip
vi /opt/software/yanagishima-18.0/conf/yanagishima.properties
# yanagishima web port
jetty.port=38080
# 30 minutes. If presto query exceeds this time, yanagishima cancel the query.
presto.query.max-run-time-seconds=1800
# 1GB. If presto query result file size exceeds this value, yanagishima cancel the query.
presto.max-result-file-byte-size=1073741824
presto.datasources=pxx-presto
auth.your-presto=false
# presto coordinator url
presto.coordinator.server.pxx-presto=http://master01.pxx.com:10008
# almost same as presto coordinator url. If you use reverse proxy, specify it
presto.redirect.server.pxx-presto=http://master01.pxx.com:10008
# presto catalog name
catalog.pxx-presto=hive
# presto schema name
schema.pxx-presto=default
# if query result exceeds this limit, to show rest of result is skipped
select.limit=500
# http header name for audit log
audit.http.header.name=some.auth.header
use.audit.http.header.name=false
# limit to convert from tsv to values query
to.values.query.limit=500
# authorization feature
check.datasource=false
hive.jdbc.url.pxx-hive=jdbc:hive2://master02.pxx.com:10000/default;auth=noSasl
hive.jdbc.user.pxx-hive=hive
hive.jdbc.password.pxx-hive=hive
hive.query.max-run-time-seconds=3600
hive.query.max-run-time-seconds.your-hive=3600
resource.manager.url.pxx-hive=http://master01.pxx.com:8088
sql.query.engines=presto,hive
hive.datasources=your-hive
hive.disallowed.keywords.your-hive=insert,drop
# 1GB. If hive query result file size exceeds this value, yanagishima cancel the query.
hive.max-result-file-byte-size=1073741824
# 注意一定要在这个目录下新建一个空的hive_setup_query_your-hive文件
hive.setup.query.path.your-hive=/opt/software/yanagishima-18.0/conf/hive_setup_query_pxx-hive
cors.enabled=false

7.3 启动停止

启动
nohup bin/yanagishima-start.sh >y.log 2>&1 &
停止:
/opt/software/yanagishima-18.0/bin/yanagishima-shutdown.sh

7.4 web 访问页面:

第一次加载比较慢需要等一会

http://master01.com:38080/
prestoweb.png

推荐阅读更多精彩内容