Presto学习-presto的安装

时间:2022-06-18 21:54:32

presto是一个SQL on Hadoop 的产品,现在我们了解一下presto的安装过程

我们使用的版本是presto-server-0.187.tar.gz

1、先解压

tar -zxvf presto-server-0.187.tar.gz 

解压以后再目录下面的结构是

[root@druid presto-server-0.187]# ll
total 216
drwxr-xr-x. 3 root root 4096 Oct 20 03:17 bin
drwxr-xr-x. 2 root root 12288 Oct 20 03:17 lib
-rw-r--r--. 1 root root 191539 Oct 20 03:17 NOTICE
drwxr-xr-x. 26 root root 4096 Oct 20 03:17 plugin
-rw-r--r--. 1 root root 119 Oct 20 03:17 README.txt

2、创建目录
在安装目录中创建一个etc目录, 在这个etc目录中放入以下配置文件:
2.1、config.properties :Presto 服务配置
2.2、node.properties :环境变量配置,每个节点特定配置
2.3、jvm.config :Java虚拟机的命令行选项
2.4、log.properties: 允许你根据不同的日志结构设置不同的日志级别
2.5、catalog目录 :每个连接者配置(data sources)

3、每个文件的配置信息
3、1 config.properties 文件修改
包含了Presto server的所有配置信息。 每个Presto server既是一个coordinator也是一个worker。 但是在大型集群中,处于性能考虑,建议单独用一台机器作为 coordinator,一个coordinator的etc/config.properties应该至少包含以下信息:
1. coordinator:指定是否运维Presto实例作为一个coordinator(接收来自客户端的查询情切管理每个查询的执行过程)
2. node-scheduler.include-coordinator:是否允许在coordinator服务中进行调度工作, 对于大型的集群,在一个节点上的Presto server即作为coordinator又作为worke将会降低查询性能。因为如果一个服务器作为worker使用,那么大部分的资源都会被worker占用,那么就不会有足够的资源进行关键任务调度、管理和监控查询执行
3. http-server.http.port:指定HTTP server的端口。Presto 使用 HTTP进行内部和外部的所有通讯
4. task.max-memory=1GB:一个单独的任务使用的最大内存 (一个查询计划的某个执行部分会在一个特定的节点上执行)。 这个配置参数限制的GROUP BY语句中的Group的数目、JOIN关联中的右关联表的大小、ORDER BY语句中的行数和一个窗口函数中处理的行数。 该参数应该根据并发查询的数量和查询的复杂度进行调整。如果该参数设置的太低,很多查询将不能执行;但是如果设置的太高将会导致JVM把内存耗光
5. discovery-server.enabled:Presto 通过Discovery 服务来找到集群中所有的节点。为了能够找到集群中所有的节点,每一个Presto实例都会在启动的时候将自己注册到discovery服务。Presto为了简化部署,并且也不想再增加一个新的服务进程,Presto coordinator 可以运行一个内嵌在coordinator 里面的Discovery 服务。这个内嵌的Discovery 服务和Presto共享HTTP server并且使用同样的端口
6. discovery.uri:Discovery server的URI。由于启用了Presto coordinator内嵌的Discovery 服务,因此这个uri就是Presto coordinator的uri。注意:这个URI一定不能以“/“结尾
我这里一台机器进行测试,那么这一台机器将会即作为coordinator,也作为worker。配置文件将会如下所示
[root@druid etc]# cat config.properties
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8001
query.max-memory=1GB
discovery-server.enabled=true
discovery.uri=http://192.168.18.145:8001

3、2 jvm.config 文件修改
包含一系列在启动JVM的时候需要使用的命令行选项。这份配置文件的格式是:一系列的选项,每行配置一个单独的选项。由于这些选项不在shell命令中使用。 因此即使将每个选项通过空格或者其他的分隔符分开,java程序也不会将这些选项分开,而是作为一个命令行选项处理,信息如下:
[root@druid etc]# cat jvm.config
-server
-Xmx1G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-XX:+HeapDumpOnOutOfMemoryError
-XX:+ExitOnOutOfMemoryError

3、3 log.properties 文件修改
这个配置文件中允许你根据不同的日志结构设置不同的日志级别。每个logger都有一个名字(通常是使用logger的类的全标示类名). Loggers通过名字中的“.“来表示层级和集成关系,信息如下:
[root@druid etc]# cat log.properties
com.facebook.presto=INFO

3、4 node.properties 文件修改
包含针对于每个节点的特定的配置信息。 一个节点就是在一台机器上安装的Presto实例,etc/node.properties配置文件至少包含如下配置信息
1. node.environment: 集群名称, 所有在同一个集群中的Presto节点必须拥有相同的集群名称
2. node.id: 每个Presto节点的唯一标示。每个节点的node.id都必须是唯一的。在Presto进行重启或者升级过程中每个节点的node.id必须保持不变。如果在一个节点上安装多个Presto实例(例如:在同一台机器上安装多个Presto节点),那么每个Presto节点必须拥有唯一的node.id
3. node.data-dir: 数据存储目录的位置(操作系统上的路径), Presto将会把日期和数据存储在这个目录下
[root@druid etc]# cat node.properties
node.environment=presto1
node.id=presto1
node.data-dir=/opt/presto/data

3、5 catalog 目录增加文件
配置catalog目录下面的文件
通过在etc/catalog目录下创建catalog属性文件来完成catalogs的注册。 例如:可以先创建一个etc/catalog/hive.properties文件,文件中的内容如下,完成在hive上挂载一个hiveconnector
[root@druid catalog]# pwd
/opt/presto-server-0.187/etc/catalog
[root@druid catalog]# cat hive.properties
connector.name=hive-hadoop2
hive.metastore.uri=thrift://192.168.18.145:9083

4、运行presto

4、1 在安装目录的bin/launcher文件,就是启动脚本。Presto可以使用如下命令作为一个后台进程启动:
bin/launcher start

4、2 也可以在前台运行, 可查看具体的日志
bin/launcher run

4、3 停止服务进程命令
bin/laucher stop

4、4 查看进程: ps -aux|grep PrestoServer 或 jps

5、使用客户端
1、 下载 presto-cli-0.188-executable.jar:Presto CLI为用户提供了一个用于查询的可交互终端窗口。CLI是一个 可执行 JAR文件, 这也就意味着你可以像UNIX终端窗口一样来使用CL
https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.188/presto-cli-0.188-executable.jar

2、文件下载后, 使用 chmod +x 命令设置可执行权限

这里需要先启动 hive –service metastore

命令:./presto-cli-0.188-executable.jar –server 192.168.18.145:8001 –catalog hive –schema default
下面就是presto的操作了

presto:default> show tables;
Table
-------

test
test1
(2 rows)

Query 20171107_161804_00004_psubf, FINISHED, 1 node
Splits: 18 total, 18 done (100.00%)
0:02 [2 rows, 43B] [0 rows/s, 19B/s]

presto:default> select * from test1;
id
----

0
(1 row)

Query 20171107_161812_00005_psubf, FINISHED, 1 node
Splits: 17 total, 17 done (100.00%)
0:03 [1 rows, 2B] [0 rows/s, 0B/s]

6、可以使用quit退出