impala单机部署文献资料

一、impala的介绍

imala基本介绍:

impala是cloudera提供的一款高效率的sql查询工具,提供实时的查询效果,官方测试性能比hive快10到100倍,其sql查询比sparkSQL还要更加快速,号称是当前大数据领域最快的查询sql工具,impala是参照谷歌的新三篇论文(Caffeine、Pregel、Dremel)当中的Dremel实现而来,其中旧三篇论文分别是(BigTable,GFS,MapReduce)分别对应我们即将学的HBase和已经学过的HDFS以及MapReduce。

impala是基于hive并使用内存进行计算,兼顾数据仓库,具有实时,批处理,多并发等优点。

impala与hive的关系:

impala是基于hive的大数据分析查询引擎,直接使用hive的元数据库metadata,意味着impala元数据都存储在hive的metastore当中,并且impala兼容hive的绝大多数sql语法。所以需要安装impala的话,必须先安装hive,保证hive安装成功,并且还需要启动hive的metastore服务。

impala的优点:

1、 impala比较快,非常快,特别快,因为所有的计算都可以放入内存当中进行完成,只要你内存足够大。

2、 摈弃了MR的计算,改用C++来实现,有针对性的硬件优化。

3、 具有数据仓库的特性,对hive的原有数据做数据分析。

4、支持ODBC,jdbc远程访问。

impala的缺点:

1、基于内存计算,对内存依赖性较大。

2、改用C++编写,意味着维护难度增大。

3、基于hive,与hive共存亡,紧耦合。

4、稳定性不如hive,不存在数据丢失的情况。

impala的架构以及查询计划

Impala的架构模块:

  • impala-server ==>启动的守护进程,执行我们的查询计划 从节点,官方建议与所有的datanode装在一起,可以通过hadoop的短路读取特性实现数据的快速查询。

  • impala-statestore ==》 状态存储区 主节点。

  • impalas-catalog ==》元数据管理区 主节点。

查询执行

impalad分为frontend和backend两个层次, frondend用java实现(通过JNI嵌入impalad), 负责查询计划生成, 而backend用C++实现, 负责查询执行。

frontend生成查询计划分为两个阶段:

(1)生成单机查询计划,单机执行计划与关系数据库执行计划相同,所用查询优化方法也类似。

(2)生成分布式查询计划。 根据单机执行计划, 生成真正可执行的分布式执行计划,降低数据移动, 尽量把数 据和计算放在一起。

上图是SQL查询例子, 该SQL的目标是在三表join的基础上算聚集, 并按照聚集列排序取topN。

impala的查询优化器支持代价模型: 利用表和分区的cardinality,每列的distinct值个数等统计数据, impala可估算执行计划代价, 并生成较优的执行计划。 上图左边是frontend查询优化器生成的单机查询计划, 与传统关系数据库不同, 单机查询计划不能直接执行, 必须转换成如图右半部分所示的分布式查询计划。 该分布式查询计划共分成6个segment(图中彩色无边框圆角矩形), 每个segment是可以被单台服务器独立执行的计划子树。

impala支持两种分布式join方式, 表广播和哈希重分布:

表广播方式保持一个表的数据不动, 将另一个表广播到所有相关节点(图中t3);

哈希重分布的原理是根据join字段哈希值重新分布两张表数据(譬如图中t1和t2)。

分布式计划中的聚集函数分拆为两个阶段执行。第一步针对本地数据进行分组聚合(Pre-AGG)以降低数据量, 并进行数据重分步, 第二步, 进一步汇总之前的聚集结果(mergeAgg)计算出最终结果。

与聚集函数类似, topN也是分为两个阶段执行, (1)本地排序取topN,以降低数据量; (2) merge sort得到最终topN结果。

Backend从frontend接收plan segment并执行, 执行性能非常关键,impala采取的查询性能优化措施有向量执行。 一次getNext处理一批记录, 多个操作符可以做pipeline。LLVM编译执行, CPU密集型查询效率提升5倍以上。IO本地化。 利用HDFS short-circuit local read功能,实现本地文件读取Parquet列存,相比其他格式性能最高提升5倍。

 

二、impala的安装环境准备

安装要求:

操作系统以及组件

1、Red Hat Enterprise Linux (RHEL)/CentOS 6.2 (64-bit)

2、hadoop

3、Hive

4、MySQL

5、impala

需要提前安装好MySQL数据库,hadoop、hive,这二个框架,并且hive需要在所有的impala安装的节点上面都要有,因为impala需要引用hive的依赖包,hadoop的框架需要支持C程序访问接口,查看下图,如果有该路径下有这么些文件,就证明支持C接口 。

三、各类组件信息

个人操作:主机名修改为node03(可自定义)。

所需组件为jdk、hadoop、MySQL、hive、cdh5.14.0-centos7

将安装包上传至/opt目录下,方便后续安装使用。

在hosts下添加一条主机名印射

[root@node03 ~]# vim /etc/hosts

保存并退出→ :wq

重启生效:[root@node03 ~]reboot

四、关闭防火墙

后期需要组件之间相互通信,所以需要将防火墙关闭。

查看防火墙状态:[root@node03 opt]# systemctl status firewalld

Active: active (running)则为防火墙开启状态。

关闭防火墙:

先执行暂时关闭防火墙命令:[root@node03 opt]# systemctl stop firewalld.service

在执行永久关闭防火墙命令:[root@node03 opt]# systemctl disable firewalld.service

查看防火墙状态:[root@node03 opt]# systemctl status firewalld

Active: inactive (dead)则为防火墙关闭状态。

五、组件安装

1、jdk安装

解压jdk压缩文件。

[root@node03 opt]# unzip jdk1.8.211.zip

进入jdk目录,授权给install.sh安装脚本并执行。

授权安装脚本:[root@node03 jdk]# chmod 777 install.sh

执行安装脚本:[root@node03 jdk]# ./install.sh

更新环境变量:[root@node03 jdk]# source /etc/profile

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值