Impala学习--Impala概述

Impala 是 Cloudera 的一款实时查询工具,提供类似 SQL 的接口,采用类似于 Dremel 的执行方式,能在几秒钟内扫描 PB 级数据。它与 Hive 共享元数据存储并互补使用,适用于简单的实时查询场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Imapla概述

Impala是Cloudera公司的一个实时海量查询产品。是对于已有Hive产品的补充。Impala采用了和Hive相同的类SQL接口,但并没有采用MapRed框架执行任务,而是采用了类似Dremel的方式。号称秒级可以扫描PB数据。

其实Impala就是自己实现了一个执行引擎。这个引擎不像MapRed一样是一个通用框架,并且也没有任何failover和high availability的设计。但是优势在于执行速度足够快,秒级返回。其设计理念就是,执行速度足够快,快到如果失败了,重新执行一遍的代价也不大。

很显然,MapRed之所以流行就在于其可以很好的做到可扩展和容错。容错的价值在于,当一个大任务需要1小时以上的执行时间,如果在执行过程中发生故障,可以快速恢复,而不许要重新执行。所以这也是MPI任务为什么采用checkpoint的进行容错。都是为了减少机器故障给执行时间带来额开销。

Hive是在MapRed模型之上抽象出来的类似SQL的接口,简化了写MapRed程序的代价。同样由于依赖于MapRed系统,导致Hive任务执行时间很长,和MapRed一样,只适合执行批处理任务。

而面对实时查询的需求,旧的做法通常是先通过MapRed对数据进行加工,再导出到mysql等系统中。然而这种做法存在多个问题:

  • 数据存在多个地方,如果管理不善,很容易带来数据不一致等各种问题
  • 用户需要了解数据是否已存储在mysql中
  • mysql对存储数据量有限制

其实用户的实时查询请求经常会扫描大量数据,但计算都相对简单,例如只是count(*),等等。为满足这种需求,Google提出了Dremel,而Cloudera参考了Dremel的设计思路,实现了Impala。

Impala存在以下特点:

  • 面向实时查询,结果秒级返回
  • 兼容hive的类sql语法,但暂时不支持udf和transform
  • 可以和hive共享metastore
  • 没有任何failover的设计
  • 支持从hdfs和hbase读取数据
  • 运行时环境用c++实现,并利用了llvm的技术,动态优化执行代码

最后说一下,Impala不会完全替代Hive,因为毕竟Hive的容错和稳定性是Impala比不了的。Impala只是Hive的一个补充,可以快速的响应一些简单的查询请求。

从业务角度上分析,如果Imapla能够做到在5秒,甚至更短的时间内返回结果,那将有机会替代现有的mysql或oracal数据库,成为决策系统的底层支撑查询引擎。例如目前Oracal的BI或类似的系统,底层使用的是传统关系数据库,对海量数据的查询性能非常差。如果替换成Impala,则能够访问的数据量将大的多,对BI系统在公司业务上的贡献将有质的飞跃。


预告一下,后续将继续发表一些和impala有关的文章,将会涉及到系统架构,如何安装调试,前端代码分析,后台代码分析,llvm优化等等。


Author: <kyle@localhost.localdomain>

Date: 2013-02-17 19:37:18 CST

HTML generated by org-mode 6.21b in emacs 23

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值