记录过程
这里就不复制粘贴了,描述自己理解的。具体详细的使用和介绍需要去官网学习更好
选择安装服务端版本并下载:https://repo1.maven.org/maven2/com/facebook/presto/presto-server/
选择安装客户端版本并下载:https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/
这里使用presto-server-0.196.tar.gz包来叙述
解压
tar -zxvf presto-server-0.196.tar.gz -C /opt/module/
配置(Presto配置文件需要自己创建)
mkdir etc
cd etc
配置节点属性配置文件vim node.properties
- node.environment: 集群名称。所有在同一个集群中的Presto节点必须拥有相同的集群名称。
- node.id: 每个Presto节点的唯一标示。每个节点的node.id都必须是唯一的。在Presto进行重启或者升级过程中每个节点的node.id必须保持不变。如果在一个节点上安装多个Presto实例(例如:在同一台机器上安装多个Presto节点),那么每个Presto节点必须拥有唯一的node.id。
- node.data-dir: 数据存储目录的位置(操作系统上的路径)。Presto将会把日期和数据存储在这个目录下。
node.environment=production
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/var/presto/data
配置JVM配置 vim jvm.config
-server
-Xmx2G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError
配置Presto的配置文件vim config.properties
一个coordinator的etc/config.properties应该至少包含以下信息
coordinator=true
node-scheduler.include-coordinator=false
http-server.http.port=8080
task.max-memory=1GB
discovery-server.enabled=true
discovery.uri=http://example.net:8080
最基本的worker配置
coordinator=false
http-server.http.port=8080
task.max-memory=1GB
discovery.uri=http://example.net:8080
如果单机配置(一台机器做测试的情况,coordinator和worker同时部署在一台机器上)
如下配置
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8080
task.max-memory=1GB
discovery-server.enabled=true
discovery.uri=http://example.net:8080
对配置项解释如下:
- coordinator:指定是否运维Presto实例作为一个coordinator(接收来自客户端的查询情切管理每个查询的执行过程)。
- node-scheduler.include-coordinator:是否允许在coordinator服务中进行调度工作。对于大型的集群,在一个节点上的Presto server即作为coordinator又作为worke将会降低查询性能。因为如果一个服务器作为worker使用,那么大部分的资源都不会被worker占用,那么就不会有足够的资源进行关键任务调度、管理和监控查询执行。
- http-server.http.port:指定HTTP server的端口。Presto 使用 HTTP进行内部和外部的所有通讯。
- task.max-memory=1GB:一个单独的任务使用的最大内存 (一个查询计划的某个执行部分会在一个特定的节点上执行)。 这个配置参数限制的GROUP BY语句中的Group的数目、JOIN关联中的右关联表的大小、ORDER BY语句中的行数和一个窗口函数中处理的行数。 该参数应该根据并发查询的数量和查询的复杂度进行调整。如果该参数设置的太低,很多查询将不能执行;但是如果设置的太高将会导致JVM把内存耗光。
- discovery-server.enabled:Presto 通过Discovery 服务来找到集群中所有的节点。为了能够找到集群中所有的节点,每一个Presto实例都会在启动的时候将自己注册到discovery服务。Presto为了简化部署,并且也不想再增加一个新的服务进程,Presto coordinator 可以运行一个内嵌在coordinator 里面的Discovery 服务。这个内嵌的Discovery 服务和Presto共享HTTP server并且使用同样的端口。
- discovery.uri:Discovery server的URI。由于启用了Presto coordinator内嵌的Discovery 服务,因此这个uri就是Presto coordinator的uri。修改example.net:8080,根据你的实际环境设置该URI。注意:这个URI一定不能以“/“结尾。
配置日志 vim log.properties
在这个配置文件中允许你根据不同的日志结构设置不同的日志级别。每个logger都有一个名字(通常是使用logger的类的全标示类名). Loggers通过名字中的“.“来表示层级和集成关系。 (像java里面的包). 如下面的log配置信息:
com.facebook.presto=INFO
配置Catalog(Presto的组件,可理解为数据源配置)
先创建在etc目录下创建一个catalog目录,并进入
mkdir catalog
cd catalog
先来个jmx的connector对应的catalog配置文件
vim jmx.properties
connector.name=jmx
此时就已经可以进行测试了,不过数据和文件将都落盘在本地文件系统
后台启动(日志打印在日志文件)
bin/launcher start
前台启动(日志打印在控制台)
bin/launcher run
日志目录:data/var/log
- launcher.log:这个日志文件由launcher创建,并且server的stdout和stderr都被重定向到了这个日志文件中。这份日志文件中只会有很少的信息,包括:
在server日志系统初始化的时候产生的日志和JVM产生的诊断和测试信息。
server.log:这个是Presto使用的主要日志文件。一般情况下,该文件中将会包括server初始化失败时产生的相关信息。这份文件会被自动轮转和压缩。
http-request.log: 这是HTTP请求的日志文件,包括server收到的每个HTTP请求信息,这份文件会被自动轮转和压缩。
下载客户端
https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.196/presto-cli-0.196-executable.jar
重命名为presto
下载的是个jar包,因为Presto本身就是java开发,所以客户端也是个java程序。可以考虑放到/usr/bin/目录下就可以不用配置环境变量直接敲presto
进行使用
mv presto-cli-0.196-executable.jar presto
chmod a+x presto
前提是配置了catalog,也就是jmx.properties.
注意端口号我自己配置的是38080
./presto --server localhost:38080 --catalog jmx
进入后查看所有当前连接器的schema
presto> show schemas;
Schema
--------------------
current
history
information_schema
(3 rows)
Query 20200502_155129_00011_gdck8, FINISHED, 1 node
Splits: 18 total, 18 done (100.00%)
0:00 [3 rows, 47B] [30 rows/s, 485B/s]
选择一个schema,进行查看所有table
presto> use current;
USE
presto:current> show tables;
Table
--------------------------------------------------------------------------------------------------------------------------------------------------
com.facebook.presto.execution.executor:name=multilevelsplitqueue
com.facebook.presto.execution.executor:name=taskexecutor
com.facebook.presto.execution.resourcegroups:name=internalresourcegroupmanager
com.facebook.presto.execution.scheduler:name=nodescheduler
com.facebook.presto.execution.scheduler:name=splitschedulerstats
com.facebook.presto.execution:name=queryexecution
退出 exit
指定数据库连接
./presto --server localhost:38080 --catalog jmx --schema current
配置hive的配置文件hive-site.xml,需要配置HiveServer2、MetaStore服务连接信息
vim /opt/module/hive-1.2.1/conf/hive-site.xml
<property>
<name>hive.metastore.urisname>
<value>thrift://bigdata01:39083value>
property>
启动HiveServer2和MetaStore服务
bin/hive --service hiveserver2 &
bin/hive --service metastore &
可先前台启动即不用加&符号,看是否启动成功
配置Presto的Hive的catalog配置文件:去Presto安装目录下vim etc/catalog/hive.properties
# 这个连接器的选择要根据自身集群情况结合插件包的名字来写
connector.name=hive-hadoop2
# 修改为 hive-metastore 服务所在的主机名称
hive.metastore.uri=thrift://bigdata01:39083
# 如果hive metastore的引用文件存放在一个存在联邦的HDFS上,或者你是通过其他非标准的客户端来访问HDFS集群的,请添加以下配置信息来指向你的HDFS配置文件
hive.config.resources=/opt/module/single-hadoop-2.7.2/etc/hadoop/conf/core-site.xml,/opt/module/single-hadoop-2.7.2/etc/hadoop/conf/hdfs-site.xml
大多数情况下,Presto会在安装过程中自动完成HDFS客户端的配置。 如果确实需要特殊配置,只需要添加一些额外的配置文件,并且需要指定这些新加的配置文件。 建议将配置文件中的配置属性最小化。尽量少添加一些配置属性,因为过多的添加配置属性会引起其他问题
其他更多配置可以去官网查询
客户端连接
./presto --server localhost:38080 --catalog hive
一些简单查询
presto> show schemas;
Schema
--------------------
default
information_schema
(2 rows)
Query 20200502_160615_00017_gdck8, FINISHED, 1 node
Splits: 18 total, 18 done (100.00%)
0:00 [2 rows, 35B] [10 rows/s, 186B/s]
presto> use default;
USE
presto:default> show tables;
Table
-------
a
(1 row)
Query 20200502_160639_00019_gdck8, FINISHED, 1 node
Splits: 18 total, 18 done (100.00%)
0:00 [1 rows, 18B] [5 rows/s, 93B/s]
presto:default> insert into a values(3);
INSERT: 1 row
Query 20200502_160806_00026_gdck8, FINISHED, 1 node
Splits: 35 total, 35 done (100.00%)
0:01 [0 rows, 0B] [0 rows/s, 0B/s]
presto:default> select * from a;
a
---
1
3
2
(3 rows)
Query 20200502_160816_00027_gdck8, FINISHED, 1 node
Splits: 19 total, 19 done (100.00%)
0:00 [3 rows, 66B] [17 rows/s, 375B/s]
--schema schema名称
http://prestodb.jd.com/docs/current/index.html