连接impala出现method not supported_大数据之Impala入门实战,看这篇就够了

f5e0f0378d591715b9b950c9f5c2cc27.png

学习路径

  • 官网:http://impala.apache.org/
  • 使用手册:http://impala.apache.org/docs/build/html/index.html
  • Sql:http://impala.apache.org/docs/build/html/topics/impalalangrefsql.html
  • 窗口函数:http://impala.apache.org/docs/build/html/topics/impala_functions.html
  • 基本操作:http://impala.apache.org/docs/build/html/topics/impala_tutorial.html
  • impala-shell:http://impala.apache.org/docs/build/html/topics/impalaimpalashell.html

概述

  1. Apache Impala是Apache Hadoop的开源原生分析数据库;
  2. Impala于2017年11月15日从Apache孵化成顶级项目。在以前称为“Cloudera Impala”的文档中,现在的官方名称是“Apache Impala”。
  3. Impala为Hadoop上的BI /分析查询提供低延迟和高并发性(不是由Apache Hive等批处理框架提供)。即使在多租户环境中,Impala也可以线性扩展。
  4. 利用与Hadoop部署相同的文件和数据格式以及元数据,安全性和资源管理框架 - 无冗余基础架构或数据转换/复制。
  5. 对于Apache Hive用户,Impala使用相同的元数据和ODBC驱动程序。与Hive一样,Impala支持SQL
  6. Impala与本机Hadoop安全性和Kerberos集成以进行身份验证,通过Sentry模块,您可以确保为正确的用户和应用程序授权使用正确的数据。
  7. 使用Impala,无论是使用SQL查询还是BI应用程序,更多用户都可以通过单个存储库和元数据存储进行交互

什么是Impala

  1. Impala是一种面向实时或者面向批处理的框架;
  2. Impala的数据可以存储在HDFS,HBase和Amazon Simple Storage Servive(S3)中;
  3. Impala和Hive使用了相同的元数据存储;
  4. 可以通过SQL的语法,JDBC,ODBC和用户界面(Hue中的Impala进行查询);

我们知道Hive底层是MapReduce,在这里就可以看出区别了,Impala并不是为了替换构建在MapReduce上的批处理框架,就像我们说的Hive,Hive适用于长时间运行的批处理作业,例如涉及到Extract,Transform和Load(ETL)类型的作业.而Impala是进行实时处理的.

优势

  1. 通过sql进行大量数据处理;
  2. 可以进行分布式部署,进行分布式查询;
  3. 可以和不同组件之间进行数据共享,不需要复制或者导入,导出等步骤,例如:可以先使用hive对数据进行ETL操作然后使用Impala进行查询.因为Impala和hive公用同一个元数据,这样就可以方便的对hive生成的数据进行分析。

Impala如何与Apache Hadoop一起使用

Impala解决方案由以下组件组成:

  1. 客户端 - 包括Hue,ODBC客户端,JDBC客户端和Impala Shell的实体都可以与Impala进行交互。这些接口通常用于发出查询或完成管理任务,例如连接到Impala。
  2. Hive Metastore - 存储有关Impala可用数据的信息。例如,Metastore让Impala知道哪些数据库可用,以及这些数据库的结构是什么。在创建,删除和更改模式对象,将数据加载到表中等等时,通过Impala SQL语句,相关的元数据更改将通过Impala 1.2中引入的专用目录服务自动广播到所有Impala节点。
  3. Impala - 此过程在DataNodes上运行,协调并执行查询。Impala的每个实例都可以接收,计划和协调来自Impala客户端的查询。
  4. HBase和HDFS -数据的存储。

下面这幅图应该说的很清楚了:

19fbaf377c1cdc1e74ad74923537e066.png

使用Impala执行的查询流程如下

  • 用户应用程序通过ODBC或JDBC向Impala发送SQL查询,这些查询提供标准化的查询接口。用户应用程序可以连接到impalad群集中的任何应用程序。这impalad将成为查询的协调者。
  • Impala会解析查询并对其进行分析,以确定impalad整个群集中的实例需要执行哪些任务 。计划执行以实现最佳效率。
  • 本地impalad实例访问HDFS和HBase等服务以提供数据。
  • 每个都impalad将数据返回给协调impalad,协调将这些结果发送给客户端。

impala-shell

使用Impala shell工具(impala-shell)来设置数据库和表,插入数据和发出查询

17ae482de863c78b1d2fbc6a761d7529.png
53d17273c1b18851d9239ecbb65058f1.png

概念与架构

Impala Server的组件

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

The Impala Daemon

Impala的核心组件是Impala daemon。Impala daemon执行的一些关键功能是:

  • 读取和写入数据文件。
  • 接受从impala-shell命令,Hue,JDBC或ODBC传输的查询。
  • 并行化查询并在群集中分配工作。
  • 将中间查询结果发送回中央协调器。
  • 可以通过以下方式之一部署Impala守护程序:
  1. HDFS和Impala位于同一位置,每个Impala守护程序与DataNode在同一主机上运行。
  2. Impala单独部署在计算群集中,可从HDFS,S3,ADLS等远程读取。Impala守护进程与StateStore保持持续通信,以确认哪些守护进程是健康的并且可以接受新工作。

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

Impala Statestore

Impala Statestore进程检查集群中所有Impala daemon的运行状况,并把信息反馈给Impala daemon进程。您只需要在群集中的一台主机上执行此类过程。如果Impala守护程序由于硬件故障,网络错误,软件问题或其他原因而脱机,则StateStore会通知所有其他Impala daemon程序,以便将来的查询可以避免向无法访问的Impala守护程序发出请求。

因为StateStore的目的是在出现问题时提供帮助并向协调器广播元数据,因此对Impala集群的正常操作并不总是至关重要的。如果StateStore未运行或无法访问,则在处理Impala已知的数据时,Impala守护程序会像往常一样继续运行和分配工作。如果其他Impala守护程序失败,则群集变得不那么健壮,并且当StateStore脱机时,元数据变得不那么一致。当StateStore重新联机时,它会重新建立与Impala守护程序的通信并恢复其监视和广播功能。

8a6e1e239e0cd428ee300db005073245.png

The Impala Catalog Service

Impala Catalog Service进程可以把Impala SQL语句中的元数据更改信息反馈到集群中的所有Impala守护程序。只需要在群集中的一台主机上执行此类过程。因为请求是通过StateStore守护程序传递的,所以要在同一主机上运行statestored和catalogd服务。

当通过Impala发出的语句执行元数据更改时,Impala Catalog Service进程避免了REFRESH和INVALIDATE METADATA语句的使用,该进程可以为我们更新元数据信息。

使用–loadcatalogin_background选项控制何时加载表的元数据。

  • 如果设置为false,则在第一次引用表时会加载表的元数据。这意味着第一次运行可能比后续运行慢。在impala2.2开始,默认loadcatalogin_background是 false。
  • 如果设置为true,即使没有查询需要该元数据,目录服务也会尝试加载表的元数据。因此,当运行需要它的第一个查询时,可能已经加载了元数据。但是,由于以下原因,我们建议不要将选项设置为true。

后台加载可能会干扰查询特定的元数据加载。这可能在启动时或在使元数据无效之后发生,持续时间取决于元数据的数量,并且可能导致看似随机的长时间运行的查询难以诊断。

Impala可能会加载从未使用过的表的元数据,这会增加目录服务和Impala守护程序的目录大小,从而增加内存使用量。

负载均衡和高可用性的大多数注意事项适用于impalad守护程序。该statestored和catalogd守护进程不具备高可用性的特殊要求,因为这些守护进程的问题不会造成数据丢失。如果这些守护程序由于特定主机上的中断而变得不可用,则可以停止Impala服务,删除Impala StateStore和Impala目录服务器角色,在其他主机上添加角色,然后重新启动Impala服务。

数据类型

Impala支持一组数据类型,可用于表列,表达式值,函数参数和返回值。

注意: 目前,Impala仅支持标量类型,而不支持复合类型或嵌套类型。访问包含任何具有不受支持类型的列的表会导致错误。

有关Impala和Hive数据类型之间的差异,请参阅:http://impala.apache.org/docs/build/html/topics/impalalangrefunsupported.html#langrefhiveqldelta

  • ARRAY复杂类型(仅限Impala 2.3或更高版本)
  • BIGINT数据类型
  • BOOLEAN数据类型
  • CHAR数据类型(仅限Impala 2.0或更高版本)
  • DECIMAL数据类型(仅限Impala 3.0或更高版本)
  • 双数据类型
  • FLOAT数据类型
  • INT数据类型
  • MAP复杂类型(仅限Impala 2.3或更高版本)
  • REAL数据类型
  • SMALLINT数据类型
  • STRING数据类型
  • STRUCT复杂类型(仅限Impala 2.3或更高版本)
  • TIMESTAMP数据类型
  • TINYINT数据类型
  • VARCHAR数据类型(仅限Impala 2.0或更高版本)
  • 复杂类型(仅限Impala 2.3或更高版本)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值