前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据篇---Impala学习第 1 部分 Impala概述第 2 部分 Impala 安装与⼊⻔案例第 3 部分 Imapla的架构原理第 4 部分 Impala的使用

大数据篇---Impala学习第 1 部分 Impala概述第 2 部分 Impala 安装与⼊⻔案例第 3 部分 Imapla的架构原理第 4 部分 Impala的使用

作者头像
用户2337871
发布2020-11-25 14:57:18
9380
发布2020-11-25 14:57:18
举报
文章被收录于专栏:gitgit

第 1 部分 Impala概述

1.1 Impala是什么

代码语言:javascript
复制
Impala是Cloudera提供的⼀款开源的针对HDFS和HBASE中的PB级别数据进⾏交互式实时查询(Impala
速度快),Impala是参照⾕歌的新三篇论⽂当中的Dremel实现⽽来,其中旧三篇论⽂分别是
(BigTable,GFS,MapReduce)分别对应我们即将学的HBase和已经学过的HDFS以及MapReduce。
Impala最⼤卖点和最⼤特点就是快速,Impala中⽂翻译是⾼⻆羚⽺。

1.2 Impala优势

  • Impala与Hive对⽐
    • Impala的技术优势
代码语言:javascript
复制
* Impala没有采取MapReduce作为计算引擎,MR是⾮常好的分布式并⾏计算框架,但MR引擎更多
的是⾯向批处理模式,⽽不是⾯向交互式的SQL执⾏。与 Hive相⽐:Impala把整个查询任务转为
⼀棵执⾏计划树,⽽不是⼀连串的MR任务,在分发执⾏计划后,Impala使⽤拉取的⽅式获取上个
阶段的执⾏结果,把结果数据、按执⾏树流式传递汇集,减少的了把中间结果写⼊磁盘的步骤,再
从磁盘读取数据的开销。Impala使⽤服务的⽅式避免 每次执⾏查询都需要启动的开销,即相⽐
Hive没了MR启动时间。
* 使⽤LLVM(C++编写的编译器)产⽣运⾏代码,针对特定查询⽣成特定代码。
* 优秀的IO调度,Impala⽀持直接数据块读取和本地代码计算。
* 选择适合的数据存储格式可以得到最好的性能(Impala⽀持多种存储格式)。
* 尽可能使⽤内存,中间结果不写磁盘,及时通过⽹络以stream的⽅式传递。
代码语言:javascript
复制
* Impala与Hive对⽐分析
  • 查询过程
代码语言:javascript
复制
* Hive:在Hive中,每个查询都有⼀个“冷启动”的常⻅问题。(map,reduce每次都要启动关闭,申
请资源,释放资源。。。)
* Impala:Impala避免了任何可能的启动开销,这是⼀种本地查询语⾔。 因为要始终处理查询,则
Impala守护程序进程总是在集群启动之后就准备就绪。守护进程在集群启动之后可以接收查询任
务并执⾏查询任务。

中间结果
* Hive:Hive通过MR引擎实现所有中间结果,中间结果需要落盘,这对降低数据处理速度有不利影
响。
* Impala:在执⾏程序之间使⽤流的⽅式传输中间结果,避免数据落盘。尽可能使⽤内存避免磁盘
开销
交互查询
* Hive:对于交互式计算,Hive不是理想的选择。
* Impala:对于交互式计算,Impala⾮常适合。(数据量级PB级)
计算引擎
* Hive:是基于批处理的Hadoop MapReduce
* Impala:更像是MPP数据库
容错
* Hive:Hive是容错的(通过MR&Yarn实现)
* Impala:Impala没有容错,由于良好的查询性能,Impala遇到错误会重新执⾏⼀次查询
查询速度
* Impala:Impala⽐Hive快3-90倍。

# Impala优势总结
* 1. Impala最⼤优点就是查询速度快,在⼀定数据量下;
* 2. 速度快的原因:避免了MR引擎的弊端,采⽤了MPP数据库技术,

1.3 Impala的缺点

代码语言:javascript
复制
* 1. Impala属于MPP架构,只能做到百节点级,⼀般并发查询个数达到20左右时,整个系统的吞吐已
经达到满负荷状态,在扩容节点也提升不了吞吐量,处理数据量在PB级别最佳。
* 2. 资源不能通过YARN统⼀资源管理调度,所以Hadoop集群⽆法实现Impala、Spark、Hive等组件
的动态资源共享。

1.4 适⽤场景

代码语言:javascript
复制
* Hive: 复杂的批处理查询任务,数据转换任务,对实时性要求不⾼同时数据量⼜很⼤的场景。
* Impala:实时数据分析,与Hive配合使⽤,对Hive的结果数据集进⾏实时分析。impala不能完全取代
hive,impala可以直接处理hive表中的数据。

第 2 部分 Impala 安装与⼊⻔案例

第 3 部分 Imapla的架构原理

第 4 部分 Impala的使用

代码语言:javascript
复制
Impala的核⼼开发语⾔是sql语句,Impala有shell命令⾏窗⼝,以及JDBC等⽅式来接收sql语句执⾏,
对于复杂类型分析可以使⽤C++或者Java来编写UDF函数。
Impala的sql语法是⾼度集成了Apache Hive的sql语法,Impala⽀持Hive⽀持的数据类型以及部分Hive
的内置函数。
* 需要注意的⼏点:
1. Impala与Hive类似它们的重点都是在与查询,所以像Update,delete等具有更新性质的操作最好不
要使⽤这种⼯具,对于删除数据的操作可以通过Drop Table,Alter Table Drop Partition来实现,更
新可以尝试使⽤Insert overwrite⽅式
2. 通常使⽤Impala的⽅式是数据⽂件存储在Hdfs⽂件系统,借助于Impala的表定义来查询和管理
Hdfs上的数据⽂件;
3. Impala的使⽤⼤多数与Hive相同,⽐如Impala同样⽀持内外部表,以及分区等,可以借鉴参考
Hive的使⽤。

第 1 节 Impala-shell命令参数

1.1 impala-shell外部命令

代码语言:javascript
复制
所谓的外部命令指的是不需要进⼊到impala-shell交互命令⾏当中即可执⾏的命令参数。impala-shell后
⾯执⾏的时候可以带很多参数。你可以在启动 impala-shell 时设置,⽤于修改命令执⾏环境。
impala-shell –h可以帮助我们查看帮助⼿册。也可以参考课程附件资料。
⽐如⼏个常⻅的:
impala-shell –r刷新impala元数据,与建⽴连接后执⾏ REFRESH 语句效果相同(元数据发⽣变化的时候)
impala-shell –f ⽂件路径 执⾏指的的sql查询⽂件。
impala-shell –i指定连接运⾏ impalad 守护进程的主机。默认端⼝是 21000。你可以连接到集群中运⾏
impalad 的任意主机。
impala-shell –o保存执⾏结果到⽂件当中去。

展示Impala默认⽀持的内置函数需要进⼊Impala默认系统数据库中执⾏

代码语言:javascript
复制
show functions;

** 在其它数据库下⽆法查看!!

1.2 impala-shell内部命令

所谓内部命令是指,进⼊impala-shell命令⾏之后可以执⾏的语法。

connect hostname 连接到指定的机器impalad上去执⾏。

invalidate metadata全量刷新,性能消耗较⼤,主要⽤于hive当中新建数据库或者数据库表的时候来进 ⾏刷新。

quit/exit命令 从Impala shell中退出

explain 命令 ⽤于查看sql语句的执⾏计划。

explain的值可以设置成0,1,2,3等⼏个值,其中3级别是最⾼的,可以打印出最全的信息

代码语言:javascript
复制
set explain_level=3;

profile命令执⾏sql语句之后执⾏,可以 打印出更加详细的执⾏步骤,主要⽤于查询结果的查看,集群的调优等。

expalin:可以不真正执⾏任务,只是展示任务的执⾏计划;

profile:需要任务执⾏完成后调⽤,可以从更底层以及更详细的层⾯来观察我们运⾏impala的任务,进 ⾏调优。

第 2 节 Impala sql语法

2.1 数据库特定语句

1. 创建数据库

CREATE DATABASE语句⽤于在Impala中创建新数据库。

CREATE DATABASE IF NOT EXISTS database_name;

这⾥,IF NOT EXISTS是⼀个可选的⼦句。如果我们使⽤此⼦句,则只有在没有具有相同名称的现有数 据库时,才会创建具有给定名称的数据库。

默认就会在hive的数仓路径下创建新的数据库名⽂件夹

代码语言:javascript
复制
/user/hive/warehouse/lagoutest.db
2. 删除数据库

Impala的DROP DATABASE语句⽤于从Impala中删除数据库。 在删除数据库之前,建议从中删除所有 表。

如果使⽤级联删除,Impala会在删除指定数据库中的表之前删除它。

代码语言:javascript
复制
drop database sample cascade;

2.2 表特定语句

1. create table语句

CREATE TABLE语句⽤于在Impala中的所需数据库中创建新表。 需要指定表名字并定义其列和每列的数 据类型。

impala⽀持的数据类型和hive类似.

代码语言:javascript
复制
create table IF NOT EXISTS database_name.table_name ( column1 data_type, 
column2 data_type, column3 data_type, ……… columnN data_type);
CREATE TABLE IF NOT EXISTS my_db.student(name STRING, age INT, contact INT );

默认建表的数据存储路径跟hive⼀致。也可以在建表的时候通过location指定具体路径。

2. insert 语句
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第 1 部分 Impala概述
    • 1.1 Impala是什么
      • 1.2 Impala优势
        • 1.3 Impala的缺点
          • 1.4 适⽤场景
          • 第 2 部分 Impala 安装与⼊⻔案例
          • 第 3 部分 Imapla的架构原理
          • 第 4 部分 Impala的使用
            • 第 1 节 Impala-shell命令参数
              • 1.1 impala-shell外部命令
            • 1.2 impala-shell内部命令
              • 第 2 节 Impala sql语法
                • 2.1 数据库特定语句
                • 2.2 表特定语句
            相关产品与服务
            数据库
            云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档