Impala概述

1、Impala是什什么

        Impala是Cloudera提供的一款开源的针对HDFS和HBASE中的PB级别数据进行行交互式实时查询(Impala速度快),Impala是参照谷歌的新三篇论文当中的Dremel实现而来,其中旧三篇论文分别是(BigTable,GFS,MapReduce)分别对应我们即将学的HBase和已经学过的HDFS以及MapReduce。

Impala最大卖点和最大特点就是快速,Impala中文翻译是高角羚羊。

2、Impala优势

  • 技术发展以及更新换代的原因就是老的技术架构遇到新的问题,有些问题可以通过不断优化代码优化设计得以解决,有一些问题就不再是简简单单修改代码就能解决,需要从框架本身架构设计上改变,以至于需要推到重建。
  • 在大数据领域主要解决的问题是数据的存储和分析,但是其实一个完整的大数据分析任务如果细分会有非常多具体的场景,非常多的环节;并没有一个类似Java Web的Spring框架实现大一统的局面。

        比如我们按照阶段划分一个大数据开发任务,会有:数据采集(日志文件,关系型数据库中),数据清洗(数据格式整理,脏数据过滤等),数据预处理(为了后续分析所做的工作),数据分析:离线处理(T+1分析),实时处理(数据到来即分析),数据可视化,机器学习,深度学习等

        面对如此众多的阶段再加上大数据天生的大数据量问题,没有任何一个框架可以完美cover以上每个阶段。所以大数据领域有非常多框架,每个框架都有最适合自己的具体场景。比如:HDFS负责大数据量存储,MapReduce(Hive)负责大数据量的分析计算。

Impala的诞生

        之前学习的Hive以及MR适合离线批处理理,但是对交互式查询的场景无能为力(要求快速响应),所以为了解决查询速度的问题,Cloudera公司依据Google的Dremel开发了Impala,Impala抛弃了MapReduce使用了类似于传统的MPP数据库技术,大大提高了查询的速度。

MPP是什么

  • MPP (Massively Parallel Processing),就是大规模并行处理,在MPP集群中,每个节点资源都是独立享有也就是有独立的磁盘和内存,每个节点通过网络互相连接,彼此协同计算,作为整体提供数据服务。
  • 简单来说,MPP是将任务并行的分散到多个服务器器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果
  • 对于MPP架构的软件来说聚合操作比如计算某张表的总条数,则先进行局部聚合(每个节点并行计算),然后把局部汇总结果进行全局聚合(与Hadoop相似)。

Impala与Hive对比

Impala的技术优势

  • Impala没有采取MapReduce作为计算引擎,MR是非常好的分布式并行计算框架,但MR引擎更多的是面向批处理理模式,而不是面向交互式的SQL执行。与 Hive相比:Impala把整个查询任务转为一棵执行计划树,而不是一连串的MR任务,在分发执行计划后,Impala使用拉取的方式获取上个阶段的执行结果,把结果数据、按执行树流式传递汇集,减少的了把中间结果写入磁盘的步骤,再从磁盘读取数据的开销。Impala使用服务的方式避免每次执行查询都需要启动的开销,即相比Hive没了MR启动时间。
  • 使用LLVM(C++编写的编译器)产生运行代码,针对特定查询生成特定代码。
  • 优秀的IO调度,Impala支持直接数据块读取和本地代码计算。
  • 选择适合的数据存储格式可以得到最好的性能(Impala支持多种存储格式)。
  • 尽可能使用内存,中间结果不写磁盘,及时通过网络以stream的方式传递。

Impala与Hive对比分析

查询过程

  • Hive:在Hive中,每个查询都有一个“冷启动”的常见问题。(map,reduce每次都要启动关闭,申请资源,释放资源。。。)
  • Impala:Impala避免了任何可能的启动开销,这是一种本地查询语言。 因为要始终处理查询,则Impala守护程序进程总是在集群启动之后就准备就绪。守护进程在集群启动之后可以接收查询任务并执行查询任务。

中间结果

  • Hive:Hive通过MR引擎实现所有中间结果,中间结果需要落盘,这对降低数据处理速度有不利影响。
  • Impala:在执行程序之间使用流的方式传输中间结果,避免数据落盘。尽可能使用内存避免磁盘开销

交互查询

  • Hive:对于交互式计算,Hive不是理想的选择。
  • Impala:对于交互式计算,Impala非常适合。(数据量级PB级)

计算引擎

  • Hive:是基于批处理的Hadoop MapReduce
  • Impala:更像是MPP数据库

容错

  • Hive:Hive是容错的(通过MR&Yarn实现)
  • Impala:Impala没有容错,由于良好的查询性能,Impala遇到错误会重新执行一次查询

查询速度

  • Impala:Impala比Hive快3-90倍

Impala优势总结

  • Impala最大优点就是查询速度快,在一定数据量下;
  • 速度快的原因:避免了MR引擎的弊端,采用了MPP数据库技术

3、Impala的缺点

  • Impala属于MPP架构,只能做到百节点级,一般并发查询个数达到20左右时,整个系统的吞吐已经达到满负荷状态,在扩容节点也提升不了吞吐量,处理数据量在PB级别最佳。
  • 资源不能通过YARN统一资源管理调度,所以Hadoop集群无法实现Impala、Spark、Hive等组件的动态资源共享。

4、适用场景

  • Hive: 复杂的批处理查询任务,数据转换任务,对实时性要求不高同时数据量又很大的场景。
  • Impala:实时数据分析,与Hive配合使用,对Hive的结果数据集进行实时分析。impala不能完全取代hive,impala可以直接处理hive表中的数据。
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悠然予夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值