Presto的单节点和多节点配置

近期在测试机上搭了一套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路径中。

要下载的软件有两个:

  1. Presto server 0.52
  2. 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进行了部署,我说一下这三台机器承担的主要角色吧:

  1. vm1:Presto Coordinator & Worker,Discovery Server,HDFS NameNode,HDFS DataNode,HDFS Balancer,Hive Metastore Server,Hive Gateway,Impala deamon,Impala StateStore Daemon,JobTracker,TaskTracker
  2. vm2:Presto Worker,HDFS DataNode,HDFS Gateway,Hive Gateway,Impala deamon,TaskTracker
  3. 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各个服务器上的配置注意事项有:

  1. node.id务必配置正确,各个服务器要不一样的node.id,可以在每个服务器上使用uuidgen命令生成一个id。
  2. 各个Presto服务的config.properties配置文件中,discovery.uri参数必须都指向discovery服务的地址。
  3. 原来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!!!


Data Warehouse For Ever原创文章,转载请注明出处

  1. presto-metastore.db.type=h2
    presto-metastore.db.filename=var/db/MetaStore

    这个是要装h2吗,其他数据库行不行

  2. 不用装,这个h2就是本地的一个文件,Presto用H2具体要做什么,听说仍在开发中。

  3. hello ,能否贴一下Discovery Service的config.properties,我部署过程中碰到点问题,谢谢了

  4. $ more config.properties
    http-server.http.port=8411

Leave a Comment


NOTE - You can use these HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>