安装Presto
1.下载
wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.200/presto-server-0.200.tar.gz |
官网下载最新版本: 点我进入官网下载 ,注意选择presto-server
2.解压
tar -zxvf presto-server-0.200.tar.gz -C /usr/local/ |
/usr/local/presto-server-0.200则为安装目录,另外Presto还需要数据目录,数据目录最好不要在安装目录里面,方便后面Presto的版本升级。
配置Presto
在安装目录里创建etc目录。这目录会有以下配置:
- 结点属性(Node Properties):每个结点的环境配置
- JVM配置(JVM Config):Java虚拟机的命令行选项
- 配置属性(Config Properties):Persto server的配置
- Catelog属性(Catalog Properties):配置Connector(数据源)
结点属性(Node Properties)
结点属性文件etc/node.properties,包含每个结点的配置。一个结点是一个Presto实例。这文件一般是在Presto第一次安装时创建的。以下是最小配置:
production = |
node.environment
: 环境名字,Presto集群中的结点的环境名字都必须是一样的。node.id
: 唯一标识,每个结点的标识都必须是为一的。就算重启或升级Presto都必须还保持原来的标识。node.data-dir
: 数据目录,Presto用它来保存log和其他数据,建议放在自己定义的目录下。
JVM配置(JVM Config)
JVM配置文件etc/jvm.config,包含启动Java虚拟机时的命令行选项。格式是每一行是一个命令行选项。此文件数据是由shell解析,所以选项中包含空格或特殊字符会被忽略。
以下是参考配置:
-server |
注意:如果ExitOnOutOfMemoryError
报错,注释即可
因为OutOfMemoryError
会导致JVM存在不一致状态,所以用heap dump来debug,来找出进程为什么崩溃的原因。
配置属性(Config Properties)
配置属性文件etc/config.properties,包含Presto server的配置。Presto server可以同时为coordinator和worker,但一个大集群里最好就是只指定一台机器为coordinator。
以下是coordinator的最小配置:
coordinator=true |
以下是worker的最小配置:
coordinator=false |
如果适用于测试目的,需要将一台机器同时配置为coordinator和worker,则使用以下配置:
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监听。
详情请查看Resource Groups
Catelog属性(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:
jmx = |
查看Connectors查看更多信息。
启动命令:
start |
日志在val/log目录下:launcher.log
: 记录服务初始化情况和一些JVM的诊断。server.log: Presto
: 的主要日志文件。会自动被压缩。http-request.log
: 记录HTTP请求。会自动被压缩。
配置MySQL Connector
创建etc/catalog/mysql.properties
mysql = |
配置Hive Connector
创建etc/catalog/hive.properties
hive-hadoop2 = |
还可以在jvm.config
中Hadoop的代理用户
hdfs_user = |
运行Presto命令行界面
1.下载 presto-cli-0.200-executable.jar(下载最新版),
2.修改名字 presto-cli-0.200-executable.jar为 presto
3.修改执行权限chmod +x
4.运行
指定catelog
--server localhost:8080 --catalog hive --schema default |
不指定catelog,可在命令行使用多个catalog
--server localhost:8080 |
注意: JDK必须大于jdk-8u151
hive join mysql
select * from hive.default.emp a join mysql.tunan.dept b on a.deptno = b.deptno;
empno | ename | job | jno | date | sal | prize | deptno | deptno | dname | level |
命令帮助: help