Presto入门简介(含和Hive对比)

2024-02-26 11:38
文章标签 入门 简介 hive 对比 presto

本文主要是介绍Presto入门简介(含和Hive对比),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、简介

Presto是由Facebook开发的,是一个运行在多台服务器上的分布式查询引擎,本身并不存储数据,但是可以接入多种数据源(Hive、Oracle、MySql、Kafka、Redis等),并且支持跨数据源的级联查询,比如:
select * from a join b where a.id=b.id;,其中表a可以来自Hive,表b可以来自Mysql。

优势(相对于Hive):
Presto是一个低延迟高并发的内存计算引擎,相比Hive,执行效率要高很多。
Presto以分析师的需求作为目标,他们期望响应时间小于1秒到几分钟。 Presto终结了数据分析的两难选择,要么使用速度快的昂贵的商业方案,要么使用消耗大量硬件的慢速的“免费”方案。
那么,为什么presto查询速度比Hive快?
Presto是常驻任务,接受请求立即执行,全内存并行计算;hive需要用yarn做资源调度,接受查询需要先申请资源,启动进程,并且采用mapreduce计算模型,中间结果会经过磁盘。

基础概念:
catalogs -> 数据源,配置的数据仓库名称,不同的数据连接如:hive、mysql
schemas -> 相当于数据库 database
tables -> 表 tables

接入方式:
Presto的接入方式有多种:presto-cli,pyhive,jdbc,http,golang,SQLAlchemy,PHP等,其中presto-cli命令行模式是Presto官方提供的,以此为例:
./presto-cli.jar --server 服务IP:端口 --catalog hive --user xxxx --source 'pf=adhoc;client=cli
 

二、安装及结构

完整安装包括一个coordinator和多个worker。 由客户端提交查询,从Presto命令行CLI提交到coordinator。 coordinator进行解析,分析并执行查询计划,然后分发处理队列到worker。
查询原理:完全基于内存的并行计算;流水线;本地化计算;动态编译执行。

由于 Presto 的数据源具有完全解耦、高性能,以及对 ANSI SQL 的支持等特性(包括联合查询、左右联接、子查询以及一些聚合和计算函数),使得 Presto 在 ETL、实时数据计算、 Ad-Hoc 查询和实时数据流分析等多个业务场景中均能发挥重要的作用。
由于 Presto 卓越的性能表现,使得 Presto 可以弥补 Hive 无法满足的实时计算空白,因此可以将 Presto 与 Hive 配合使用:对于海量数据的批处理和计算由 Hive 来完成;对于大量数据(单次计算扫描数据量级在 GB 到 TB)的计算由 Presto 完成。

三、 常用业务场景

1、基于 T+1 数据的实时计算 
在这种业务场景中,用户并不要求基准数据的实时更新,但是要求每次查询数据都能够快速响应。需要 Presto 和 Hive 配合使用来满足实际的业务需求。每天凌晨通过azkaban 调度 Hive 脚本,根据前一天的数据计算生成中间结果表,生成完毕之后使用 Presto 查询中间结果表,得出用户最终所需要的数据。满足该业务场景的解决方案如下图:

2、基于 RDBMS 的实时计算 
在这种业务场景中,用户要求查询的数据完全实时,即只要业务库中的数据发生改变,通过 Presto 查询的时候,就可以查询到刚刚改变之后的数据。要达到这个效果,我们需要使用合理的机制保证数据实时同步,因此我们使用数据库复制技术,为线上的业务数据库建立实时同步的从库,然后用 Presto 查询数据库中的数据,进而进行计算(请注意:使用官方的 Presto 直接读取数据库的性能还太低,因此建议使用JD-Presto 中的 PDBO 从数据库中读取数据并进行计算)。满足该业务场景的解决方案如下图:

 

这篇关于Presto入门简介(含和Hive对比)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/748744

相关文章

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

Java中的Opencv简介与开发环境部署方法

《Java中的Opencv简介与开发环境部署方法》OpenCV是一个开源的计算机视觉和图像处理库,提供了丰富的图像处理算法和工具,它支持多种图像处理和计算机视觉算法,可以用于物体识别与跟踪、图像分割与... 目录1.Opencv简介Opencv的应用2.Java使用OpenCV进行图像操作opencv安装j

锐捷和腾达哪个好? 两个品牌路由器对比分析

《锐捷和腾达哪个好?两个品牌路由器对比分析》在选择路由器时,Tenda和锐捷都是备受关注的品牌,各自有独特的产品特点和市场定位,选择哪个品牌的路由器更合适,实际上取决于你的具体需求和使用场景,我们从... 在选购路由器时,锐捷和腾达都是市场上备受关注的品牌,但它们的定位和特点却有所不同。锐捷更偏向企业级和专

什么是 Ubuntu LTS?Ubuntu LTS和普通版本区别对比

《什么是UbuntuLTS?UbuntuLTS和普通版本区别对比》UbuntuLTS是Ubuntu操作系统的一个特殊版本,旨在提供更长时间的支持和稳定性,与常规的Ubuntu版本相比,LTS版... 如果你正打算安装 Ubuntu 系统,可能会被「LTS 版本」和「普通版本」给搞得一头雾水吧?尤其是对于刚入

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

数论入门整理(updating)

一、gcd lcm 基础中的基础,一般用来处理计算第一步什么的,分数化简之类。 LL gcd(LL a, LL b) { return b ? gcd(b, a % b) : a; } <pre name="code" class="cpp">LL lcm(LL a, LL b){LL c = gcd(a, b);return a / c * b;} 例题:

ASIO网络调试助手之一:简介

多年前,写过几篇《Boost.Asio C++网络编程》的学习文章,一直没机会实践。最近项目中用到了Asio,于是抽空写了个网络调试助手。 开发环境: Win10 Qt5.12.6 + Asio(standalone) + spdlog 支持协议: UDP + TCP Client + TCP Server 独立的Asio(http://www.think-async.com)只包含了头文件,不依

Java 创建图形用户界面(GUI)入门指南(Swing库 JFrame 类)概述

概述 基本概念 Java Swing 的架构 Java Swing 是一个为 Java 设计的 GUI 工具包,是 JAVA 基础类的一部分,基于 Java AWT 构建,提供了一系列轻量级、可定制的图形用户界面(GUI)组件。 与 AWT 相比,Swing 提供了许多比 AWT 更好的屏幕显示元素,更加灵活和可定制,具有更好的跨平台性能。 组件和容器 Java Swing 提供了许多

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联