Apache Impala概念和架构

Apache Impala概念和架构

目录

Apache Impala概念和架构... 1

Impala服务器组件... 1

Impala守候进程impalad. 1

Impala状态存储进程Statestored. 2

Impala目录服务进程catalogd. 3

开发Impala应用程序... 4

Impala SQL方言简介... 4

Impala编程接口简介... 7


本方提供一些相关的背景信息,可以帮助使用Impala和它的特性来提高生产效率。有助于理解Impala的各个方面与你可能已经熟悉的其他技术(如关系数据库管理系统和数据仓库)或其他Hadoop组件(如Hive、HDFS和HBase)之间的关系。

Impala 服务器组件

Impala服务器是一个分布式的大型并行处理(MPP)数据库引擎。它由不同的守护进程组成,这些进程运行在CDH集群中的特定主机上。

Impala 守候进程impalad

Impala的核心组件是一个守护进程,它运行在集群的每个数据节点(DataNode)上,它是一个叫impalad的进程。它负责读取和写入数据文件;接受从impala-shell传递过来的命令,Hue、JDBC或ODBC传输过来的查询;并行化查询请求并在整个集群中分配工作;将中间查询结果传输回中央协调器节点。

你可以向运行在任何数据节点(DataNode)上的Impala守护进程提交查询,该守护进程的实例将作为该查询的协调节点。其他节点将部分查询结果发送回协调器,它将构建查询的最终结果集。当通过Impala -shell命令进行功能操作时,你可能总会连接到同一个Impala守护进程上进行操作。对于支撑生产环境工作负载的集群,你可以通过使用JDBC或ODBC接口将每个查询提交给不同的Impala守护进程,从而实现负载均衡。

Impala守护进程与statestore一直保持通信,以确认哪些节点是健康的,可以接受新任务。

当集群中的任何Impala节点创建、修改或删除任何类型的对象时,或者当Impala处理插入(INSERT )或加载(LOAD DATA)操作时,它们也会接收来自catalogd守护进程(在Impala 1.2中引入)的广播消息。这种后台通信使得在Impala 1.2之前,跨节点协调元数据所需的刷新(REFRESH )或设置元数据失效(INVALIDATE METADATA )功能的操作次数降到最低。

在CDH 5.12 /

Impala 2.9和更高版本中,您可以控制哪些主机充当查询协调器,哪些主机充当查询执行器,以提高大型集群中高并发负载的可伸缩性。

Impala 状态存储进程Statestored

被称为statestore的Impala组件负责检查集群中所有数据节点(DataNode)上的Impala守护进程的健康状况,并不断地将其结果转发给每个守护进程。它是一个名为statestored的守护进程,而且只需要在集群中的某一个主机上运行这个进程。如果一个Impala守护进程由于硬件故障、网络错误、软件问题或其他原因而脱机,那么statestore会通知所有其他的Impala守护进程,以避免后来的查询请求被发送到那些无法连接的数据节点。

statestore的设计目标是当群集状态出错时提供帮助,它对Impala集群的正常运行并不重要。如果statestore不运行了或无法访问到,Impala守护进程将继续运行,并像往常一样分配工作,但是如果这时其他的Impala守护进程处在了脱机状态下,那么集群就变得不健壮了。当statestore重新上线时,它会重新建立与Impala守护进程的通信,并恢复其监控功能。

负载平衡和高可用性的大多数考虑都适用于impalad守护进程。statestored 和catalogd 守护进程对高可用性没有特殊要求,因为这些守护进程的问题不会导致数据丢失。如果这些守护进程由于某个主机的中断而不可用,您可以停止Impala服务,删除Impala

StateStore和Impala目录服务器角色,然后在另一个主机上添加这些角色,并重新启动Impala服务。

Impala 目录服务进程catalogd

被称为目录服务的Impala组件,维护着从Impala SQL语句到集群中的所有Impala守护进程需要用到的元数据。它是一个名为catalogd的守护进程,只需要在集群中的某一个主机上执行这个进程即可。因为请求是通过statestore守护进程传递的,所以在同一个主机上运行statestored 和catalogd服务是有它的好处的。

目录服务的存在,避免了在执行更改元数据的语句时要执行REFRESH和INVALIDATE METADATA 操作的需要。如果是使用HIVE,那么当创建一个表、加载数据等操作时,您需要在这个Impala节点上发出REFRESH或INVALIDATE METADATA ,然后再在这个节点上执行查询。

这些特性涉及到Impala的许多功能点:

[if !supportLists]·     [endif]当CREATE TABLE、INSERT或其他表更改或数据更改的操作是通过Impal来执行的话,是不需要再REFRESH或INVALIDATE METADATA操作来更新信息的 。如果这些操作是通过Hive或直接在HDFS中操作数据文件来完成的,那么这些语句必需要在查询前执行的,只需要在一个Impala节点上执行这样的语句就可以了,而不需要在所有节点上都执行一回。

默认情况下,系统启动时,元数据的加载和缓存是异步的,因此Impala可以立即开始接受请求。如果需要Impala等待所有元数据在接受任何请求之前加载好,可以设置catalogd配置选项——load_catalog_in_background=false。

负载平衡和高可用性的大多数考虑都适用于impalad守护进程。statestored 和catalogd 守护进程对高可用性没有特殊要求,因为这些守护进程的问题不会导致数据丢失。如果这些守护进程由于某个主机的中断而不可用,您可以停止Impala服务,删除Impala StateStore和Impala目录服务器角色,然后在另一个主机上添加这些角色,并重新启动Impala服务。

发Impala 应用程序

Impala的核心开发语言是SQL。还可以使用Java或其他语言通过标准的JDBC和ODBC接口与Impala进行交互,很多许多商业智能工具就是这样做的。对于专门的分析,还可以通过用c++或Java中编写用户定义函数(UDF)来补充SQL内置函数。

Impala SQL方言简介

Impala SQL方言与Apache Hive(HiveQL)中使用的SQL语法高度兼容。因此,对于已经熟悉在Hadoop基础设施上运行SQL查询的用户来说,使用Impala SQL是很容易的。目前,Impala SQL支持HiveQL语句、数据类型和内置函数的部分子集。Impala还包含了用于公共行业特性的额外的内置函数,以简化从非hadoop体系的系统当中移植SQL。

对于有着使用传统数据库或数据仓库背景的用户来说,SQL方言的以下几个方面特性应该是比较熟悉的:

SELECT语句包括熟悉的子句,例如WHERE、GROUP BY、ORDER BY和WITH。同时也有很多熟悉的概念,例如连接、处理字符串、数字和日期的内置函数、聚合函数、子查询和比较运算符(如IN()和BETWEEN)。SELECT语句是SQL标准程度当中最高的。

从数据仓库技术体系里,我们认识到分区表的概念。一个或多个列充当分区键,数据从物理上进行不同的安排,以便查询在WHERE子句中可以跳过与筛选条件不匹配的分区。例如,如果你有10年的数据,并使用某一查询条件,比如WHERE year = 2015,WHERE year > 2010,或者WHERE year IN (2014年,2015年),Impala跳过了所有非匹配年份的数据,大大减少了查询所需I/O的压力。

在Impala 1.2和更高版本中,udf让您在SELECT 和INSERT等语句执行期间去执行自定义比较和转换逻辑。

对于来自传统数据库或数据仓库背景的用户来说,希望精通Hadoop环境的话,以下几个关于SQL方言的方面,可能还需要一些学习和实践:

impala SQL专注于查询,包括的DML功能相对较少。没有UPDATE 或DELETE语句。陈旧的数据通常被直接丢弃(通过DROP TABLE 或ALTER TABLE或是DROP PARTITION语句等)或替换(通过INSERT OVERWRITE 语句)。

所有的数据创建都是通过INSERT语句完成的,这些语句通常通过从其他表查询相应数据来批量给别的表插入数据。有两种方式,INSERT INTO是追加数据到现有数据表,INSERT OVERWRITE是替换表或分区的全部数据(类似于TRUNCATE

    TABLE 后跟一个新的INSERT)。虽INSERT  VALUES语法是可以用于在单个语句中创建少量值,但如果需要将大量数据从一个表复制到另一个表的话,使用INSERT SELECT 语法会更合适。

有时我们会在其他环境中构建Impala表定义和数据文件,然后附加到Impala,以便它能够运行实时查询。这样就可以与Hadoop生态系统的其他组件共享相同的数据文件和数据表元数据。Impala可以访问由Hive创建的表或是Hive插入的数据,Hive可以访问Impala生成的表和数据。许多其他的Hadoop组件如果是用Parquet和Avro这样的格式来写入文件的,也可以通过Impala来查询。

由于Hadoop和Impala主要关注的是在大型数据集上进行数据仓库式的操作,Impala SQL包含了一些习惯用法与传统数据库系统的导入工具集很相似。例如,可以创建一个表来读取逗号分隔的或tab分隔的文本文件,达到这个效果只需要在create table语句中指定是哪种分隔符。您可以通过创建外部表,用于读取现有数据文件而不需要移动或转换这些数据。

Impala读取大量数据时,这些数据可能不是完全整洁和可预测的,因此不需要对字符串数据类型进行长度限制。例如,你可以将数据库列定义为具有无限长度的字符串,而不是CHAR(1)或VARCHAR(64)这样的。(在Impala

    2.0和之后的更高版本中,是可以使用长度受限的CHAR和VARCHAR类型。)

Impala 编程接口简介

可以通过以下的方式连接Impala的守护进程并提交操作请求:

[if !supportLists]·     [endif]impala-shell (交互式的命令行解析工具)

[if !supportLists]·     [endif]Hue(一基于WEB界面的图形化工具) 

[if !supportLists]·     [endif]JDBC

[if !supportLists]·     [endif]ODBC

有了这些接口方式,就可以在异构环境中使用Impala,在非linux平台上运行JDBC或ODBC应用程序。您还可以将Impala与各种使用JDBC和ODBC接口的商业智能工具结合起来使用。

每个impalad守护进程在集群当中的单独节点上运行,侦听多个端口来接收传入的请求。来自impala-shell和Hue的请求通过同一个端口被路由到impalad守护进程。而impalad守护进程对于侦听JDBC和ODBC的请求侧是用另外的独立端口。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容