Hadoop_21_impala

impala

impala是cloudera 公司开源提供的一个sql交互查询的工具,兼具hive的优势,具有批量处理以及实时处理等优势。

impala的优点与缺点
impala的优点:快,非常快
impala的缺点:内存消耗大,官方推荐每台机器最少128G的内存
impala不提供数据的存储功能,只提供数据的计算的功能。

impala与hive的关系:紧耦合的关系
在这里插入图片描述

impala的架构

impala-server:
从节点,计算几点,主要负责执行我们的查询的任务的计算,官方建议 impala-server与每一个datanode安装在一起

impala-catalog:
主节点 主要是存储了元数据信息在两个地方,一个在内存当中,一个在磁盘当中。impala当中的元数据管理的服务

impala-statestore:
主节点,状态存储区,主要存储了一些sql执行的进度信息,状态信息等等

impala的查询计划

impala的查询计划分为两个阶段:
fronted : 使用java来实现,负责生成我们的查询计划
backend :使用的C++来实现,主要负责的是执行我们的查询

fronted前台的查询计划分为两个阶段
第一个阶段:生成单机版的查询计划
第二个阶段:生成分布式的查询计划,将单机版的查询计划,发送到其他机器上
sql语句的优化,其实就是查询计划的优化,单机版的优化策略与分布式的优化策略是一样的

impala的安装

impala没有直接提供 tar.gz的安装包,只提供了源码包和rpm的包
安装可以有两种方式
第一种:使用源码自己编译
第二种:使用rpm包的方式来进行安装
impala的rpm包的下载地址这里依赖包很多,可以采用下面的方法。
rpm的repository仓库的下载地址
这个包含所有软件的rpm的包,后面其他软件也可以用rpm装了。

impala-server三台机器都要安装,涉及到hadoop的一个重要特性,短路读取

挂载磁盘

由于下载的tar包非常大,虚拟机磁盘有限,所以我们可以为我们的虚拟机挂载一块磁盘,专门用于存储我们的tar包。
在第三台虚拟机下新增一块硬盘,
在这里插入图片描述
选择将虚拟磁盘拆分成多个文件,选择合适的磁盘大小。

磁盘挂载
df -lh
fdisk -l
开始分区
fdisk /dev/sdb 这个命令执行后依次输 n p 1 回车 回车 w
fdisk -l
格式化我们的分区
mkfs -t ext4 -c /dev/sdb1 格式化我们的分区
mkdir /data02
将我们的分区挂载到/data02目录下
mount -t ext4 /dev/sdb1 /data02
df -lh
将我们的挂载磁盘设置开机启动,避免开机之后挂载的磁盘就没了
echo “/dev/sdb1 /data02 ext4 defaults 0 0” >> /etc/fstab

上传压缩包并解压

cd /data02/
tar -zxvf cdh5.14.0-centos6.tar.gz

制作本地yum源

node03机器上执行以下命令
yum -y install httpd

开启httpd服务,开启后可直接访问node03/
出现test page表示安装成功
service httpd start

这里的locallimp名字需要保持一致
cd /etc/yum.repos.d
vim localimp.repo

[localimp]
name=localimp
baseurl=http://node03/cdh5.14.0/
gpgcheck=0
enabled=1

这里node03/访问的根路径是:/var/www/html
配置中访问的是:/node03/cdh5.14.0/

创建apache httpd的读取链接
ln -s /data02/cdh/5.14.0 /var/www/html/cdh5.14.0
页面访问本地yum源,出现界面表示本地yum源制作成功

将制作好的localimp配置文件发放到所有需要安装impala的节点上去

cd /etc/yum.repos.d/
scp localimp.repo  node02:$PWD
scp localimp.repo  node01:$PWD

开始安装impala

在这里插入图片描述
主节点node03执行以下命令进行安装
yum install impala -y
yum install impala-server -y
yum install impala-state-store -y
yum install impala-catalog -y
yum install impala-shell -y
从节点node01与node02安装以下服务
yum install impala-server -y

所有节点配置impala

  1. node03 hive-site.xml配置
    vim /export/servers/hive-1.1.0-cdh5.14.0/conf/hive-site.xml
    添加以下properties
        <property>
                <name>hive.metastore.uris</name>
                <value>thrift://node03.hadoop.com:9083</value>
        </property>
	 <property>
                <name>hive.metastore.client.socket.timeout</name>
                <value>3600</value>
        </property>
  1. 将hive的安装包发送到node02与node01机器上
    在node03机器上面执行
cd /export/servers/
scp -r hive-1.1.0-cdh5.14.0/ node02:$PWD
scp -r hive-1.1.0-cdh5.14.0/ node01:$PWD
  1. node03启动hive的metastore服务
cd  /export/servers/hive-1.1.0-cdh5.14.0
nohup bin/hive --service metastore &
nohup bin/hive -- service hiveserver2 &
  1. 所有hadoop节点修改hdfs-site.xml添加以下内容
    所有节点创建文件夹
    mkdir -p /var/run/hdfs-sockets
    修改所有节点的hdfs-site.xml添加以下配置,修改完之后重启hdfs集群生效
    vim /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/hdfs-site.xml
    添加以下properties
<property>
		<name>dfs.client.read.shortcircuit</name>
		<value>true</value>
	</property>
	<property>
		<name>dfs.domain.socket.path</name>
		<value>/var/run/hdfs-sockets/dn</value>
	</property>
	<property>
		<name>dfs.client.file-block-storage-locations.timeout.millis</name>
		<value>10000</value>
	</property>
<property>
<name>dfs.datanode.hdfs-blocks-metadata.enabled</name>
<value>true</value>
</property>

将更改过后的文件复制到其他两台机器

scp hdfs-site.xml node02:$PWD
scp hdfs-site.xml node03:$PWD

赋权限
chown -R hadoop:hadoop /var/run/hdfs-sockets/
因为我这里直接用的root用户,所以不需要赋权限了

  1. 重启hdfs文件系统
    node01服务器上面执行以下命令
    cd /export/servers/hadoop-2.6.0-cdh5.14.0/
    sbin/stop-dfs.sh
    sbin/start-dfs.sh

  2. 创建hadoop与hive的配置文件的连接
    impala的配置目录为 /etc/impala/conf
    这个路径下面需要把core-site.xml,hdfs-site.xml以及hive-site.xml拷贝到这里来,这里采用软连接的方式:
    所有节点执行以下命令创建链接到impala配置目录下来

ln -s /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/core-site.xml /etc/impala/conf/core-site.xml
ln -s /export/servers/hadoop-2.6.0-cdh5.14.0/etc/hadoop/hdfs-site.xml /etc/impala/conf/hdfs-site.xml
ln -s /export/servers/hive-1.1.0-cdh5.14.0/conf/hive-site.xml /etc/impala/conf/hive-site.xml
  1. 修改impala的配置文件
    所有节点更改impala默认配置文件以及添加mysql的连接驱动包
    vim /etc/default/impala
    IMPALA_CATALOG_SERVICE_HOST=node03
    IMPALA_STATE_STORE_HOST=node03

所有节点创建mysql的驱动包的软连接
ln -s /export/servers/hive-1.1.0-cdh5.14.0/lib/mysql-connector-java-5.1.38.jar /usr/share/java/mysql-connector-java.jar

修改bigtop的java_home路径
vim /etc/default/bigtop-utils
export JAVA_HOME=/export/servers/jdk1.8.0_141

  1. 启动impala服务
    主节点node03启动以下三个服务进程
    service impala-state-store start
    service impala-catalog start
    service impala-server start
    从节点启动node01与node02启动impala-server
    service impala-server start
    查看impala进程是否存在
    ps -ef | grep impala

启动之后所有关于impala的日志默认都在/var/log/impala 这个路径下,node03机器上面应该有三个进程,node02与node01机器上面只有一个进程,如果进程个数不对,去对应目录下查看报错日志。

浏览器页面访问
访问impalad的管理界面
http://node03:25000/
访问statestored的管理界面
http://node03:25010/
访问catalog的管理界面
http://node03:25020

impala使用

impala的语法兼容绝大部分的hive的语法,除了有一些hive的UDF
hive里面的各种hql的语法,包括hive的各种函数,impala基本上都有
hive里面运行的hql的语句一些任务,基本上可以无缝的迁移到impala里面来

impala的shell的交互

不进入impala的shell客户端
查看帮助文档
impala-shell -h

不进入impala的客户端,直接执行我们的查询语句
impala-shell -q “select * from xxx”
与 hive bin/hive -e "select * from xxx"类似

不进入impala的客户端,直接执行我的sql脚本文件
impala-shell -f xxx.sql
与hive bin/hive -f xxx.sql类似

impala-shell -r 全局的刷新
先进入impala的客户端,然后全量的刷新hive的元数据。如果元数据比较多,比较消耗服务器的性能,不推荐使用。

进入impala shell客户端
impala-shell
connect node02;转到node02客户端去

refresh dbname.tablname 局部的刷新 适用于已经存在了的hive表,刷新表的元数据信息,例如hive表增加或者减少了分区

invalidate metadata 全局的刷新 全量的刷新hive当中的元数据信息到impala里面来,性能消耗比较大,适用于hive当中新建数据库或者新建数据库表的情况

explain select * from stu; 查看sql语句的执行计划

profile:适用于查看上一条sql语句的执行的情况

notice
impala不仅可以读取hive当中的数据库以及数据库表信息,并且也可以创建数据库以及数据库表信息
create database myimp;
//权限问题可以用 hdfs dfs -chmod -R 777 /user/hive/warehouse

impala创建了一个数据库,或者一个数据库表,需不需要刷新impala的元数据信息?
不需要,因为impala当中有一个进程catalog,catalog主要是impala当中存储元数据信息的地方

impala当中表数据导入
从hdfs加载数据
load data inpath ‘/user/impala/’ into table user;

insert into table xxx select * from xxx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值