大数据计算引擎:impala对比hive

目录

Impala与Hive的异同

数据存储

元数据

SQL解释处理

执行计划:

数据流:

内存使用:

调度:

容错:

适用面:

Impala相对于Hive所使用的优化技术

Impala的优缺点


Impala与Hive的异同

数据存储

使用相同的存储数据池都支持把数据储于HDFS, HBase。

元数据

两者使用相同的元数据。

SQL解释处理

比较相似都是通过词法分析生成执行计划。

 

执行计划:

Hive: 依赖于MapReduce执行框架,执行计划分成map->shuffle->reduce->map->shuffle->reduce…的模型。如果一个Query会被编译成多轮MapReduce,则会有更多的写中间结果。由于MapReduce执行框架本身的特点,过多的中间过程会增加整个Query的执行时间。

Impala: 把执行计划表现为一棵完整的执行计划树,可以更自然地分发执行计划到各个Impalad执行查询,而不用像Hive那样把它组合成管道型的map->reduce模式,以此保证Impala有更好的并发性和避免不必要的中间sort与shuffle。

 

数据流:

Hive: 采用推的方式,每一个计算节点计算完成后将数据主动推给后续节点。

Impala: 采用拉的方式,后续节点通过getNext主动向前面节点要数据,以此方式数据可以流式的返回给客户端,且只要有1条数据被处理完,就可以立即展现出来,而不用等到全部处理完成,更符合SQL交互式查询使用。

 

内存使用:

Hive: 在执行过程中如果内存放不下所有数据,则会使用外存,以保证Query能顺序执行完。每一轮MapReduce结束,中间结果也会写入HDFS中,同样由于MapReduce执行架构的特性,shuffle过程也会有写本地磁盘的操作。

Impala: 在遇到内存放不下数据时,当前版本1.0.1是直接返回错误,而不会利用外存,以后版本应该会进行改进。这使用得Impala目前处理Query会受到一定的限制,最好还是与Hive配合使用。Impala在多个阶段之间利用网络传输数据,在执行过程不会有写磁盘的操作(insert除外)。


调度:

Hive: 任务调度依赖于Hadoop的调度策略。

Impala: 调度由自己完成,目前只有一种调度器simple-schedule,它会尽量满足数据的局部性,扫描数据的进程尽量靠近数据本身所在的物理机器。调度器目前还比较简单,在SimpleScheduler::GetBackend中可以看到,现在还没有考虑负载,网络IO状况等因素进行调度。但目前Impala已经有对执行过程的性能统计分析,应该以后版本会利用这些统计信息进行调度吧。


容错:

Hive: 依赖于Hadoop的容错能力。

Impala: 在查询过程中,没有容错逻辑,如果在执行过程中发生故障,则直接返回错误(这与Impala的设计有关,因为Impala定位于实时查询,一次查询失败,再查一次就好了,再查一次的成本很低)。但从整体来看,Impala是能很好的容错,所有的Impalad是对等的结构,用户可以向任何一个Impalad提交查询,如果一个Impalad失效,其上正在运行的所有Query都将失败,但用户可以重新提交查询由其它Impalad代替执行,不会影响服务。对于State Store目前只有一个,但当State Store失效,也不会影响服务,每个Impalad都缓存了State Store的信息,只是不能再更新集群状态,有可能会把执行任务分配给已经失效的Impalad执行,导致本次Query失败。


适用面:

Hive: 复杂的批处理查询任务,数据转换任务。

Impala:实时数据分析,因为不支持UDF,能处理的问题域有一定的限制,与Hive配合使用,对Hive的结果数据集进行实时分析。

 

Impala相对于Hive所使用的优化技术

1、没有使用MapReduce进行并行计算,虽然MapReduce是非常好的并行计算框架,但它更多的面向批处理模式,而不是面向交互式的SQL执行。与MapReduce相比:Impala把整个查询分成一执行计划树,而不是一连串的MapReduce任务,在分发执行计划后,Impala使用拉式获取数据的方式获取结果,把结果数据组成按执行树流式传递汇集,减少的了把中间结果写入磁盘的步骤,再从磁盘读取数据的开销。Impala使用服务的方式避免每次执行查询都需要启动的开销,即相比Hive没了MapReduce启动时间。

2、使用LLVM产生运行代码,针对特定查询生成特定代码,同时使用Inline的方式减少函数调用的开销,加快执行效率。

3、充分利用可用的硬件指令(SSE4.2)。

4、更好的IO调度,Impala知道数据块所在的磁盘位置能够更好的利用多磁盘的优势,同时Impala支持直接数据块读取和本地代码计算checksum。

5、通过选择合适的数据存储格式可以得到最好的性能(Impala支持多种存储格式)。

6、最大使用内存,中间结果不写磁盘,及时通过网络以stream的方式传递。

 

Impala的优缺点

优点:

  • 支持SQL查询,快速查询大数据。
  • 可以对已有数据进行查询,减少数据的加载,转换。
  • 多种存储格式可以选择(Parquet, Text, Avro, RCFile, SequeenceFile)。
  • 可以与Hive配合使用。

缺点:

  • 不支持用户定义函数UDF。
  • 不支持text域的全文搜索。
  • 不支持Transforms。
  •  不支持查询期的容错。
  • 对内存要求高。

 

传送门: 大数据生态圈常用组件(一):数据库、查询引擎、ETL工具、调度工具等

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/494829.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从外部调用Django模块

import os import sys sys.path.insert(0,/data/cloud_manage) from django.core.management import setup_environ import settings setup_environ(settings)from common.monitor import Monitor from django.db import connection, transaction 前提就是,要新建一…

泡沫破裂之后,强化学习路在何方?

作者|侯宇清、陈玉荣来源|智能单元编辑|Debra一、深度强化学习的泡沫2015 年,DeepMind 的 Volodymyr Mnih 等研究员在《自然》杂志上发表论文 Human-level control through deep reinforcement learning[1],该论文提出…

常见的设计模式--单例模式

设计模式 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类的、代码设计经验的总结。使用设计模式的目的是为了代码可重用性、让代码更容易被他人理去解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工…

一篇文章搞懂数据仓库:维度表(设计原则、设计方法)

目录 1、什么是维度表? 2、维度表设计原则 (1)维度属性尽量丰富,为数据使用打下基础 (2)给出详实的、富有意义的文字描述 (3)区分数值型属性和事实 (4)…

javascript 键值转换

for (var i 0; i < headerFields.length; i) {fieldToIndex[headerFields[i]] i;} 转载于:https://www.cnblogs.com/EasonSun/archive/2012/08/03/2621661.html

Github项目:AI消除马赛克实战

目录 1、原理 2、准备工作 3、消除马赛克 4、效果对比 1、原理 该算法利用线性盒滤波器分别处理每个块的事实。对于每个块&#xff0c;它将搜索图像中的所有块像素化以检查直接匹配。 对于大多数像素化图像&#xff0c;Depix能够找到单个匹配结果。它假设这些是正确的。然…

C++继承一览

继承的概念及定义 继承机制是面向对象程序设计是代码可以复用的重要手段&#xff0c;它允许程序员在保持原有类特性的基础上进行扩展&#xff0c;增加功能&#xff0c;这样产生的类称为派生类。继承呈现了面向对象程序设计的层次结构&#xff0c;体现了由简单到复杂的认知过程。…

人工智能能否复制人脑引争论 美媒:目前AI仍存在局限性

来源&#xff1a;网易智能摘要&#xff1a;人们应用人工智能技术&#xff08;AI&#xff09;的所有领域&#xff0c;包括无人驾驶汽车、机器人医生、超过10亿中国公民的社会信用评分系统等&#xff0c;当前都取决于一场关于如何让AI做其不能做的事的辩论。8月6日报道称&#xf…

Tushare免费获取股票数据:实时数据,历史数据,行情数据

一 操作手册 引导用户顺利开始使用Tushare Pro数据&#xff0c;以下步骤将带您开始Tushare数据之旅&#xff1a; 用户注册登录后可调用数据&#xff1a;https://tushare.pro/register?reg399205 二 如何获取TOKEN凭证 1、登录成功后&#xff0c;点击右上角->个人主页 2、…

2012/8/3 Extjs使用TabPanel时需要注意的问题

在创建Ext.TabPanel时&#xff0c;配置项deferredRender经常会被忽略&#xff0c;关于这个配置项&#xff0c;我们来看一下API文档的解释&#xff1a;“内置地&#xff0c;Tab面板是采用Ext.layout.CardLayout的方法管理tabs。此属性的值将会传递到布局的Ext.layout.CardLayout…

排序(冒泡、选择、插入、希尔、快排、堆排、归并)

冒泡排序 冒泡排序时通过无序区中相邻记录的关键字间的比较和位置的交换&#xff0c;使关键字最小的元素如气泡似的逐步上浮直水面。有序区逐渐扩大&#xff0c;无序区逐渐缩小。   冒泡排序算法的原理如下&#xff1a; 比较相邻的元素。如果第一个比第二个大&#xff0c;就…

人民日报:人工智能,务实发展是正道

来源&#xff1a;人民日报摘要&#xff1a;近日&#xff0c;由中国人工智能学会主办的中国人工智能大会在深圳召开&#xff0c;利用这个人工智能领域产、学、研紧密结合的高端前沿交流平台&#xff0c;围绕关键核心技术发展等当前热点话题&#xff0c;学者和业界人士进行了充分…

kudu参数优化设置,让集群飞起来~

根据数据体量&#xff0c;结合集群各节点的CPU、内存、磁盘的表现&#xff0c;合理优化设置kudu参数&#xff0c;让集群飞起来~ 如有雷同&#xff0c;纯属借鉴~ 1.Kudu后台对数据进行维护操作&#xff0c;如写入数据时的并发线程数&#xff0c;一般设置为4&#xff0c;官网建议…

(转)Some awareness before migrating from x86 to x64

本文转自&#xff1a;http://www.cnblogs.com/feishunji/archive/2010/10/20/1856798.html Lets assume we have the following three dlls: anycpu.dll -- compiled "any cpu" x86.dll -- compiled "x86" x64.dll -- compiled &…

大数据技术Hbase 和 Hive 详解

目录 两者的特点 各自的限制 应用场景 大数据技术Hbase 和 Hive 详解&#xff0c; 今天给大家介绍一下关于零基础学习大数据视频教程之HBASE 和 HIVE 是多么重要的技术&#xff0c;那么两者有什么区别呢 ? 下面我们一起来看一下吧。 ApacheHive 是一个构建在 hadoop 基础设…

STL中vector和list的区别

底层结构 vector的底层结构是动态顺序表&#xff0c;在内存中是一段连续的空间。   list的底层结构是带头节点的双向循环链表&#xff0c;在内存中不是一段连续的空间。 随机访问 vector支持随机访问&#xff0c;可以利用下标精准定位到一个元素上&#xff0c;访问某个元素的…

自动驾驶芯片:GPU 的现在和 ASIC 的未来

来源&#xff1a;乐晴智库精选▌车载芯片的发展趋势(CPU-GPU-FPGA-ASIC)过去汽车电子芯片以与传感器一一对应的电子控制单元(ECU)为主&#xff0c;主要分布与发动机等核心部件上。随着汽车智能化的发展&#xff0c;汽车传感器越来越多&#xff0c;传统的分布式架构逐渐落后&…

WAMP PHP开发环境

下载地址&#xff1a;php100.com 安装成功标志&#xff1a;访问localhost能够看到WampServer页面 步骤&#xff1a;(1)新建虚拟目录 php100 (2)在php100下新建test.php文件&#xff0c;用nodepad打开,输入PHP脚本 <?php echo "hello world"; ?>(3)localho…

C++多态面试题汇总

总结了一些常见的面试题&#xff0c;通过查阅资料给出了一些浅薄的解析&#xff0c;欢迎各位批评指教。 1. inliine函数可以实虚函数码&#xff1f; 不可以&#xff0c;因为inline函数没有地址&#xff0c;无法将他存放到虚函数表中。 2. 静态成员可以是虚函数吗&#xff1f…

电动汽车:新一轮三年十倍,“补贴”结束“高端”开启

来源&#xff1a;乐晴智库精选摘要&#xff1a;从最早的十城千辆新能源车示范推广&#xff0c;到2014年正式启动的二级市场新能源车大行情&#xff0c;再到当下新能源乘用车型的快速升级迭代&#xff0c;新能源汽车产业发展和投资已历经8余年。▌新能源汽车投资&#xff0c;推倒…