impala的架构以及查询计划:
impalad :从节点 对应启动一个impala-server的进程 ,主要负责各种查询计划,官方建议与所有的datanode安装在同一台机器上面
impala-statestore : 主节点,状态存储区,主要存储了我们一些查询sql语句的执行情况
impala-catalog:主节点,元数据存储区 建表信息,建库信息,表字段之间的分隔符信息,对应加载hdfs的数据路径信息

impala的查询过程
第一步:客户端提交查询任务,impala的某一个impalad从节点接收到这个请求
第二步:查询对应的表的元数据信息,我们可以找到hdfs对应的文件路径
第三步:生成单机版的查询计划,决定我们如何去查询数据
第四步:单机版的查询计划,分发给其他所有的impalad的节点,一起执行查询
第五步:查询结果汇总

impala的架构分为两个层次
frontend :使用的是java语言来实现的,前台的一些界面,查询计划的生成等等
backend:C++语言开发的,作为底层的查询的执行来起作用

===============================================

impala的架构以及查询计划

Impala的架构模块:

impala-server  ==>启动的守护进程,执行我们的查询计划 从节点,官方建议与所有的datanode装在一起,可以通过hadoop的短路读取特性实现数据的快速查询

impala-statestore  ==》 状态存储区  主节点

impalas-catalog   ==》元数据管理区  主节点

查询执行

impalad分为frontend和backend两个层次, frondend用java实现(通过JNI嵌入impalad), 负责查询计划生成, 而backend用C++实现, 负责查询执行。

frontend生成查询计划分为两个阶段:

(1)生成单机查询计划,单机执行计划与关系数据库执行计划相同,所用查询优化方法也类似。

(2)生成分布式查询计划。 根据单机执行计划, 生成真正可执行的分布式执行计划,降低数据移动, 尽量把数据和计算放在一起。

上图是SQL查询例子, 该SQL的目标是在三表join的基础上算聚集, 并按照聚集列排序取topN。

impala的查询优化器支持代价模型(了解): 利用表和分区的cardinality,每列的distinct值个数等统计数据, impala可估算执行计划代价, 并生成较优的执行计划。 上图左边是frontend查询优化器生成的单机查询计划, 与传统关系数据库不同, 单机查询计划不能直接执行, 必须转换成如图右半部分所示的分布式查询计划。 该分布式查询计划共分成6个segment(图中彩色无边框圆角矩形), 每个segment是可以被单台服务器独立执行的计划子树。

impala支持两种分布式join方式, 表广播和哈希重分布:

表广播方式保持一个表的数据不动, 将另一个表广播到所有相关节点(图中t3);

哈希重分布的原理是根据join字段哈希值重新分布两张表数据(譬如图中t1和t2)。

分布式计划中的聚集函数分拆为两个阶段执行。第一步针对本地数据进行分组聚合(Pre-AGG)以降低数据量, 并进行数据重分步, 第二步, 进一步汇总之前的聚集结果(mergeAgg)计算出最终结果。

与聚集函数类似, topN也是分为两个阶段执行, (1)本地排序取topN,以降低数据量; (2) merge sort得到最终topN结果。

Backend从frontend接收plan segment并执行, 执行性能非常关键,impala采取的查询性能优化措施有向量执行。 一次getNext处理一批记录, 多个操作符可以做pipeline。LLVM编译执行, CPU密集型查询效率提升5倍以上。IO本地化。 利用HDFS short-circuit local read功能,实现本地文件读取Parquet列存,相比其他格式性能最高提升5倍。

第1节 IMPALA:2、架构介绍的更多相关文章

  1. MemSQL分布式架构介绍(二)

    接上次的MemSQL分布式架构介绍(一),原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ 首先上张图,是我 ...

  2. Kafka设计解析(一)Kafka背景及架构介绍

    转载自 技术世界,原文链接 Kafka设计解析(一)- Kafka背景及架构介绍 本文介绍了Kafka的创建背景,设计目标,使用消息系统的优势以及目前流行的消息系统对比.并介绍了Kafka的架构,Pr ...

  3. Kafka剖析:Kafka背景及架构介绍

    <Kafka剖析:Kafka背景及架构介绍> <Kafka设计解析:Kafka High Availability(上)> <Kafka设计解析:Kafka High A ...

  4. Hadoop三种架构介绍及搭建

    apache  hadoop三种架构介绍(standAlone,伪分布,分布式环境介绍以及安装) hadoop 文档 http://hadoop.apache.org/docs/ 1.StandAlo ...

  5. MySQL高级知识- MySQL的架构介绍

    [TOC] 1.MySQL 简介 概述 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不同的表中,而 ...

  6. 从零开始编写自己的C#框架(5)——三层架构介绍

    三层架构对于开发人员来说,已经是司空见惯了,除了大型与超小型项目外,大多都是这种架构来进行开发. 在这里为初学者们简单介绍一下三层架构: (下面内容摘自<趣味理解:三层架构与养猪—<.NE ...

  7. SOA架构介绍和理解

    SOA架构介绍和理解 SOA的正确方法论及目标模型,其实SOA在实现架构落地上,需要考虑到对服务的组合,不断的重用现有的服务,让企业应用可以逐步集成,快速实现业务的迭代. 通过SOA架构分层将服务按照 ...

  8. MemSQL分布式架构介绍(一)

    最近在了解MemSQL架构,看了些官方文档,在这里做个记录,原文在这里:http://docs.memsql.com/latest/concepts/distributed_architecture/ ...

  9. Apache Shiro 使用手册(一)Shiro架构介绍 - kdboy - ITeye技术网站

    转载 原文地址 http://kdboy.iteye.com/blog/1154644 一.什么是Shiro Apache Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理 ...

随机推荐

  1. linux关闭进程

    查看端口对应的pid lsof -i:8888 若要关闭使用这个端口的程序,使用kill + 对应的pid kill -9 PID号

  2. 【LOJ3087】「GXOI / GZOI2019」旅行者

    题意 给定一个 \(n\) 个点 \(m\) 条边的的有向图,给出 \(k\) 个关键点,求关键点两两最短路的最小值. \(n\le 10^5, m\le 5\cdot 10^5\). 题解 二进制分 ...

  3. python-定时任务-apschelduer

    python-定时任务-apschelduer 1.      apscheduler 1.1.    install pip install apscheduler 1.2.    basic co ...

  4. Sonic_cli常用命令

    用户名:admin 密码:YourPaSsWoRd //change password1>admin@sonic:~$ passwdChanging password for admin.(cu ...

  5. Maven笔记一

    简介:什么是maven Maven是一个跨平台的项目管理工具,主要用于基于java平台的项目构建,依赖管理. 如图为项目构建的过程. 解决的项目的问题: 1.  如果有好几个项目,这好几个项目中,需要 ...

  6. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 排版:设定单词首字母大写

    <!DOCTYPE html> <html> <head> <title>菜鸟教程(runoob.com)</title> <meta ...

  7. wikipedia

    1. 维基百科 2. 更多维基项目 3. 有关维基百科的电影列表 4. 维基软件 5. 维基百科相关列表 6. 其他知识分享列表 7. 补充:维基百科使用中好用的关键字 1. 维基百科 https:/ ...

  8. 时间戳转分秒 | 字符串的padStart()和padEnd()

    function _pad(num, n = 2) { let len = num.toString().length while (len < n) { num = '0' + num len ...

  9. Codeforces1300D. Aerodynamic

    本题题目有点绕,结合图例大概可知,P(x,y)是以点给出的一个凸包,T是一个点集合,也构成一个凸包,构成的方法就是将原点(0,0)在P(x,y)的边上跑,移动坐标轴,其构成的最远点是个凸包,我们可以画 ...

  10. Django 学习之用户认证组件auth与User对象

    一.auth模块 from django.contrib import auth django.contrib.auth中提供了许多方法,这里主要介绍其中的三个. 1 .authenticate() ...