Presto知识点总结

一、Presto的概述

1.1 Presto的简介

官网:https://prestodb.io/

Presto是facebook的一个开源,并完全基于内存的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。presto的架构由关系型数据库的架构演化而来。presto之所以能在各个内存计算型数据库中脱颖而出,在于以下几点:

  • 具有良好的清晰的体系架构,是一个能够独立运行的系统,不依赖于任何其他外部系统。

    例如调度,presto自身提供了对集群的监控,可以根据监控信息完成调度。
    
  • 简单的数据结构,列式存储,逻辑行。

    大部分数据都可以轻易的转化成presto所需要的这种数据结构。 
    
  • 丰富的插件接口,完美对接外部存储系统,或者添加自定义的函数。

1.2 Presto支持的数据源

参考官网:https://prestodb.io/docs/current/connector.html#

1)hive源,支持的文件类型如下:

- ORC
- Parquet
- Avro
- RCFile
- SequenceFile
- JSON
- Text

2)开源数据存储系统

MySQL & PostgreSQL,Cassandra,Kafka,Redis

3)其他数据源

MongoDB,ElasticSearch,HBase

1.3 Presto和Hive的比较

hive是一个数据仓库管理工具,是一个交互式比较弱一点的查询引擎,而且只能访问hdfs的数据,底层编译成mr、spark或者tez程序

presto是一个交互式查询引擎,可以在很短的时间内返回查询结果,秒级,分钟级,能访问很多数据源,也不能用于在线事务处理(OLTP)

注意:presto是取代不了hive的,因为presto全部的数据都是在内存中,限制了在内存中的数据集大小,比如多个大表的join,这些大表是不能完全放进内存的

1.4 Presto与Impala的比较

首先你要知道Presto,Impala都属于开源OLAP引擎.

Presto是一个分布式SQL查询引擎,FaceBook于2013年11月份对其进行了开源, 它被设计为用来专门进行高速、实时的数据分析。它支持标准的ANSI SQL,包括复杂查询、聚合(aggregation)、连接(join)和窗口函数(window functions)。Presto 本身并不存储数据,但是可以接入多种数据源,并且支持跨数据源的级联查询。Presto是一个OLAP的工具,擅长对海量数据进行复杂的分析;但是对于OLTP场景,并不是Presto所擅长,所以不要把Presto当做数据库来使用。

Impala是实时交互SQL大数据查询工具,是Google Dremel的开源实现(Apache Drill类似),Cloudera推出的Impala系统,它拥有和Hadoop一样的可扩展性、它提供了类SQL(类Hsql)语法,在多用户场景下也能拥有较高的响应速度和吞吐量。Impala还能够共享Hive Metastore,甚至可以直接使用Hive的JDBC jar和beeline等直接进行查询,并且支持丰富的数据存储格式(Parquet、Avro等)。此外,Impala 通过使用分布式查询引擎(由 Query Planner、Query Coordinator 和 Query Exec Engine 三部分组成),可以直接从 HDFS 或 HBase 中用 SELECT、JOIN 和统计函数查询数据,从而大大降低了延迟。


1. Presto支持标准的ANSI SQL规范,复杂查询、聚合(aggregation)、连接(join)和窗口函数
   Impala的sql和Hive基本一致
2. Presto可连接的数据源更加丰富
   Impala可连接的数据源不多,hive,hdfs,hbase
3. Presto的支持的文件存储格式比较多
   Impala的较少
4. 速度上的比较
   Impala快,但是使用的内存更多,比hive快10多倍
   presto相对较慢,但是使用的内存比Impala少。  比hive快 5~10倍  

所以从整体性能对比看,两者差不多,但是Presto更优.

https://www.zhihu.com/question/391626341

二、Presto的体系架构

2.1 简介与图解

Presto查询引擎是一个master/slaves的主从架构,由一个Coordinator节点和一个Discovery Server节点,多个Worker节点组成,Discovery Server通常内嵌于Coordinator节点中。Coordinator负责解析SQL语句,生成执行计划,分发执行任务给Worker节点执行。Worker节点负责实际执行查询任务。Worker节点启动后向Discovery Server服务注册,Coordinator从Discovery Server获得可以正常工作的Worker节点。如果配置了Hive Connector,需要配置一个Hive Me

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值