近期在测试机上搭了一套impala和presto的测试环境,因为presto的文档资料比较少,配置时走过一些弯路,因此将我的配置给大家说一下,希望对想研究presto的同学能有些帮助。
Presto的架构,在官网上有介绍,我将官网的架构图稍微修改了一下,增加了Discovery的服务,这样可能看起来会更清楚一些。

下面分别说一下单节点和多节点的配置。
一、Presto单节点配置
首先,我在我的机器上安装了Cloudera Manger 4,部署了CDH HDFS、Hive和Impala。配置的过程很简单,因为Cloudera Manger还是很强大且方便的。
然后,我在这台单机上部署了Presto的单节点测试环境。
需要注意的是Presto只能支持jdk 1.7,因此必须安装好jdk 1.7,并配置好环境变量PATH和CLASSPATH,保证java 1.7在PATH路径中,保证Presto的lib在CLASSPATH路径中。
要下载的软件有两个:
- Presto server 0.52
- Presto client
进入server的目录,按照官网说明Deploying Presto创建etc文件夹和配置文件,由于是单机同时作为coordinator和workder,因此config.properties配置如下:
coordinator=true
datasources=jmx,hive
http-server.http.port=8080
presto-metastore.db.type=h2
presto-metastore.db.filename=var/db/MetaStore
task.max-memory=1GB
discovery-server.enabled=true
discovery.uri=http://v125203052.bja:8080
因为Presto的coordinator集成了一个简单的discovery服务,其端口号与Presto服务端口号8080一致,因此单节点不需要单独部署Discovery服务。
启动Presto客户端执行查询:
./presto --server v125203052.bja:8080 --catalog hive --schema default
二、Presto多节点配置
我在三台虚拟机上搭建了三个节点的测试环境,使用了Cloudera Manger 4进行了部署,我说一下这三台机器承担的主要角色吧:
- vm1:Presto Coordinator & Worker,Discovery Server,HDFS NameNode,HDFS DataNode,HDFS Balancer,Hive Metastore Server,Hive Gateway,Impala deamon,Impala StateStore Daemon,JobTracker,TaskTracker
- vm2:Presto Worker,HDFS DataNode,HDFS Gateway,Hive Gateway,Impala deamon,TaskTracker
- vm3:Presto Worker,HDFS DataNode,HDFS Gateway,Hive Gateway,Impala deamon,TaskTracker
同样,需要注意的是Presto只能支持jdk 1.7,因此必须安装好jdk 1.7,并配置好环境变量PATH和CLASSPATH,保证java 1.7在PATH路径中,保证Presto和Discovery的lib在CLASSPATH路径中。
在原来的服务器vm1上,还得安装一个Discovery Service,服务的配置与官方保持一致,端口为8411。先启动Discovery服务。
而Presto各个服务器上的配置注意事项有:
- node.id务必配置正确,各个服务器要不一样的node.id,可以在每个服务器上使用uuidgen命令生成一个id。
- 各个Presto服务的config.properties配置文件中,discovery.uri参数必须都指向discovery服务的地址。
- 原来Presto服务的config.properties配置文件中,discovery-server.enabled这一行必须注释掉。
以下是我的三个Presto服务的config.properties配置:
- 1.vm1的config.properties配置:
coordinator=true
datasources=jmx,hive
http-server.http.port=8080
presto-metastore.db.type=h2
presto-metastore.db.filename=var/db/MetaStore
task.max-memory=1GB
discovery.uri=http://v125203052.bja:8411
- 2.vm2和vm3的config.properties配置:
coordinator=false
datasources=jmx,hive
http-server.http.port=8080
presto-metastore.db.type=h2
presto-metastore.db.filename=var/db/MetaStore
task.max-memory=1GB
discovery.uri=http://v125203052.bja:8411
Now you can start the Presto client and execute the query:
./presto --server v125203052.bja:8080 --catalog hive --schema default
The output will be like these:
presto:default> select * from ljp limit 5;
a | b
—+——
0 | test
0 | test
1 | test
0 | test
1 | test
(5 rows)
Query 20131114_061434_00005_qcu94, FINISHED, 3 nodes
Splits: 12 total, 7 done (58.33%)
0:00 [42K rows, 337KB] [109K rows/s, 871KB/s]
And then, congralutions, let’s enjoy the Presto!!!