Presto:针对大数据的分布式SQL查询引擎

prestodb

Presto是一个开源分布式SQL查询引擎,支持GB/PB级数据源交互查询分析。Presto针对交互式分析进行了重新设计与开发,在接近商业数据仓库的执行速度的同时,适应了不同规模的组织需要,像是Facebook这样的公司。

主要功能

Presto是一个在集群上运行的分布式系统。完整安装包括一个协调器(coordinator)和多个工作者(worker)。可以通过连接到coordinator的Presto CLI客户端提交查询请求。coordinator会解析、分析并安排查询执行,然后分发给worker处理。

presto-overview

 

系统需求

Presto需要满足以下几个条件:

  • Linux或Mac OS X
  • Java 8,64位
  • Python 2.4+

连接器

Presto提供了插件式连接器进行数据查询,连接器需要满足各自的需求。

HADOOP / HIVE

Presto支持从下列版本的Hadoop读取Hive数据:

  • Apache Hadoop 1.x
  • Apache Hadoop 2.x
  • Cloudera CDH 4
  • Cloudera CDH 5

支持的文件格式有:文本、SequenceFile、RCFile、ORC和Parquet.

除此之外,远程Hive元数据存储(metastore)。Presto不支持本地或嵌入模式,也不需要使用MapReduce,因而只需要HDFS。

CASSANDRA

要求Cassandra 2.x,该连接器与Hive连接器完全独立,只需要安装Cassandra。

TPC-H

TPC-H连接器动态生成Presto的实验与测试数据,该连接器没有外部依赖。

在IDE中使用

概述

第一次构建Presto后,可以将项目加载到IDE中,启动服务器。我们推荐使用IntelliJ IDEA。因为Presto是一个标准的Maven项目,可以通过根 pom.xml 导入IDE。在IntelliJ中,从Quick Start选择Open Project,或者从File菜单选择Open,然后选中根 pom.xml。

在IntelliJ中打开项目后,请确保Java SDK配置正确:

  • 打开 File 菜单,选择 Project Structure
  • 在 SDKs 中,确保选中 1.8 JDK (如果没有可以创建一个新项)
  • 在 Project 中,检查 Project language level 设置为8.0,这样Presto就可以使用Java 8中的新特性

Presto自带的示例配置可以适应开发需要。使用下列选项创建一个新配置:

  • Main Class:com.facebook.presto.server.PrestoServer
  • VM选项:-ea -XX:+UseG1GC -XX:G1HeapRegionSize=32M -XX:+UseGCOverheadLimit -XX:+ExplicitGCInvokesConcurrent -Xmx2G -Dconfig=etc/config.properties -Dlog.levels-file=etc/log.properties
  • 工作目录:$MODULE_DIR$
  • 使用模块(module)的classpath:presto-main

工作目录应当是resto-main子目录。在IntelliJ中,默认自动使用$MODULE_DIR$。

除此之外,Hive插件必需配置成你的Hive metastore Thrift服务。在VM参数列表中添加以下内容,把 localhost:9083 替换为正确的服务器端口(如果没有Hive metastore可以使用用下面的参数):

为Hive或HDFS使用SOCKS

如果本地无法使用Hive metastore或HDFS集群,可以通过SSH端口访问。在本地1080端口配置SSH SOCKS动态代理:

在VM参数列表中添加下面信息:

运行CLI

启动CLI连接服务器,执行SQL查询:

在集群上执行查询操作,查看节点信息:

示例配置中,Hive连接器挂载到了Hive目录(catalog),这样可以查询Hive默认数据库中的数据表信息:

部署

参见Presto部署了解更多部署操作指引。

运行查询

部署完成后,可以通过命令行接口查询。

开发资源

开源地址:https://github.com/facebook/presto

打赏支持我整理更多优质资源,谢谢!

打赏编辑

打赏支持我整理更多优质资源,谢谢!

任选一种支付方式

1 收藏

资源整理者简介:唐尤华

唐尤华:我喜欢程序员,他们单纯、固执、容易体会到成就感;面对压力,能够挑灯夜战不眠不休;面对困难,能够迎难而上挑战自我。他们也会感到困惑与傍徨,但每个程序员的心中都有一个比尔盖茨或是乔布斯的梦想“用智慧开创属于自己的事业”。我想说的是,其实我是一个程序员。 个人主页 · 贡献了108个资源 · 17 ·    


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1439 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer