Preston 官网:http://prestodb.io/
JDK 版本:1.8
ps: 本测试将presto的coordinator和worker都部署在一个节点上。
2.1 下载presto(版本0.221)压缩包并解压
下载地址:https://prestodb.github.io/download.html
下载最新版本即可
tar -xf presto-server-0.221.tar.gz
进入plugin目录,查看支持的插件,:
2.2 配置presto
在安装目录下创建etc文件夹
在etc下创建:node.properties,jvm.config,log.properties,config.properties和catalog文件
2.2.1 配置node.properties
node.environment=test
node.id=ffffffff-ffff-ffff-ffff-ffffffffffff
node.data-dir=/opt/local/presto-server-0.221/data
参数说明:
2.2.2 配置jvm.config
-server
-Xmx4G
-XX:+UseConcMarkSweepGC
-XX:+ExplicitGCInvokesConcurrent
-XX:+AggressiveOpts
-XX:+HeapDumpOnOutOfMemoryError
-XX:OnOutOfMemoryError=kill -9 %p
2.2.3 配置config.properties
coordinator=true
node-scheduler.include-coordinator=true
http-server.http.port=8001
task.max-memory=1GB
discovery-server.enabled=true
discovery.uri=http://10.0.18.12:8001
注意:新版本task.max-memory 改成query.max-memory
参数说明:
coordinator:Presto 实例是否以 coordinator 对外提供服务
node-scheduler.include-coordinator:是否允许在 coordinator 上进行调度任务
http-server.http.port:HTTP 服务的端口
task.max-memory=1GB:每一个任务(对应一个节点上的一个查询计划)所能使用的最大内存
discovery-server.enabled:是否使用 Discovery service 发现集群中的每一个节点。
discovery.uri:Discovery server 的 url
2.2.4 配置log.properties
com.facebook.presto=INFO
设置某一个 java 包的日志等级
2.2.5 关于 Catalog 的配置(与kafka连接配置)
首先在etc下面建立catalog文件夹,然后在catalog文件夹中新建kafka.properties文件,
catalog文件夹,该文件夹就相当于一个数据库实例,所有的数据库连接都放在该文件夹下
配置如下:
connector.name=kafka
kafka.table-names=table1,table2
kafka.nodes=web-3:9092,web-4:9092,web-5:9092
进入presto安装目录bin下面,利用help命令可以查看launcher的详细用法
launcher --help
以后台方式启动presto
launcher start
一般启动方式,且输出并打印日志
launcher run
停止presto
launcher stop
下载Presto CLI
wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.221/presto-cli-0.221-executable.jar
将mv presto-cli-0.221-executable.jar重命名为presto
mv presto-cli-0.221-executable.jar presto
将presto添加执行权限
chmod 777 presto
启动presto cli
./presto --server localhost:8001 --catalog kafka --schema default
执行show tables,如下
解决方案:检查presto是否启动,一般情况为presto没有启动
解决方案:在config.properties中设置node-scheduler.include-coordinator=true
解决方案:kafka.properties配置文件没有放在catalog文件夹中
首先在etc下面建立catalog文件夹,然后在catalog文件夹中新建mysql.properties文件,
这里的mysql.properties文件名可以取其他名字,比如:Mymysql.properties,但是properties尾缀一定要是这个。以后进行多数据源查询时,字段全名是:文件名.主题名.表名,比如:查表aa:Mymysql.datacube.aa
配置如下:
connector.name=mysql
connection-url=jdbc:mysql://10.0.18.13:3306
connection-user=root
connection-password=HWW123_yu@qing
配置解释:
connector.name:他是数据库连接池的名字,需要按固定要求填写,mysql就写mysql,这样PrestoDB内部会根据这个连接名匹配 相应数据库驱动。
connection-url:写的是数据源的url地址,注意不同的数据源,这个url是不一样的,如果不按照规则写将会导致启动PrestoDB失败,或者查询不到信息爆:Query failed (#20190402_122809_00002_c3a4r): Driver returned null connection之类的错误.mysql
数据库在写url时不写主题名,只写 jdbc:mysql://192.168.1.200:3306 就好,写了会报错。
connection-user:数据源的用户名
connection-password:数据源密码
启动presto cli
./presto --server localhost:8001 --catalog mysql --schema test