我的编程空间,编程开发者的网络收藏夹
学习永远不晚

PB级数据分析工具Prestodb怎么用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

PB级数据分析工具Prestodb怎么用

这篇文章给大家介绍PB级数据分析工具Prestodb怎么用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

什么是prestodb

prestodb,是facebook开源的一款sql on hadoop系统,是facebook的工程师对hive的查询速度忍无可忍后,下决心开发的一款高性能查询引擎,基于java8编写,其基于page的pipeline技术,使其具有高效的交互式查询性能,并可以高效的控制GC;而其和底层数据源解耦的特性,使其能够对接各类数据源,并具有跨源查询的特性。目前在国内,有京东、美团、同城以及滴滴等公司对prestodb有深度使用,在国外,除facebook外,还有uber等公司对prestodb有深度使用,而teradata公司则在维护独立的分支,并将其作为自己的主打的即系查询产品的后台。本文介绍prestodb,先主要介绍presto的架构和查询原理,presto的搭建比较简单,大家可以参考官网的文章进行操作。

prestodb整体架构

PB级数据分析工具Prestodb怎么用 
如上图所示,prestodb主要由一个coordinator和多个worker组成,coordinaor节点负责和client对接,接收client发送过来的各类请求(DDL和DML)。coordinator在接收到client的请求后,就开始进行请求的处理,最后把查理结果返回给client。coordinator在进行请求处理时,对各类sql语句进行词法解析、语法分析、语义分析、优化、生成执行计划最后在调度模块进行任务的分发,把子任务分发到各个worker节点。worker节点是实际的执行节点,会执行包括聚合、排序、join以及去重等操作。整体执行流程如下图所示: 
PB级数据分析工具Prestodb怎么用 
其中大多数流程会在后边会进行详细的介绍。

这篇文章的主要目的是入门和普及分布式sql的执行原理,看过一些其他的相关文章,都是从上到下的介绍,个人感觉这样不利于入门,很多人看到执行计划那里就“知难而退”了。所以我在介绍presto时,准备采用从下到上的方式来介绍。

分布式sql说白了也是sql,既然是sql,典型的几个查询语句就是groupby、orderby、join等。本文以groupby为例来进行介绍,orderby和join等的执行流程也会在后续文章中进行介绍。

物理执行计划

物理执行计划是最接近我们理解的一个步骤了,所以这里先来看看presot中得物理执行计划。假设我们有一张订单表,这个订单表的数据分布在两个节点上,node1上的数据分片是: 
PB级数据分析工具Prestodb怎么用 
node2上得数据分片是: 
PB级数据分析工具Prestodb怎么用 
假设我们有这样一个分组聚合查询查询:

      SELECT     sum(totalprice),orderpriorityFROM     orderswhere     custkey<100GROUP BY    orderpriority

这个查询中有过滤(custkey<100),有分组(group by orderpriority),有聚合(sum),是一个非常典型的数据库查询语句。我们先不看presto怎么实现这样的查询,我们可以先自己想想如果我们自己去完成这样的操作我们要怎么做?首先,我们肯定会先从数据源读取数据,但是读到数据并非符合我们的需要,这时我们就需要对数据按照一定的条件进行过滤,过滤完之后的数据就是我们感兴趣的数据;那么过滤完之后留下的数据我们是先聚合还是先分组呢?肯定是先分组了,如果没有分组,聚合也就无从谈起了,因为聚合就是针对一个组内的数据进行的聚合,如果是不同组就没有聚合的必要了。分组的方法很多,可以使用hash的方式完成分组,也可以使用sort的方式完成分组,或者更高级的,如果有倒排索引,组已经就是分好的了,省了很多事情。presto采用hash的方式完成分组。等分组完成后,就可以在一个组内进行聚合操作了,比如进行计数统计、求和或者求平均等。

好了,那么我们看看presot的执行流程(物理执行计划)是否符合我们的预期: 
PB级数据分析工具Prestodb怎么用 
上图所示有三个大的方框,每个方框表示一个presto执行过程中的一个stage(类似spark中的stage,以shuffle操作作为stage的边界),先看标号为3的方框,在这个方框内有三个operator,最下边的是ScanFilterAndProjectOperotor,从名字就可以看出,这个物理操作符的主要任务是扫描、过滤和投影,扫描和过滤后的数据如下: 
PB级数据分析工具Prestodb怎么用 
PB级数据分析工具Prestodb怎么用 
可以看出,custkey大于100的行已经被过滤掉了。这里的投影(project)的意思是把上层operator需要的字段值筛选出来,以上图的sql为例,要帅选的字段包括orderpriority和totalprice,因为这两个字段才是后续的分组和聚合需要的字段,而字段custkey只是起了一个过滤数据的作用,所以在project是不会被向上层传递。所以上层operator接收到的数据如下: 
PB级数据分析工具Prestodb怎么用 
PB级数据分析工具Prestodb怎么用

等数据被发送到上一级的operator后,就要开始进行分组了,这里用到的操作符是HashAggregationOperator,从名字可以看出,这里使用了hash的方式对数据进行了分组,即把具有相同hash值的数据作为一个组,同时在分组完成后进行了聚合操作(Aggregation),注意这里的HashAggregationOperator后跟了一个(partial)关键字,表示这一步的分组和聚合只是完成一个局部的分组聚合,这是因为数据在分布式环境下,一个group的数据可能是存在多个partition下,甚至是跨不同物理机的,所以需要首先完成局部聚合,降低后续要进行shuffle的数据量。这就类似spark中的reduceByKey算子,可以对数据进行map side combine,从而减少shuffle时数据的传输量,而如果使用groupByKey,没有进行map side combine,就会产生大量的数据需要通过网络传输。经过这个局部聚合后的数据如下图所示: 
PB级数据分析工具Prestodb怎么用 
PB级数据分析工具Prestodb怎么用 
其中在node1,有三个分组,分别是high,mid,low,在node2右两个分组,分别是high和low。 
在往上看,操作符是PartitionedOutputOperator,可以看出这是一个分区操作,主要是把上一步聚合分组和聚合的结果根据分组的key(即组名,例如high,low等)进行分区,写到不同的分区文件中(类似spark的shuffle操作中shuffle write)。至此,方框3(stage 3)中的操作完成。

接下来到了stage2 ,在这个stage中,首先要进行的上一个stage最后阶段输出数据的拉取(类似spark中得shuffle read),在presto中对应的操作符是ExchangeOperator,拉取了数据之后,展现给上一层操作符的数据如下: 
PB级数据分析工具Prestodb怎么用 
可以看出,不同节点相同分组key的数据已经被聚合分组在一起了,这时只需要再进行一次聚合操作即可最终的分组聚合操作。在进行分组聚合查询时,经常会使用到hiving这样的操作,而再上一层的FilterAndProject操作就是进行分组聚合结果的过滤和投影,最后把这样的处理结果交给最后一个stage,即stage1,进行结果的输出。

至此,一个典型的group by查询的分布式物理执行计划就按照一定的逻辑执行完成了。从以上这个物理执行流程,我们可以看出presto在进行分布式数据处理时和sparksql有诸多类似的地方,其实不止是和sparksql类似,所有的分布式sql都是遵循这样那个的基本原理。

关于PB级数据分析工具Prestodb怎么用就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

PB级数据分析工具Prestodb怎么用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PB级数据分析工具Prestodb怎么用

这篇文章给大家介绍PB级数据分析工具Prestodb怎么用,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。什么是prestodbprestodb,是facebook开源的一款sql on hadoop系统,是facebo
2023-06-19

linux数据分析工具怎么用

这篇文章主要介绍“linux数据分析工具怎么用”,在日常操作中,相信很多人在linux数据分析工具怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux数据分析工具怎么用”的疑惑有所帮助!接下来,请跟
2023-06-30

Python数据分析常用工具有哪些

Python数据分析常用工具有以下几种:1. NumPy:用于高性能数值计算和数组操作的库。2. Pandas:用于数据分析和数据处理的库,提供了高性能、易于使用的数据结构和数据分析工具。3. Matplotlib:用于绘制二维图形的库,提
2023-10-12

Android性能分析工具TraceView怎么用

要使用TraceView进行Android性能分析,可以按照以下步骤进行操作:在Android Studio中打开项目,并确保已经连接到要分析的设备或模拟器。在项目的代码中选择要进行性能分析的方法或代码段,插入以下代码:Debug.star
2023-10-23

5个常用的大数据可视化分析工具

1. Tableau:Tableau是一款强大的数据可视化工具,可以帮助用户创建交互式和动态的图表、地图和仪表板。它支持多种数据源,可以轻松地连接到各种大数据平台。2. Power BI:Power BI是微软推出的一款商业智能工具,可以将
2023-09-22

Java线程Dump分析工具jstack怎么用

这篇文章主要为大家展示了“Java线程Dump分析工具jstack怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java线程Dump分析工具jstack怎么用”这篇文章吧。jstack用于
2023-05-30

java dump文件分析工具怎么使用

Java dump文件是Java虚拟机在运行过程中生成的一种文件,用于记录Java虚拟机的内存使用情况、线程状态等信息。分析Java dump文件可以帮助定位和解决Java应用程序的性能问题和内存泄漏等问题。以下是使用常见的Java dum
2023-09-13

UAVStack中JVM监控分析工具怎么用

这篇文章主要为大家展示了“UAVStack中JVM监控分析工具怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“UAVStack中JVM监控分析工具怎么用”这篇文章吧。引言作为AllInOne
2023-06-04

Linux系统IO分析工具iotop怎么用

这篇文章给大家分享的是有关Linux系统IO分析工具iotop怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。iotop是linux系统下测试硬盘IO读写的工具,简单的说,iotop是一个用来监视磁盘I/O使
2023-06-27

Python的三大开源数据分析工具是什么

本文小编为大家详细介绍“Python的三大开源数据分析工具是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python的三大开源数据分析工具是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在大数据库领域
2023-06-02

wireshark工具详解、数据包抓取分析、使用教程

Wireshark界面 Wireshark查看数据捕获列表 数据包概要信息窗口:描述每个数据包的基本信息。如图,点击某行数据,即可在下方显示该数据包的信息。 1、数据包解析窗口:显示被选中的数据包的解析信息,包含每个数据包的整体信息、数
2023-08-23

Kubernetes应用性能分析工具Kubectl Flame怎么用

这期内容当中小编将会给大家带来有关Kubernetes应用性能分析工具Kubectl Flame怎么用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。什么是性能分析?性能分析是分析应用程序性能来改进代码质量
2023-06-15

数据包发包工具bittwist怎么用

这篇文章主要介绍数据包发包工具bittwist怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!数据包发包工具bittwist渗透测试中,通过发送特定格式的包,可以实施网络嗅探和攻击。Kali Linux提供一款发
2023-06-04

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录