原⽣Hadoop环境下Impala的安装和使⽤
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 >
this is my page!!
</div>
</html>
#Impala所需rpm包下载地址,可以根据⾃⼰需要的版本对应的地址
archive.cloudera/cdh5/repo-as-tarball/5.7.6/cdh5.7.
说明:该包是包含了Cloudera公司所提供的⼏乎所有的rpm包,为了⽅便,我们不去梳理其中的依赖关系,⽽是将所有的rpm包全部下载下来.
5.解压第4步下载下来包含所有rpm包的包
#解压在当前⽬录得到⼀个cdh的解压⽬录
[root@linux121 software]# tar -zvxf cdh5.7.
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访问这些依赖包是否成功
linux121/cdh-5.7.6/
8.修改yum源配置⽂件
#进⼊该⽬录下
[root@linux121 software]# cd /pos.d/
#创建⼀个新的配置⽂件,以.repo结尾
[root@pos.d]# po
#需要与⽂件名保持⼀致
[local]
#⾃⼰随意取的名字,对于当前源的描述
name=local_yum
#访问当前源的地址信息
baseurl=linux121/cdh-5.7.6
#为0不做gpg校验
gpcheck=0
#当前源是否可⽤,为1则可⽤,为0则禁⽤
enabled=1
9.分发po⽂件到其它节点
[root@pos.d]# rsync-script ./po
3.2 安装Impala
3.2.1 集规划
节点名称impala-catalogd impala-statestored impala-server
linux121××√
节点名称impala-catalogd impala-statestored impala-server
linux122××√
linux123√√√
说明: 官⽅建议impala-statestored与impala-catalog安装在同⼀节点上.
3.2.2 Impala中各⾓⾊解释
Impala-server : Impala真正⼯作的进程,官⽅建议把impala-server安装在datanode所在的节点上,这样可以更靠近数据(有利于短路读取,数据本地化);进程名叫做impalad
Impala-statestored: 健康监控⾓⾊,主要监控impala-server,impala-server出现异常时告知给其它impala-server,进程名叫做statestored
Impala-catalogd : 将Impala的更新操作同步到Hive的元数据;把某个impala-server更新的元数据通知给其它的impala-server,进程名catalogd.
3.2.3 具体安装步骤
1. 在linux123的机器上执⾏下⾯的命令
[root@linux123 ~]# yum install -y impala impala-server impala-state-store impala-catalog impala-shell
2. 在linux121和linux122上分别执⾏下⾯的命令
[root@linux121 ~]# yum install -y impala-server impala-shell
[root@linux122 ~]# yum install -y impala-server impala-shell
3. 修改l配置⽂件(先修改linux123节点的)
[root@linux123 ~]# vim /opt/servers/hive-2.3.7/l
#1.修改l配置
<!--指定metastore地址,之前添加过可以不⽤添加 -->
<property>
<name&astore.uris</name>
<value>thrift://linux121:9083,thrift://linux123:9083</value>
</property>
<property>
<name&astore.client.socket.timeout</name>
<value>3600</value>
</property>
#2.分发hive安装⽬录到集中其它节点
[root@linux123 ~]# rsync-script /opt/servers/hive-2.3.7/
4. 短路读取
在HDFS通过DataNode来读取数据.但是,当客户端向DataNode请求读取⽂件时,DataNode就会从磁盘读取⽂件并通过TCP socket将数据发送到客户端.所谓"短路"是指Client客户端直接读取⽂件.很明显,这种情况只在客户端与数据放在同⼀主机时才有可能发⽣.短路读取对于许多应⽤程序会带来重⼤的性能提升.
短路录取: 就是Client与DataNode属于同⼀节点,⽆需再经过传输数据,直接本地读取.
要配置短路读取,需要验证本地Hadoop是否有libhadoop.so
5. 短路读取配置
#1.在所有节点创建⼀下这个⽬录
mkdir -p /var/lib/hadoop-hdfs
#2.修改l配置⽂件
[root@linux123 hadoop-hdfs]# vim /opt/servers/hadoop-2.9.2/etc/l
<!--添加如下内容 -->
<!--打开短路路读取开关 -->
<!-- 打开短路路读取配置-->
<property>
<name>ad.shortcircuit</name>
<value>true</value>
</property>
<!--这是⼀⼀个UNIX域套接字的路路径,将⽤⽤于DataNode和本地HDFS客户机之间的通信 -->
<property>
<name>dfs.domain.socket.path</name>
<value>/var/lib/hadoop-hdfs/dn_socket</value>
</property>
<!--block存储元数据信息开发开关 -->
<property>
<name>dfs.abled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.file-block-storage-locations.timeout</name>
<value>30000</value>
</property>
#3.将修改后的配置⽂件分发到其它节点
[root@linux123 hadoop-hdfs]# rsync-script /opt/servers/hadoop-2.9.2/etc/l
6. impala中跟Hadoop,Hive相关的配置
使⽤Yum⽅式安装Impala时默认的Impala配置⽂件⽬录为/etc/impala/conf⽬录,Impala的使⽤要依赖Hadoop,Hive框架,所以需要把HDFS,Hive的配置⽂件告知Impala,执⾏下⾯的命令,把HDFS和Hive的配置⽂件软链接到/etc/impala/conf下(所有节点执⾏)
[root@linux123 ~]# ln -s /opt/servers/hadoop-2.9.2/etc/l /etc/impala/l
[root@linux123 ~]# ln -s /opt/servers/hadoop-2.9.2/etc/l /etc/impala/l
[root@linux123 ~]# ln -s /opt/servers/hive-2.3.7/l /etc/impala/l
[root@linux122 hadoop-hdfs]# ln -s /opt/servers/hadoop-2.9.2/etc/l /etc/impala/l
[root@linux122 hadoop-hdfs]# ln -s /opt/servers/hadoop-2.9.2/etc/l /etc/impala/l
[root@linux122 hadoop-hdfs]# ln -s /opt/servers/hive-2.3.7/l /etc/impala/l
[root@linux121 ~]# ln -s /opt/servers/hadoop-2.9.2/etc/l /etc/impala/l
[root@linux121 ~]# ln -s /opt/servers/hadoop-2.9.2/etc/l /etc/impala/l
[root@linux121 ~]# ln -s /opt/servers/hive-2.3.7/l /etc/impala/l
7. impala的⾃⾝配置(所有节点)
#1.创建存储impala的⽇志的⽬录
[root@linux121 ~]# mkdir -p /file/logs/impala/
[root@linux122 ~]# mkdir -p /file/logs/impala/
[root@linux123 ~]# mkdir -p /file/logs/impala/
#2.将⽇志⽬录⽤户和⽤户组改为impala,不然有权限问题
[root@linux121 ~]# chown impala:impala /file/logs/impala/
```shell
#在所有impala所有节点修改
[root@linux123 ~]# vim /etc/default/impala
[root@linux122 ~]# vim /etc/default/impala
[root@linux121 ~]# vim /etc/default/impala
#catalog所在的主机名,按照上⾯的规划是在linux123上
IMPALA_CATALOG_SERVICE_HOST=linux123
#statestore所在的主机名,按照上⾯的规划是在linux123上
IMPALA_STATE_STORE_HOST=linux123
#指定Impala的⽇志⽬录,放在统⼀的位置
IMPALA_LOG_DIR=/file/logs/impala
#打开注释,指定mysql驱动所在的位置
MYSQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar
#添加mysql驱动包
[root@linux121 ~]# mkdir -p /usr/share/java
[root@linux122 ~]# mkdir -p /usr/share/java
[root@linux123 ~]# mkdir -p /usr/share/java
ln -s /opt/servers/hive-2.3.7/lib/mysql-connector-java-5.1.46.jar /usr/share/java/mysql-connector-java.jar
#修改bigtop的JAVA_HOME路径
[root@linux123 ~]# vim /etc/default/bigtop-utils
[root@linux122 ~]# vim /etc/default/bigtop-utils
[root@linux121 ~]# vim /etc/default/bigtop-utils
export JAVA_HOME=/opt/servers/jdk1.8.0_231/
说明: Apache Bigtop是⼀个针对基础设施⼯程师和数据科学家的开源项⽬,旨在全⾯打包,测试和配置领先的开源⼤数据组件/项⽬.
8. 删除因安装impala带来的影响
由于使⽤yum命令安装impala,我们选择使⽤yum⾃动进⾏impala依赖的安装和处理,所以此次安装默认会把Impala依赖的所有框架都会安装,⽐如Hadoop,Hive,MySQL等,为了保证我们⾃⼰安装的框架使⽤正常我们需要删除掉Impala默认安装的其它框架(所有impala节点).
[root@linux123 ~]# which hadoop
/usr/bin/hadoop
[root@linux123 ~]# which hive
/usr/bin/hive
#使⽤which命令查hadoop,hive等会发现,命令⽂件是/usr/bin/hadoop ⽽⾮⾮我们⾃⼰的安装路径,需要把这些删除掉,Impala的所有节点都要执⾏下⾯的命令rm -rf /usr/bin/hadoop
rm -rf /usr/bin/hdfs
rm -rf /usr/bin/hive
rm -rf /usr/bin/beeline
rm -rf /usr/bin/hiveserver2
rm -rf /usr/bin/hbase
rm -rf /usr/bin/zookeeper-client
rm -rf /usr/bin/zookeeper-server*
rm -rf /usr/bin/yarn
mysql下载下来没安装包#重新使各节点的环境变量⽣效
source /etc/profile
9. 重启HDFS
[root@linux121 ~]# stop-dfs.sh
[root@linux121 ~]# start-dfs.sh
3.2.4 启动impala
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论