Impala实战 第3章 Impala概念及架构

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/myvanguard/article/details/86634061

第3章 Impala概念及架构

本章将主要介绍Impala的概念及技术架构,Impala应用编程,以及与Hadoop集群生态系统的集成关系。

3.1Impala服务器组件

Impala服务器是一个分布式,大规模并行处理(MPP)数据库引擎。它包括运行在CDH集群主机上的不同后台进程。

3.1.1 Impala Daemon

这个进程是运行在集群每个节点上的守护进程,是Impala的核心组件。在每个节点上这个进程的名称为impalad。

ps-ef | grep impalad

它负责读写数据文件;接受来自查询请求,与集群中的其他节点分布式并行工作,并将本节点的查询结果返回给中心协调者节点。为了了解其他节点的健康状况和负载,Impalad 进程会一直与statestore保持通信。

3.1.2 Impala Statestore

Statestore搜集集群中impalad进程节点的健康状况,并不断地将健康状况的结果转发给所有的impalad进程节点。Statestore进程的名称为statestored。一个impala 集群只需要一个statestored进程节点。

ps-ef | grep statestored

当impala节点不可用,statestore将确保这一信息及时的传达到所有的impalad进程节点上
在statestore不可用的情况下,impalad进程节点失败,只是让集群不再那么强劲。
当statestore恢复正常,它将重新与impalad进程节点建立通信,恢复对集群监控功能。

3.1.3 Impala Catalog

当Impala集群中执行的SQL语句会引起元数据变化时,catalog服务负责将这些变化推送到其他impalad进程节点上。Catalog服务对应的进程名称为catalogd。一个impala集群只需要一个catalogd 进程。

ps-ef | grep catalogd

3.2Impala应用编程

Impala核心的开发语言是SQL 语句。lmpala也可以通过JDBC/ODBC接口为其他语言提供服务。也可以使用C++或者Java编写SQL内嵌函数UDF。

3.2.1 Impala SQL 方言

Impala SQL方言继承了Apache HiveQL的SQL语法。

有一下几点需要注意:
(1)Impala SQL的重点在于查询,所以只包含很少的DML语句。它不具备 UPDATA/DELETE语句。对于过期的数据通常使用直接删除或者替换方式变相删除。
(2)数据加载通过INSERT语句完成,通常是通过对其他表的查询转换后进行批量插入操作。没有针对单行记录操作的INSERT…VALUES 语法。
(3)使用Hadoop现有的数据文件创建Impala表定义,然后使用Impala进行实时查询。
(4)Imapla 适用于数据仓库类型大数据集进行操作
(5)因为Impala不支持字符串类型的长度限制。我们可以定义String作为一个数据列
(6)对于查询密集型应用程序,与传统数据库很多语法相同
(7)在数据仓库中,我们将经常使用分区表。
(8)可以通过UDFs、执行自定义的比较和转换逻辑。

3.2.2Impala 编程接口概述

可以通过如下方式向Impala提交请求:

  • impala-shell交互式命令行
  • Apache Hue基于web的用户接口
  • JDBC
  • ODBC

3.3与Hadoop生态系统集成

Impala 可以使用Hadoop生态系统内的许多熟悉的组件。Impala可以与其他Hadoop组件交换数据,它既可以作为生产者也可以作为消费者,以非常灵活的方式在ETL或ELT过程中使用。

ETL优势,更加趋向于业务模型。
ELT优势,更加趋向于数据仓库模型。

3.3.1与Hive集成

Impala一个主要的目标就是让Hadoop上的SQL操作更加快速,高效到能够吸引其他在Hadoop上运行SQL的用户。
只要Hive使用的是Impala支持的数据类型,文件格式或者压缩方式,Impala都可以直接访问。
Impala查询优化器可使用表统计信息和列统计信息。在Hive中,我们可以通过ANALYZE TABLE语句搜集这些信息。

3.3.2与HDFS集成

Impala使用分布式的文件系统HDFS作为主要的数据存储方式。Impala依赖于HDFS的冗余机制来避免节点的硬件或者网络故障。Impala表的数据以文件的形式存储在HDFS中

3.3.3使用HBase

HBase是替代HDFS作为lmpala的数据存储的另一种方式。
通过在Impala中定义到HBase表的映射关系,我们可以实现通过Impala查询HBase中的数据,甚至可以实现Impala和HBase表的连接查询。

猜你喜欢

转载自blog.csdn.net/myvanguard/article/details/86634061
今日推荐