Impala的简单入门

article/2025/9/21 6:58:41

一、Impala概述

什么是Impala?

Impala是用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎。 它是一个用C ++和Java编写的开源软件。 与其他Hadoop的SQL引擎相比,它提供了高性能和低延迟。

换句话说,Impala是性能最高的SQL引擎(提供类似RDBMS的体验),它提供了访问存储在Hadoop分布式文件系统中的数据的最快方法。

为什么选择Impala?

Impala通过使用标准组件(如HDFS,HBase,Metastore,YARN和Sentry)将传统分析数据库的SQL支持和多用户性能与Apache Hadoop的可扩展性和灵活性相结合。

使用Impala,与其他SQL引擎(如Hive)相比,用户可以使用SQL查询以更快的方式与HDFS或HBase进行通信。

Impala可以读取Hadoop使用的几乎所有文件格式,如Parquet,Avro,RCFile。

Impala将相同的元数据,SQL语法(Hive SQL),ODBC驱动程序和用户界面(Hue Beeswax)用作Apache Hive,为面向批量或实时查询提供熟悉且统一的平台。

Apache Hive不同,Impala不基于MapReduce算法。 它实现了一个基于守护进程的分布式架构,它负责在同一台机器上运行的查询执行的所有方面。

因此,它减少了使用MapReduce的延迟,这使Impala比Apache Hive快。

Impala的优点

以下是Cloudera Impala的一些值得注意的优点的列表。

使用impala,您可以使用传统的SQL知识以极快的速度处理存储在HDFS中的数据。

由于在数据驻留(在Hadoop集群上)时执行数据处理,因此在使用Impala时,不需要对存储在Hadoop上的数据进行数据转换和数据移动。

使用Impala,您可以访问存储在HDFS,HBase和Amazon s3中的数据,而无需了解Java(MapReduce作业)。您可以使用SQL查询的基本概念访问它们。

为了在业务工具中写入查询,数据必须经历复杂的提取 - 变换负载(ETL)周期。但是,使用Impala,此过程缩短了。加载和重组的耗时阶段通过新技术克服,如探索性数据分析和数据发现,使过程更快。

Impala正在率先使用Parquet文件格式,这是一种针对数据仓库场景中典型的大规模查询进行优化的柱状存储布局。

Impala的功能

以下是cloudera Impala的功能 - 

Impala可以根据Apache许可证作为开源免费提供。

Impala支持内存中数据处理,即,它访问/分析存储在Hadoop数据节点上的数据,而无需数据移动。

您可以使用Impala使用类SQL查询访问数据。

与其他SQL引擎相比,Impala为HDFS中的数据提供了更快的访问。

使用Impala,您可以将数据存储在存储系统中,如HDFS,Apache HBase和Amazon s3。

您可以将Impala与业务智能工具(如Tableau,Pentaho,Micro策略和缩放数据)集成。

Impala支持各种文件格式,如LZO,序列文件,Avro,RCFile和Parquet。

Impala使用Apache Hive的元数据,ODBC驱动程序和SQL语法。

关系数据库和Impala

Impala使用类似于SQL和HiveQL的Query语言。 下表描述了SQL和Impala查询语言之间的一些关键差异。

Impala

关系型数据库

 

Impala使用类似于HiveQL的类似SQL的查询语言。

关系数据库使用SQL语言。

 

在Impala中,您无法更新或删除单个记录。

在关系数据库中,可以更新或删除单个记录。

 

Impala不支持事务。

关系数据库支持事务。

 

Impala不支持索引。

关系数据库支持索引。

 

Impala存储和管理大量数据(PB)。

 与Impala相比,关系数据库处理的数据量较少(TB)。

 

Hive,Hbase和Impala

虽然Cloudera Impala使用与Hive相同的查询语言,元数据和用户界面,但在某些方面它与Hive和HBase不同。 下表介绍了HBase,Hive和Impala之间的比较分析。

HBase

Hive

Impala

 

HBase是基于Apache Hadoop的宽列存储数据库。 它使用BigTable的概念。

Hive是一个数据仓库软件。 使用它,我们可以访问和管理基于Hadoop的大型分布式数据集。

Impala是一个管理,分析存储在Hadoop上的数据的工具。

 

HBase的数据模型是宽列存储。

Hive遵循关系模型。

Impala遵循关系模型。

 

HBase是使用Java语言开发的。

Hive是使用Java语言开发的。

Impala是使用C ++开发的。

 

HBase的数据模型是无模式的。

Hive的数据模型是基于模式的。

Impala的数据模型是基于模式的。

 

HBase提供Java,RESTful和Thrift API。

Hive提供JDBC,ODBC,Thrift API。

Impala提供JDBC和ODBC API。

 

支持C,C#,C ++,Groovy,Java PHP,Python和Scala等编程语言。

支持C ++,Java,PHP和Python等编程语言。

Impala支持所有支持JDBC / ODBC的语言。

 

HBase提供对触发器的支持。

Hive不提供任何触发器支持。

Impala不提供对触发器的任何支持。

 

所有这三个数据库

NOSQL数据库。

可用作开源。

支持服务器端脚本。

按照ACID属性,如Durability和Concurrency。

使用分片进行分区。

Impala的缺点

使用Impala的一些缺点如下 - 

Impala不提供任何对序列化和反序列化的支持。

Impala只能读取文本文件,而不能读取自定义二进制文件。

每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新。

 

 

二、Impala架构

Impala是在Hadoop集群中的许多系统上运行的MPP(大规模并行处理)查询执行引擎。 与传统存储系统不同,impala与其存储引擎解耦。 它有三个主要组件,即Impala daemon(Impalad),Impala Statestore和Impala元数据或metastore。

 

Impala daemon(Impalad)

Impala daemon(也称为impalad)在安装Impala的每个节点上运行。 它接受来自各种接口的查询,如impala shell,hue browser等...并处理它们。

每当将查询提交到特定节点上的impalad时,该节点充当该查询的“协调器节点”。 Impalad还在其他节点上运行多个查询。 接受查询后,Impalad读取和写入数据文件,并通过将工作分发到Impala集群中的其他Impala节点来并行化查询。 当查询处理各种Impalad实例时,所有查询都将结果返回到中央协调节点。

根据需要,可以将查询提交到专用Impalad或以负载平衡方式提交到集群中的另一Impalad。

Impala 存储的状态

Impala有另一个称为Impala State存储的重要组件,它负责检查每个Impalad的运行状况,然后经常将每个Impala Daemon运行状况中继给其他守护程序。 这可以在运行Impala服务器或群集中的其他节点的同一节点上运行。
Impala State存储守护进程的名称为存储的状态。 Impalad将其运行状况报告给Impala State存储守护程序,即存储的状态。
在由于任何原因导致节点故障的情况下,Statestore将更新所有其他节点关于此故障,并且一旦此类通知可用于其他impalad,则其他Impala守护程序不会向受影响的节点分配任何进一步的查询。

Impala元数据和元存储

Impala元数据和元存储是另一个重要组件。 Impala使用传统的MySQL或PostgreSQL数据库来存储表定义。 诸如表和列信息和表定义的重要细节存储在称为元存储的集中式数据库中。
每个Impala节点在本地缓存所有元数据。 当处理极大量的数据和/或许多分区时,获得表特定的元数据可能需要大量的时间。 因此,本地存储的元数据缓存有助于立即提供这样的信息。
当表定义或表数据更新时,其他Impala后台进程必须通过检索最新元数据来更新其元数据缓存,然后对相关表发出新查询。

查询处理接口

要处理查询,Impala提供了三个接口,如下所示。

Impala-shell - 使用Cloudera VM设置Impala后,可以通过在编辑器中键入impala-shell命令来启动Impala shell。 我们将在后续章节中更多地讨论Impala shell。

Hue界面 - 您可以使用Hue浏览器处理Impala查询。 在Hue浏览器中,您有Impala查询编辑器,您可以在其中键入和执行impala查询。 要访问此编辑器,首先,您需要登录到Hue浏览器

ODBC / JDBC驱动程序 - 与其他数据库一样,Impala提供ODBC / JDBC驱动程序。 使用这些驱动程序,您可以通过支持这些驱动程序的编程语言连接到impala,并构建使用这些编程语言在impala中处理查询的应用程序。

查询执行过程

每当用户使用提供的任何接口传递查询时,集群中的Impalads之一就会接受该查询。 此Impalad被视为该特定查询的协调程序。
在接收到查询后,查询协调器使用Hive元存储中的表模式验证查询是否合适。 稍后,它从HDFS名称节点收集关于执行查询所需的数据的位置的信息,并将该信息发送到其他impalad以便执行查询。
所有其他Impala守护程序读取指定的数据块并处理查询。 一旦所有守护程序完成其任务,查询协调器将收集结果并将其传递给用户。



http://chatgpt.dhexx.cn/article/a914wWua.shtml

相关文章

Impala 介绍

文章目录 1. Impala基本介绍2. Impala与Hive关系3. Impala与Hive异同3.1 Impala使用的优化技术3.2 执行计划3.3 数据流3.4 内存使用3.5 调度3.6 容错3.7 适用面 4. Impala架构4.1 Impalad4.2 Impala State Store4.3 CLI4.4 Catalogd(目录) 5. Impala查询…

Impala 安装

1、集群准备 1.1、安装Hadoop,Hive Impala的安装需要提前装好Hadoop,Hive这两个框架hive需要在所有的Impala安装的节点上面都要有,因为Impala需要引用Hive的依赖包hadoop的框架需要支持C程序访问接口,查看下图,如果有该路径有.s…

impala详解

0 简介 Impala是Cloudera公司主导开发的新型查询系统,它提供SQL语义,能查询存储在Hadoop的HDFS和**HBase**中的PB级大数据。已有的Hive系统虽然也提供了SQL语义,但由于Hive底层执行使用的是MapReduce引擎,仍然是一个批处理过程&a…

Impala基础知识

概述 Impala是由Cloudera公司开发的新型查询系统,参照Dremel系统进行设计的。提供SQL语义,能查询存储在Hadoop的HDFS和HBase上的PB级大数据,在性能上比Hive高出3~30倍。 基于Hive的大数据实时分析查询引擎,其运行需要依赖于Hive…

大数据之 impala教程

一、什么是Impala? Impala是用于处理存储在Hadoop集群中的大量数据的MPP(大规模并行处理)SQL查询引擎。 它是一个用C 和Java编写的开源软件。 与其他Hadoop的SQL引擎相比,它提供了高性能和低延迟。 换句话说,Impala是…

impala入门(一篇就够了)

文章目录 01 引言02 impala概述2.1 简介2.2 架构2.2.1 Impalad(守护进程)2.2.2 Statestore(存储状态)2.2.3 metadata(元数据)/metastore(元存储) 03 impala 安装04 impala 接口05 im…

大数据——Impala工具使用

目录 一、Impala概述 二、Impala优点 三、Impala和Hive 3.1 Impala和Hive的关系 3.2 Impala和Hive的区别 五、Impala查询过程 六、Impala安装 七、impala-shell命令 八、数据库语句 数据库命令 数据表命令 视图操作 Impala数据导入 刷新Impala数据 九、Java API 一…

近端策略优化算法PPO

本文介绍近端策略优化算法(Proximal Policy Optimization)也就是PPO。 文章目录 前言一、on-policy和off-policy1.1 on-policy和off-policy的概念1.2 Importance Sampling的概念 二、TRPO、PPO算法2.1 Trust Region Algorithms2.2 Stochastic Gradient A…

【强化学习】PPO算法求解倒立摆问题 + Pytorch代码实战

文章目录 一、倒立摆问题介绍二、PPO算法简介三、详细资料四、Python代码实战4.1 运行前配置4.2 主要代码4.3 运行结果展示4.4 关于可视化的设置 一、倒立摆问题介绍 Agent 必须在两个动作之间做出决定 - 向左或向右移动推车 - 以使连接到它的杆保持直立。 二、PPO算法简介 …

强化学习之PPO

阅读本文前先了解TRPO算法有助于理解,我对此也写过博客:https://blog.csdn.net/tianjuewudi/article/details/120191097 参考李宏毅老师的视频:https://www.bilibili.com/video/BV1Wv411h7kN?p80 PPO,全名Proximal Policy Opti…

【强化学习】PPO:从On-policy到Off-policy(PPO/TRPO/PPO-Penalty/PPO-Clip)

目录 一、为什么要从On- Policy到Off-Policy?二、如何从On- Policy到Off-Policy?三、如何使 p θ ( a t ∣ s t ) p_\theta(a_t|s_t) pθ​(at​∣st​)和 p θ ′ ( a t ∣ s t ) p_{\theta}(a_t|s_t) pθ′​(at​∣st​)不相差太多?3.1 PP…

如何理解PPO算法的核心操作clip

回顾 传统的策略梯度算法以下式作为策略网络的损失: g ^ E ^ t [ ∇ θ log ⁡ π θ ( a t ∣ s t ) A ^ t ] \hat{g}\hat{\mathbb{E}}_{t}\left[\nabla_{\theta} \log \pi_{\theta}\left(a_{t} \mid s_{t}\right) \hat{A}_{t}\right] g^​E^t​[∇θ​logπθ​…

强化学习PPO从理论到代码详解(2)---PPO1和PPO2

在线或离线学习 上一节我们了解了什么是策略梯度,本节开始讲PPO理论之前,我们先提出一个概念,什么在线学习,什么离线学习。 On-policy: Then agent learned and the agent interacting with Environment is the same Off-policy…

强化学习PPO代码讲解

阅读本文前对PPO的基本原理要有概念性的了解,本文基于我的上一篇文章:强化学习之PPO 当然,查看代码对于算法的理解直观重要,这使得你的知识不止停留在概念的层面,而是深入到应用层面。 代码采用了简单易懂的强化学习…

PPO算法(附pytorch代码)

这里写目录标题 一、PPO算法(1)简介(2)On-policy?(3)GAE (Generalized Advantage Estimation) 三、代码代码解析: 一、PPO算法 (1)简介 PPO算法…

论文笔记之PPO

15年OpenAI发表了TRPO算法,一直策略单调提升的算法;17年DeepMind基于TRPO发表了一篇Distributed-PPO,紧接着OpenAI发表了这篇PPO。可以说TRPO是PPO的前身,PPO在TRPO的基础上进行改进,使得算法可读性更高,实…

PPO实战学习总结

PPO used in go-bigger 前段时间一直在学习ppo算法,写了 一点总结,记录一下自己对ppo算法的一些理解与RL实战时候容易遇到的一些问题。代码地址如下,需要的可以自取: https://github.com/FLBa9762/PPO_used_in_Gobigger.git一般…

PPO算法

在线学习和离线学习 在线学习:和环境互动的Agent以及和要学习的Agent是同一个, 同一个Agent,一边和环境做互动,一边在学习。离线学习: 和环境互动及的Agent以和要学习的Agent不是同一个,学习的Agent通过看别人完来学习。 利用新的…

PPO2代码 pytorch框架

PPO2代码玩gym库的Pendulum环境 2022-8-02更新 我发现这篇文章浏览量惨淡啊。 咋滴,是不相信的我代码能用是吗? 所以,我给出reward的收敛曲线图: 开玩笑,出来混,我能卖你生瓜码子吗? ———…

PPO实战

哈哈初学,复现龙龙老师的实例! state:是平衡小车上的杆子,观测状态由 4 个连续的参数组成:推车位置 [-2.4,2.4],车速 [-∞,∞],杆子角度 [~-41.8&#xff0c…