Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。那么Impala如何实现大数据的快速查询呢?在回答这个问题前,需要先介绍Google的Dremel系统,因为Impala最开始是参照 Dremel系统进行设计的。
一、Impala核心组件
图一:impala实例
Impala Daemon
Impala的核心组件是运行在各个节点上面的impalad这个守护进程(Impala daemon),它负责读写数据文件,接收从impala-shell、Hue、JDBC、ODBC等接口发送的查询语句,并行化查询语句和分发工作任务到Impala集群的各个节点上,同时负责将本地计算好的查询结果发送给协调器节点(coordinator node)。
你可以向运行在任意节点的Impala daemon提交查询,这个节点将会作为这个查询的协调器(coordinator node),其他节点将会传输部分结果集给这个协调器节点。由这个协调器节点构建最终的结果集。在做实验或者测试的时候为了方便,我们往往连接到同一个Impala daemon来执行查询,但是在生产环境运行产品级的应用时,我们应该循环(按顺序)的在不同节点上面提交查询,这样才能使得集群的负载达到均衡。
Impala daemon不间断的跟statestore进行通信交流,从而确认哪个节点是健康的能接收新的工作任务。它同时接收catalogd daemon(从Impala 1.2之后支持)传来的广播消息来更新元数据信息,当集群中的任意节点create、alter、drop任意对象、或者执行INSERT、LOAD DATA的时候触发广播消息。
Impala Statestore
Impala Statestore检查集群各个节点上Impala daemon的健康状态,同时不间断地将结果反馈给各个Impala daemon。这个服务的物理进程名称是statestored,在整个集群中我们仅需要一个这样的进程即可。如果某个Impala节点由于硬件错误、软件错误或者其他原因导致离线,statestore就会通知其他的节点,避免其他节点再向这个离线的节点发送请求。
由于statestore是当集群节点有问题的时候起通知作用,所以它对Impala集群并不是有关键影响的。如果statestore没有运行或者运行失败,其他节点和分布式任务会照常运行,只是说当节点掉线的时候集群会变得没那么健壮。当statestore恢复正常运行时,它就又开始与其他节点通信并进行监控。
Impala Catalog
Imppalla catalog服务将SQL语句做出的元数据变化通知给集群的各个节点,catalog服务的物理进程名称是catalogd,在整个集群中仅需要一个这样的进程。由于它的请求会跟statestore daemon交互,所以最好让statestored和catalogd这两个进程在同一节点上。
Impala 1.2中加入的catalog服务减少了REFRESH和INVALIDATE METADATA语句的使用。在之前的版本中,当在某个节点上执行了CREATE DATABASE、DROP DATABASE、CREATE TABLE、ALTER TABLE、或者DROP TABLE语句之后,需要在其它的各个节点上执行命令INVALIDATE METADATA来确保元数据信息的更新。同样的,当你在某个节点上执行了INSERT语句,在其它节点上执行查询时就得先执行REFRESH table_name这个操作,这样才能识别到新增的数据文件。需要注意的是,通过Impala执行的操作带来的元数据变化,有了catalog就不需要再执行REFRESH和INVALIDATE METADATA,但如果是通过Hive进行的建表、加载数据,则仍然需要执行REFRESH和INVALIDATE METADATA来通知Impala更新元数据信息。
二、impala系统架构(Impala Daemon)
图二: Impala deamon系统架构图
Impala其实就是Hadoop的Dremel,Impala使用的列存储格式是Parquet。Parquet实现了Dremel中的列存储,未来还将支持 Hive并添加字典编码、游程编码等功能。Impala的系统架构如图1所示。Impala使用了Hive的SQL接口(包括SELECT、 INSERT、Join等操作),但目前只实现了Hive的SQL语义的子集(例如尚未对UDF提供支持),表的元数据信息存储在Hive的 Metastore中。StateStore是Impala的一个子服务,用来监控集群中各个节点的健康状况,提供节点注册、错误检测等功能。 Impala在每个节点运行了一个后台服务Impalad,Impalad用来响应外部请求,并完成实际的查询处理。Impalad主要包含Query Planner、Query Coordinator和Query Exec Engine三个模块。QueryPalnner接收来自SQL APP和ODBC的查询,然后将查询转换为许多子查询,Query Coordinator将这些子查询分发到各个节点上,由各个节点上的Query Exec Engine负责子查询的执行,最后返回子查询的结果,这些中间结果经过聚集之后最终返回给用户。
三、impala优于hive的原因
1.使用c++而不是java开发,降低运行负荷
2.impala不会把中间数据写入到磁盘,而是内存中完成所有的处理。
3.全新的执行引擎,查询任务会马上执行,而不是产生mr任务,节约了大量初始化时间
4.impala查询计划解析器使用更智能的算法在多节点上分布式执行各个查询步骤,同时避免sorting和shuffle两个非常耗时的阶段,这两个阶段往往是不需要的。
四、为什么暂时不能用impala替换hive
相关推荐
《Impala学习总结》 Impala是一款高性能的分布式SQL查询引擎,它在Dremel的启发下设计,旨在解决Hive+MapReduce在处理实时查询时的效率问题。Impala采用了与传统并行关系数据库相似的分布式查询引擎,由Query ...
《Impala学习总结》 Impala,源自Google的Dremel理念,旨在提供高效的数据查询能力,它摒弃了传统的Hive+MapReduce批处理方式,转而采用类似商业并行数据库的分布式查询引擎,包括Query Planner、Query Coordinator...
总结,Impala JDBC驱动为Java开发者提供了一种简单、高效的途径,接入Impala进行大数据处理。理解其工作原理、安装步骤以及使用注意事项,对于开发基于Impala的数据分析应用至关重要。通过不断学习和实践,开发者...
总结,Impala是一个强大的大数据实时查询工具,它的源码开放性和对Hadoop生态的紧密集成,使其成为大数据分析领域的重要组成部分。通过深入理解和优化,Impala可以为各种业务场景提供高效的数据洞察。
- **预测分析**:结合机器学习算法,对用户行为趋势进行预测,帮助企业提前布局未来市场。 #### 总结 构建一个基于Impala的实时用户行为分析引擎不仅可以提高数据分析的速度,还能为企业提供更多有价值的信息。...
- **SQL 兼容性**:Impala 支持标准的 SQL 查询语法,并且与 HiveQL 有高度兼容性,降低了学习成本。 - **实时分析**:Impala 能够支持对实时数据流的即时分析,满足了现代企业对数据实时性的需求。 #### Impala ...
### Hadoop 数据库系统:Hive、Impala、Spark、Presto 对 Oracle DBA 的意义 ...通过学习这些工具,Oracle DBA 可以更好地应对大数据时代带来的挑战,同时也能拓展自己的技能树,提升职业竞争力。
通过以上知识点的总结,我们可以了解到,《Getting Started with Impala》这本书主要介绍了Impala的基础概念、安装配置方法以及如何利用Imp拉进行高效的数据分析。无论是对于初学者还是有一定经验的开发人员来说,都...
《Hive学习总结及应用》 Hive,作为大数据处理领域的重要工具,是构建在Hadoop生态系统之上的一种数据仓库工具,旨在提供SQL-like查询语言(HiveQL)以简化对大规模分布式数据集的操作。它的核心功能是将结构化的...
总结来说,Impala的SQL后端dplyr是将R语言的强大数据处理工具dplyr与Apache Impala的高性能分析能力相结合,通过JDBC或ODBC接口实现。这种结合使得数据科学家可以在不牺牲速度的前提下,对大规模分布式数据进行复杂...
【Hive学习与应用】 Hive是一个基于Hadoop的数据仓库工具,它允许用户使用SQL-like的语言,即HiveQL(Hive Query Language),对存储在HDFS(Hadoop Distributed File System)上的大规模数据进行分析和处理。Hive...
#### 四、总结 通过完成以上练习,您将能够熟练掌握使用Cloudera的大数据平台进行数据分析的基本流程和技术。这些实践经验不仅能提升您的技术能力,还能让您在工作中更好地支持企业的决策过程。此外,您还将了解到...
SQL on Big Data:掌握Hive、Spark SQL、Impala等SQL-on-Hadoop工具,用于大数据查询与分析。 数据可视化:了解如何将大数据分析结果通过Tableau、PowerBI等工具呈现。 数据压缩:熟悉Snappy、Gzip等数据压缩算法...
IMPALA:具有重要性加权 Actor-Learner 架构的可扩展分布式深度强化学习 [] [] [] DeepType:通过神经类型系统进化的多语言实体链接 [] [] [] DensePose:野外密集人体姿势估计 [] [] 2018-01 嵌套 LSTM [] 通过总结...
这份文档旨在帮助用户更好地理解和掌握如何利用CM来管理和优化CDH(Cloudera Distributed Hadoop)集群,提供了一条从理论到实践的学习路径。 CM是Cloudera公司开发的一款强大的大数据管理工具,它提供了统一的界面...
大数据技术:MapReduce、数据仓库Hive单元测试与答案 本资源摘要信息涵盖了大数据技术中 MapReduce 和数据仓库 Hive 的重要知识点,包括 MapReduce 框架...这些知识点对于大数据技术的学习和应用具有重要的参考价值。
**总结**:Cloudera大数据分析培训是一个全面的实践导向课程,旨在教会学员如何利用Pig、Hive、Impala等工具高效处理和分析大数据。通过理论讲解和实践操作,学员将能够应对大数据带来的挑战,为所在企业或组织提供...
大数据不仅包含大量数据,还涉及到对这些数据的深度挖掘和分析需求,以及用于处理这些数据的软件工具,如Hadoop、Spark、Storm、Flink、Tez和Impala等。 【Hadoop概述】 Hadoop是Apache软件基金会开发的一个开源...
总结来说,"金融大数据方案"涉及从数据采集到分析的全过程,包括数据存储、处理、分析和应用,旨在为金融机构创造业务价值,提升竞争力。同时,这个方案需要充分考虑数据质量和安全,确保符合监管要求。
- **Impala**:与Hive类似,但采用了MPP架构,支持SQL查询,并直接与HDFS和HBase交互,提供了更快的查询速度。 - **Kylin**:一个开源的分布式分析引擎,基于Hadoop和HBase,提供SQL查询接口以及多维分析(OLAP)...