presto的安装与部署(对接kafka)

Preston 官网:http://prestodb.io/

Preston Github 主页:https://github.com/facebook/presto

一 安装环境

操作系统:CenteOs 6.6 
JDK 版本:1.8
ps: 本测试将presto的coordinator和worker都部署在一个节点上。

二 安装Presto

2.1 下载presto(版本0.1.0.5)压缩包并解压
[java] view plain copy
  1. wget https://repo1.maven.org/maven2/com/facebook/presto/presto-server/0.105/presto-server-0.105.tar.gz   
[java] view plain copy
  1. tar -xf presto-server-0.105.tar.gz  
进入plugin目录,查看支持的插件,这里主要测试kafka
presto的安装与部署(对接kafka)
2.2 配置presto
在安装目录下创建etc文件夹
presto的安装与部署(对接kafka)
2.2.1 配置node.properties
[java] view plain copy
  1. node.environment=test  
  2. node.id=ffffffff-ffff-ffff-ffff-ffffffffffff  
  3. node.data-dir=/var/presto/data  

参数说明:

  • node.environment:环境名称。一个集群节点中的所有节点的名称应该保持一致。
  • node.id:节点唯一标识的名称。
  • node.data-dir:数据和日志存放路径
2.2.2 配置jvm.config
[java] view plain copy
  1. -server  
  2. -Xmx4G  
  3. -XX:+UseConcMarkSweepGC  
  4. -XX:+ExplicitGCInvokesConcurrent  
  5. -XX:+AggressiveOpts  
  6. -XX:+HeapDumpOnOutOfMemoryError  
  7. -XX:OnOutOfMemoryError=kill -9 %p  
2.2.3 配置config.properties 
[java] view plain copy
  1. coordinator=true  
  2. node-scheduler.include-coordinator=false  
  3. http-server.http.port=8001  
  4. task.max-memory=1GB  
  5. discovery-server.enabled=true  
  6. discovery.uri=http://10.199.xxx.xx:8001  

参数说明:

  • 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
[java] view plain copy
  1. com.facebook.presto=INFO  
设置某一个 java 包的日志等级
2.2.5 关于 Catalog 的配置(与kafka连接配置)
首先在etc下面建立catalog文件夹,新建kafka.properties文件,配置如下:
[java] view plain copy
  1. connector.name=kafka  
  2. kafka.table-names=table1,table2  
  3. kafka.nodes=host1:port,host2:port  
具体配置参考http://prestodb-china.com/docs/current/connector/kafka.html

三 启动Presto


进入presto安装目录bin下面,利用help命令可以查看launcher的详细用法
[java] view plain copy
  1. launcher --help  
以后台方式启动presto
[java] view plain copy
  1. launcher start  
一般启动方式,且输出并打印日志
[java] view plain copy
  1. launcher run  
停止presto
[java] view plain copy
  1. launcher stop  


四 测试Presto CLI


下载Presto CLI
[java] view plain copy
  1. wget https://repo1.maven.org/maven2/com/facebook/presto/presto-cli/0.100/presto-cli-0.100-executable.jar  
mv presto-cli-0.100-executable.jar重命名为presto
[java] view plain copy
  1. mv presto-cli-0.100-executable.jar presto  
将presto添加执行权限
[java] view plain copy
  1. chmod 777 presto  
启动presto cli
[java] view plain copy
  1. ./presto --server localhost:8001 --catalog kafka --schema default  
执行show tables,如下
presto的安装与部署(对接kafka)

执行完show tables,查看 http://localhost:8001/ 页面:
presto的安装与部署(对接kafka)

五 错误处理

1 server refused connection
presto的安装与部署(对接kafka)
解决方案:检查presto是否启动,一般情况为presto没有启动

No worker nodes available
presto的安装与部署(对接kafka)
解决方案:在config.properties中设置node-scheduler.include-coordinator=true