1. Presto 是什么
Facebook presto是什么,继Facebook创建了HIVE神器后的又一以SQL语言作为接口的分布式实时查询引擎,可以对PB级的数据进行快速的交互式查询。它支持标准的ANSI SQL.包含查询,聚合,JOIN以及窗口函数等。除了Facebook这个创造都在使用外,国内像京东,美团等也都有广泛的使用。对于英文不好的同学可以访问由京东创建的这个中文翻译站点:http://prestodb-china.com/,只是这个版本才0.100,现在最新版已到0.156.
2. Presto 结构
Presto同样是需要部署到每一个DataNode上的分布式系统,它包括一个coordinator和多个worker:
- Coordinator: 接入接口,解析SQL语句,生成查询计划,任务分发等。
- Worker:负责与数据的读写交互以及执行查询计划
值得一提的是Presto以插件形式对数据存储层进行了抽象,它叫做连接器,如:Cassandra Connector,Hive Connector,MySQL Connector等,可以看出它不仅默认提供了Hadoop相关组件的连接器,还提供了Mysql, Postgresql等RDBMS的连接器,同时也可以方便的通过自定义连接器开发,达到适用于不同数据存储层的扩展目的。
Presto提供以下几种类型的使用接口:
- Presto命令行
- JDBC驱动
3. Presto安装
Presto只支持Linux系统的部署。它的Worker节点同时也可以作为Coordinator节点,但是Presto建议独立部署Coordinator节点,并采用独立服务器进行部署,避免性能影响。
本文的测试环境为基于CDH 5.5的Hadoop集群环境的安装和测试。Presto 版本:0.152.3. Presto 的安装JDK版本必须要求:1.8. 安全方式为独立Coordinator节点+Worker节点的方式
1. 解压Presto到每一台Worker节点和Coordinator节点
tar -xzvf presto-server-0.152.3.tar.gz
2. 配置node.properties
node.properties包含了Presto的节点配置信息,在解压后目录的 etc/node.properties位置。,如:
node.environment=myprestoproduction #全部相同的集群名字,经测试不能大小写混合
node.id=ffffffff-ffff-ffff-ffff-fffffffffff1 #这个每个presto节点ID都需要不一样,可在后面数字递增
node.data-dir=/usr/local/presto-server-0.152.3/data #presto数据存储目录,放在了解压软件目录下
3. 配置jvm.config
jvm.config这个配置文件通过名字,大家应该知道是配置什么了吧。内容如下:
-server
-Xmx8G
-XX:+UseG1GC
-XX:G1HeapRegionSize=32M
-XX:+UseGCOverheadLimit
-XX:+ExplicitGCInvokesConcurrent
-