初识 Cloudera Impala

Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和HBase中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程,难以满足查询的交互性。相比之下,Impala的最大特点也是最大卖点就是它的快速。Impala 为存储在 HDFS 和 HBase 中的数据提供了一个实时 SQL 查询接口。

Impala优点

下图来自zdnet,描述了Impala的一些优点:

从上图中看出主要的优点:SQL友好,比Hive快,支持多种存储引擎文件格式,接口丰富(ODBC,JDBC,Client),开源,部署容易。

Impala架构

Impala解决方案包含下面几大部分:

Clients包括 Hue, ODBC clients, JDBC clients, and the Impala Shell

Hive Metastore:存放结构定义的元数据,当你创建、删除、修改表结构,或者加载数据到表中时,会自动的通知Impala节点。

Cloudera Impala:运行在数据节点上,分析、调度、执行查询任务,每个Impala实例都可以接收、调度来自客户端的查询,这些查询分发到Impala节点进行查询,Impala节点相当于工作进程,执行查询,并将结果返回。

HBase and HDFS:存储供Impala查询的数据。

下图描述了Impala的架构:

上图中,黄色部分为Impala组件。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进程

从进程的角度看分为如下的三类进程:

The Impala Daemon

是Impala的核心进程,进程名叫做:impalad,运行在所有的数据节点上,可以读写数据,并接收客户端的查询请求,并行执行来自集群中其他节点的查询请求,将中间结果返回给调度节点。调用节点将结果返回给客户端。

The Impala Statestore

状态管理进程,定时检查The Impala Daemon的健康状况,协调各个运行impalad的实例之间的信息关系,Impala正是通过这些信息去定位查询请求所要的数据,进程名叫做statestored,在集群中只需要启动一个这样的进程,如果Impala节点由于物理原因、网络原因、软件原因或者其他原因而下线,Statestore会通知其他节点,避免查询任务分发到不可用的节点上。

The Impala Catalog Service

元数据管理服务,进程名叫做 catalogd,将数据表变化的信息分发给各个进程。

搭建的CDH5环境上找到了这些进程:

Impala进程分布
hostname 进程名称
h1.worker.com statestored、catalogd
h2.worker.com impalad
h3.worker.com impalad
h4.worker.com impalad
[[email protected] ~]# hostname
h1.worker.com
[[email protected] ~]# ps -ef | grep impala
impala   14048  7910  0 04:13 ?        00:00:30 /opt/cloudera/parcels/CDH-5.0.2-1.cdh5.0.2.p0.13/lib/impala/sbin-retail/catalogd --flagfile=/var/run/cloudera-scm-agent/process/57-impala-CATALOGSERVER/impala-conf/catalogserver_flags
impala   14070  7910  0 04:13 ?        00:03:01 /opt/cloudera/parcels/CDH-5.0.2-1.cdh5.0.2.p0.13/lib/impala/sbin-retail/statestored --flagfile=/var/run/cloudera-scm-agent/process/61-impala-STATESTORE/impala-conf/state_store_flags
root     48029 31543  0 10:13 pts/0    00:00:00 grep impala
[[email protected] ~]# 
[[email protected] ~]# hostname
h2.worker.com
[[email protected] ~]# ps -ef | grep impala
impala   13919  4405  0 04:13 ?        00:01:12 /opt/cloudera/parcels/CDH-5.0.2-1.cdh5.0.2.p0.13/lib/impala/sbin-retail/impalad --flagfile=/var/run/cloudera-scm-agent/process/58-impala-IMPALAD/impala-conf/impalad_flags
root     24212 18173  0 10:16 pts/0    00:00:00 grep impala

Impala快的原因

从网上找了一段Impala快的原因,主要有以下几方面的原因。

Impala不需要把中间结果写入磁盘,省掉了大量的I/O开销。

省掉了MapReduce作业启动的开销。MapReduce启动task的速度很慢(默认每个心跳间隔是3秒钟),Impala直接通过相应的服务进程来进行作业调度,速度快了很多。

Impala完全抛弃了MapReduce这个不太适合做SQL查询的范式,而是像Dremel一样借鉴了MPP并行数据库的思想另起炉灶,因此可做更多的查询优化,从而省掉不必要的shuffle、sort等开销。

通过使用LLVM来统一编译运行时代码,避免了为支持通用编译而带来的不必要开销。

用C++实现,做了很多有针对性的硬件优化,例如使用SSE指令。

使用了支持Data locality的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销。

Impala源代码

https://github.com/cloudera/impala

后面重点分析下Impala的源代码。个人感觉和分布式数据库查询引擎的架构比较类型。

参考文档

Cloudera Impala User Guide

Cloudera aims to bring real-time queries to Hadoop, big data

Impala:新一代开源大数据分析引擎

原创作品,转载请注明出处 http://blog.csdn.net/yangzhaohui168/article/details/34185579

初识 Cloudera Impala,布布扣,bubuko.com

时间: 2024-12-24 22:01:07

初识 Cloudera Impala的相关文章

cloudera impala编译 安装 配置 启动

无论是采用GDB调试impala或者尝试修改impala源码,前提都是需要本地环境编译impala,这篇文章详细的分享一下impala编译方法以及编译过程遇到的棘手的问题: 前言: impala官方的git上其实是有impala编译的步骤的,但是在后来的git版本迭代中,被藏在了一个诡异的地方,https://github.com/cloudera/Impala/tree/v1.2.2,虽i然官方给出了步骤,但该博文并不是官方的一个简单翻译,其中涵盖了很多我加入的细节提醒和遇到的bug以及错误的

Cloudera Impala Guide

Impala Concepts and Architecture The following sections provide background information to help you become productive using Cloudera Impala and its features. Where appropriate, the explanations include context to help understand how aspects of Impala

Cloudera impala简介及安装详解

一.Impala简介 Cloudera Impala对你存储在Apache Hadoop在HDFS,HBase的数据提供直接查询互动的SQL.除了像Hive使用相同的统一存储平台,Impala也使用相同的元数据,SQL语法(Hive SQL),ODBC驱动程序和用户界面(Hue Beeswax).Impala还提供了一个熟悉的面向批量或实时查询和统一平台. 二.Impala安装 1.安装要求 (1)软件要求 Red Hat Enterprise Linux (RHEL)/CentOS 6.2 (

安装使用Cloudera Impala

安装与使用Cloudera Impala Cloudera Impala提供快速的.交互式的SQL查询方式,直接基于Apache Hadoop存储在HDFS或HBase中的数据进行查询.除了使用与Apache Hive相同的统一存储平台外,Impala也使用了与Hive相同的元数据.SQL语法(Hive SQL).ODBC驱动和用户接口(Cloudera Impala查询UI使用Hue).这样就提供了一个用于实时或批量的查询的熟悉的.统一的平台. Cloudera Impala是一个查询大数据的

Cloudera Impala需求

Cloudera Impala需求 为了达到预期的效果,Impala依赖于软件.硬件的可用性,以及下面章节描述的配置. 继续阅读: 支持的操作系统 支持的Hadoop发布 Hive Metastore及相关配置 Java依赖关系 包和库 网络配置需求 硬件需求 用户帐户需求 支持的操作系统 支持的64位操作系统: Red Hat Enterprise Linux (RHEL) 5.7/6.2/6.4.Oracle Linux 5.7/6.2/6.4.Centos 5.7/6.2/6.4 在Red

安装Cloudera Impala

安装Cloudera Impala Cloudera Impala是Cloudera Enterprise Core的开源扩展,用于快速返回查询结果. Impala作为你环境的插件,与其他组件的安装独立进行.Impala由一组组件组成,可以安装到集群中的多个节点. Impala包安装一下二进制文件: impalad - Impala守护进程.解析并执行针对HDFS.HBase上数据的查询.集群中每一个数据节点上都要运行一个该进程. statestored - 名称服务,跟踪集群中的所有impal

Cloudera impala简单介绍及安装具体解释

一.Impala简单介绍 Cloudera Impala对你存储在Apache Hadoop在HDFS,HBase的数据提供直接查询互动的SQL.除了像Hive使用同样的统一存储平台,Impala也使用同样的元数据,SQL语法(Hive SQL),ODBC驱动程序和用户界面(Hue Beeswax).Impala还提供了一个熟悉的面向批量或实时查询和统一平台. 二.Impala安装 1.安装要求 (1)软件要求 Red Hat Enterprise Linux (RHEL)/CentOS 6.2

Cloudera Impala官方文档中文翻译-2(Using Impala to Query HBase Tables)

Using Impala to QueryHBase Tables(利用impala查询HBase Tables) 默认情况下,impalatable使用存储在HDFS中的数据文件,这种存储方式适用于批量数据加载和查询(bulk loads and query).相反,HBase可以对用于OLTP风格的负载的数据进行高效率查询,比如查找单个row或者一个range的values. 对于impala用户来说,HBase是key-value存储形式的数据库,value包含多个fields.Key在i

上海Cloudera 数据分析师培训:Pig、Hive和 Impala

Cloudera 数据分析师培训:Pig.Hive和 Impala 通过 Cloudera 公司的 Apache Hadoop 培训将您的知识提升到一个新的水平. Cloudera 大学提供的为期四天的数据分析培训课程专注于 Apache Pig. Hive 和 Cloudera Impala,将教会您如何将传统的数据分析和商业智能技术应用到大数据领域.Cloudera 为数据专业人员提供了基于 SQL 和其它熟悉的脚本编程语言的工具,用来访问.操作.转换和分析复杂数据集. "通过 Cloude