1. 写在前面的话
这是博主在社区版hadoop环境下学习impala时搭建的环境,亲测是可以用的.
2. Impala的基本概念
2.1 什么是Impala
Impala就是使用SQL语句来操作Hive中的数据库和表,它可以提供低延迟的交互式的SQL查询功能.它与Hive共用表的元数据信息,所以需要使用Impala必须要先有Hive.
2.2 Impala的优缺点以及使用场景
优点:
1.基于内存计算,不需要把中间结果写入磁盘,省掉了大量的I/O开销.
2. 无需将SQL转换为MapReduce任务,可以直接访问存储在HDFS,HBASE中的数据进行作业调度,可以提高查询速度.
3. 使用了支持数据本地化的I/O调度机制,尽可能地将数据和计算分配在同一台机器上进行,减少了网络开销.
4. 支持各种文件格式,比如textFile,SequenceFile,RCFile,Parquet.注意Impala不支持ORC格式.
5. 可以通过Hive的matestore直接访问其元数据,对Hive中的表直接做数据分析.
缺点:
1.对内存依赖较大,且完全依赖于Hive(因为它与Hive共用一套元数据)
2.当Hive中的分区表分区数太多时,性能下降明显.
3.每次在Hive中为表添加,删除等操作时,在Impala中需要手动更新元数据信息.
4.资源不能通过yarn统一资源管理调度,所以Hadoop集群无法实现Impala,Spark,Hive等组件的动态资源共享.
适用场景:
1.Hive主要用于复杂的批处理查询任务,数据转换任务,对实时性要求不高同时数据量又很大的场景.
2.Impala主要用作交互式查询,能快速响应结果.一般是与Hive配合使用,对Hive的结果数据集进行实时分析.Impala并不能完全取代Hive,Impala可以直接处理Hive表中的数据.
3.Impala的安装(原生Hadoop环境下)
3. 集群搭建
3.1 集群准备
3.1.1 安装Hadoop和Hive
- Impala的安装需要提前安装好Hadoop和Hive,因为Impala的数据实际是存在HDFS上,且Impala是直接使用Hive元数据来管理数据.
- Hive需要在所有的Impala安装的节点上都要有,因为Impala需要引用Hive的依赖包
- Hadoop的框架需要支持C程序访问接口,如下图,如果该路径下有.so结尾的文件,就证明支持C接口.
[root@linux121 native]# cd /opt/servers/hadoop-2.9.2/lib/native/
3.1.2 准备Impala的所有依赖包
由于Cloudera公司对于Impala的安装只提供了rpm包没有提供tar包,但是如果使用rpm包的方式安装,需要自己取解决rpm之间的所有依赖,非常繁琐.这里使用本地yum的方式进行安装.但默认的yum源是没有Impala的rpm安装包的,所以我们自己准备好所有的Impala安装所需的rpm包,制作Yum本地源,配置Yum命令去到我们准备的Yum源中下载Impala的rpm包进行安装.
3.1.3 本地yum源制作步骤
1.Yum源是CentOS当中下载rpm包的地址,因此通过制作本地yum源并指定Yum命令使用本地Yum源,为了使Yum命令(本地和跨网络的其它节点)可以通过网络访问到本地Yum源,这里使用httpd这种静态资源服务器来开放我们下载所有的rpm包.
2. linux121节点上安装httpd服务器
#yum方式安装httpds服务器
[root@linux121 ~]# yum install -y httpd
#启动httpd服务器
[root@linux121 ~]# systemctl start httpd
#查看httpd转态是否启动
[root@linux121 ~]# systemctl status httpd
3.测试httpd服务器是否可用
httpd默认存放页面路径/var/www/html ,在该路径下新建一个test.html
[root@linux121 html]# vim test.html
<html>
<div style="font-size:100px">
this is my page!!
</div>
</html>
访问http://linux121/test.html
说明:后续可以把下载的所有rpm包解压放置到此处便可以供后面使用.
4.下载Impala安装所需的所有rpm包
#Impala所需rpm包下载地址,可以根据自己需要的版本找对应的地址
http://archive.cloudera.com/cdh5/repo-as-tarball/5.7.6/cdh5.7.6-centos7.tar.gz
说明:该tar.gz包是包含了Cloudera公司所提供的几乎所有的rpm包,为了方便,我们不去梳理其中的依赖关系,而是将所有的rpm包全部下载下来.
5.解压第4步下载下来包含所有rpm包的tar.gz包
#解压在当前目录得到一个cdh的解压目录
[root@linux121 software]# tar -zvxf cdh5.7.6-centos7.tar.gz
6.使用httpd存放这些依赖包,创建依赖包的软连接到/var/www/html
[root@linux121 software]# ln -s /opt/software/cdh/5.7.6/ /var/www/html/cdh-5.7.6
7.验证httpd访问这些依赖包是否成功
http://linux121/cdh-5.7.6/
8.修改yum源配置文件
#进入该目录下
[root@linux121 software]# cd /etc/yum.repos.d/
#创建一个新的配置文件,以.repo结尾
[root@linux121 yum.repos.d]# vim local.repo
#需要与文件名保持一致
[local]
#自己随意取的名字,对于当前源的描述
name=local_yum
#访问当前源的地址信息
baseurl=http://linux121/cdh-5.7.6
#为0不做gpg校验
gpcheck=0
#当前源是否可用,为1则可用,为0则禁用
enabled=1
9.分发local.repo文件到其它节点
[root@linux121 yum.repos.d]# rsync-script ./local.repo
3.2 安装Impala
3.2.1 集群规划
节点名称 | impala-catalogd | impala-statestored | impala-server |
---|---|---|---|
linux121 | × | × | √ |
linux122 | × | × | √ |
linux123 | √ | √ | √ |
说明: 官方建议impala-statestored与impala-catalog安装在同一节点上.