Presto安装
1、下载
1 | wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/<VERSION>/presto-server-<VERSION>.tar.gz |
2、解压
1 | tar -zxvf presto-server-<VERSION>.tar.gz -C /usr/local |
创建数据目录和解压目录
Presto配置
在安装目录里创建etc目录。etc目录中会有以下配置:
- 节点属性(Node Properties):每个节点的环境配置
- JVM配置(JVM Config):Java虚拟机的命令行选项
- 配置属性(Config Properties):Presto server的配置
- Catalog属性(Catalog Properties):配置数据源Connector
节点属性(Node Properties)
节点属性文件etc/node.properties,包含每个节点的配置。一个节点是一个Presto实例。这文件一般是在Presto第一次安装时创建的。以下是最小配置:
1 | node.environment=production |
node.environment:环境名字,Presto集群中的节点的环境名称都必须一样。
node.id:唯一标识,每个节点的标识都必须是唯一的。就算重启或者升级都必须保持原来的标识。
node.data-dir:数据目录,Presto用来存放日志及其他数据。
JVM配置(JVM Config)
JVM配置文件etc/jvm.config,包含启动Java虚拟机时的命令行选项。格式是每一行是一个命令行选项。此文件数据是由shell解析,所以选项中包含空格或特殊字符会被忽略。
以下是参考配置:
1 | -server |
因为OutOfMemoryError会导致JVM存在不一致状态,所以用heap dump来debug,来找出进程为什么崩溃的原因。
配置属性(Config Properties)
配置属性文件etc/config.properties,包含Presto Server配置。Presto server可以同时为coordinator和worker,但一个大集群里最好就是只指定一台机器为coordinator。
以下是参考coordinator的最小配置:
1 | coordinator=true |
以下是参考worker的最小配置:
1 | coordinator=false |
如果适用于测试目的,需要将一台机器同时配置为coordinator和worker,则使用以下配置:
1 | coordinator=true |
coordinator: 是否运行该实例为coordinator(接受client的查询和管理查询执行)。
node-scheduler.include-coordinator:coordinator是否也作为work。对于大型集群来说,在coordinator里做worker的工作会影响查询性能。
http-server.http.port:指定HTTP端口。Presto使用HTTP来与外部和内部进行交流。
query.max-memory:查询能用到的最大总内存
query.max-memory-per-node:查询能用到的最大单结点内存
discovery-server.enabled:Presto使用Discovery服务去找到集群中的所有结点。每个Presto实例在启动时都会在Discovery服务里注册。这样可以简化部署,不需要额外的服务,Presto的coordinator内置一个Discovery服务。也是使用HTTP端口。
discovery.uri:Discovery服务的URI。将example.net:8080替换为coordinator的host和端口。这个URI不能以斜杠结尾,这个错误需特别注意,不然会报404错误。
另外还有以下属性:
jmx.rmiregistry.port: 指定JMX RMI的注册。JMX client可以连接此端口
jmx.rmiserver.port: 指定JXM RMI的服务器。可通过JMX监听。
Catalog属性(Catalog Properties)
Presto通过connector访问数据。而connector是挂载(mount)在catelog中。connector支持catelog里所有的schema和table。举个例子,Hive connector映射每个Hive数据库到schema,因此Hive connector挂载在hive catelog(所以可以把catelog理解为目录,挂载),而且Hive包含table clicks在数据库web,所以这个table在Presto是hive.web.clicks。
Catalog的注册是通过etc/catalog目录下的catalog属性文件。例如,创建etc/catalog/jmx.properties,将jmxconnector挂载在jmx catelog:
1 | connector.name=jmx |
hive的注册,创建etc/catalog/hive.properties,参考最小配置如下:
1 | connector.name=hive-hadoop2 |
运行Presto
启动命令:
1 | bin/launcher start |
日志在var/log目录下:
launcher.log:记录服务初始化情况和一些JVM的诊断。
server.log:Presto的主要日志文件。会自动被压缩。
http-request.log:记录HTTP请求。会自动被压缩。
运行Presto命令行界面
- 下载 presto-cli-
-executable.jar - 修改名字 presto-cli-
-executable.jar为 presto - 修改执行权限chmod +x
- 运行
1 | ./presto --server localhost:8080 --catalog hive --schema default |