impala

本文详细介绍了Impala的核心概念、架构原理,包括与Hive的关系、优缺点。重点讲解了Impala的安装部署步骤,包括配置本地Yum源、安装规划、元数据缓存等,并提供了impala-shell的使用方法和实战操作,帮助读者掌握Impala的使用技巧。
摘要由CSDN通过智能技术生成

一、课前准备

  1. 安装好对应版本的mysql
  2. 安装好对应版本的hadoop集群
  3. 安装好对应版本的hive

二、课堂主题

本堂课主要围绕impala的知识点进行讲解。主要包括以下几个方面

  1. impala的核心概念
  2. impala的架构原理
  3. impala的安装和使用

三、课堂目标

  1. 掌握impala的安装和使用

四、知识要点

1. impala介绍

1.1 impala概述
  • Impala是Cloudera公司推出,提供对HDFS、Hbase数据的高性能、低延迟的交互式SQL查询功能。

  • 官方测试性能比hive快10到100倍,其sql查询比sparkSQL还要更加快速,号称是当前大数据领域最快的查询sql工具

  • 基于Hive使用内存计算,兼顾数据仓库、具有实时、批处理、多并发等优点

    impala使用hive的元数据, 完全在内存中计算
    
1.2 impala与hive的关系
  • impala是基于hive的大数据分析查询引擎,直接使用hive的元数据metadata
  • impala元数据都存储在hive的metastore当中,并且impala兼容hive的绝大多数sql语法。
  • 安装impala的话,必须先安装hive,保证hive安装成功,并且还需要启动hive的metastore服务。
1.3 impala优点
  • 1、基于内存进行计算,能够对PB级数据进行交互式实时查询、分析,只要你内存足够大
  • 2、 摈弃了MR的计算,改用C+来实现,有针对性的硬件优化
    • 在底层对硬件进行优化, LLVM统一编译运行:编译器,比较稳定,效率高
  • 3、具有数据仓库的特性,可对hive数据直接做数据分析
  • 4、支持列式存储
    • 可以和Hbase整合,因为hive可以整合hbase
  • 5、支持Data Local
    • 数据本地化:无需数据移动,减少数据的传输
  • 6、支持JDBC/ODBC远程访问
1.4 impala缺点
  • 1、基于内存计算,对内存依赖性较大
  • 2、基于hive,与hive共存亡,紧耦合
  • 3、稳定性不如hive
  • 4、每当新的记录/文件被添加到HDFS中的数据目录时,该表需要被刷新
  • 5、不支持用户定义函数UDF

2. impala基础架构

2.1 impala体系结构

  • Statestored

    • impala集群的主节点
      • 为ImpalaDaemon提供查找服务,并周期性地检查Impala进程状态
    补充说明:
    
    	如果某个Impalad节点由于硬件错误、软件错误或者其他原因导致离线,statestored就会通知其他的节点,避免其他节点再向这个离线的节点发送请求。
    	
    	由于statestored是当集群节点有问题的时候起通知作用,所以它对Impala集群并不是有关键影响的。
    	
        如果statestored没有运行或者运行失败,其他节点和分布式任务会照常运行,只是说当节点掉线的时候集群会变得没那么健壮。当statestored恢复正常运行时,它就又开始与其他节点通信并进行监控。
    
  • Catalogd

    • impala集群的主节点
      • 从Hive元数据库中同步元数据,分发表的元数据信息到各个impala daemon中
      • 接收来自statestore的所有请求,告知哪些impalad节点是健康的
    补充说明:
    	Impala 1.2中加入的catalog服务减少了REFRESH和INVALIDATE METADATA语句的使用。
    在之前的版本中,当在某个节点上执行了CREATE DATABASE、DROP DATABASE、CREATE TABLE、ALTER TABLE、或者DROP TABLE语句之后,需要在其它的各个节点上执行命令INVALIDATE METADATA来确保元数据信息的更新。
    
    	同样的,当你在某个节点上执行了INSERT语句,在其它节点上执行查询时就得先执行REFRESH table_name这个操作,这样才能识别到新增的数据文件。
    
    	需要注意的是,通过Impala执行的操作带来的元数据变化,有了catalog就不需要再执行REFRESH和INVALIDATE METADATA,但如果是通过Hive进行的建表、加载数据,则仍然需要执行REFRESH和INVALIDATE METADATA来通知Impala更新元数据信息。
    
  • impalad

    • Impala的核心组件是运行在各个节点上面的impalad这个守护进程
    • 接收client请求、Query执行并返回给中心协调节点
    • 子节点上的守护进程,负责向statestore保持通信,汇报工作
    • 执行计算。
      • 因内存依赖大,所以最好不要和imapla的其他组件放到同一节点
      • 最好是与hdfs的datanode节点部署在一起,提高查询计算(数据本地化)。
考虑集群性能问题,一般将StateStored 与 Catalogd 放在同一节点上,因两者之间要进行大量的通信。
2.2 impala查询过程
  • 客户端连接到impala daemon 上,它的内部有三个组件;
    • Query planner(查询解析器)
      • 将我们的字符串sql 语句解释成为执行计划,
    • Query coordinator(中心协调节点)
      • coordinator从State Store请求其他的Impala daemons,并把查询分发给其他的Impala daemons
    • Query executor(查询执行器)
      • 而做查询工作的是就是executor
        在这里插入图片描述
2.3 元数据缓存
  • impala集群中的元数据是保存在hive的metastore中的(mysql数据库中)

  • 当impala集群启动之后,catalogd会从hive的metastore中把元数据信息同步过来,然后通过Statestore分发元数据信息到impala daemon中进行缓存。

  • 如果在impala deamon中产生的元数据变更(创建库、创建表、修改表)操作。,Catalog服务通知所有Impala daemons来更新缓存。这些都会缓存下来,然后通过catalog持久化这些信息到hive的metastore中.

  • 如果是hive的客户端进行了元数据的变更操作,这个时候对于impala来说是不知道的,这里就需要impala去手动同步刷新.

在这里插入图片描述

  • refresh命令手动同步

  • 用于刷新某个表或者某个分区的数据信息,它会重用之前的表元数据,仅仅执行文件刷新操作

    • 例如insert into、load data、alter table add partition、alter table drop partition等
    REFRESH [table]                             //刷新某个表
    REFRESH [table] PARTITION [partition]       //刷新某个表的某个分区
    
  • imvalidate metadata命令手动同步

  • 用于刷新全库或者某个表的元数据,包括表的元数据和表内的文件数据.

    • 例如hive中create table/drop table/alter table add columns等操作。
    INVALIDATE METADATA;                   //重新加载所有库中的所有表
    INVALIDATE METADATA [table]            //重新加载指定的某个表
    

在这里插入图片描述

3. impala安装部署

3.1 配置本地yum源
  • 由于impala没有提供tar包供我们进行安装,只提供了rpm包,所以我们在安装impala的时候,需要使用rpm包来进行安装,rpm包只有cloudera公司提供了,所以我们去cloudera公司网站进行下载rpm包即可,但是另外一个问题,impala的rpm包依赖非常多的其他的rpm包,可以一个个的将依赖找出来,也可以将所有的rpm包下载下来,制作成我们本地yum源来进行安装。

  • 我们这里就选择制作本地yum源来进行安装,所以首先我们需要下载到所有的rpm包,下载地址如下

    http://archive.cloudera.com/cdh5/repo-as-tarball/5.14.0/
    
    镜像文件 cdh5.14.0-centos7.tar.gz
    
3.1.1 配置本地Yum的Repository
  • 把node3服务器作为镜像源节点,使用httpd这个软件来作为服务端,启动httpd的服务来作为我们镜像源的下载地址

    • 上传镜像文件到node3上

    • 解压

      • tar -zxvf cdh5.14.0-centos7.tar.gz -C /opt/bigdata
    • 安装httpd服务并启动

      • yum -y install httpd
      • systemctl start httpd.service
    • 创建yum源配置文件

      • 进入到/etc/yum.repos.d目录,新建文件

        • vim localimp.repo

          [localimp]
          name=localimp
          baseurl=http://node3/cdh5.14.0
          gpgcheck=0
          enabled=1
          
    • 创建apache httpd的读取连接

      • ln -s /opt/bigdata/cdh/5.14.0 /var/www/html/cdh5.14.0
    • 页面访问本地yum源

      • http://node3/cdh5.14.0
    • 将node3上制作好的localimp配置文件发放到其他节点上去

      scp /etc/yum.repos.d/localimp.repo node1:/etc/yum.repos.d
      scp /etc/yum.repos.d/localimp.repo node2:/etc/yum.repos.d
      
3.2 安装规划
服务名称 node1 node2 node3
impala-catalog 安装 不安装 不安装
impala-state-store 安装 不安装 不安装
impala-server 不安装 安装 安装
impala-shell 不安装 安装 安装
  • 其中state-store 和 catalog 类似于 namenode一般部署在主节点
  • 而 impala-server类似于datenode部署在子节点上
  • impala-shell可以部署在任意节点上。它是impala的shell 客户端。
3.3 yum源安装
  • 主节点node1执行以下命令进行安装

    yum install impala-state-store -y
    yum install impala-catalog -y
    yum install bigtop-utils -y 
    
  • 从节点node2和node3执行以下命令进行安装

    yum install impala-server -y
    yum install impala-shell -y
    yum install bigtop-utils -y 
    
3.4 修改配置信息
3.4.1 修改 hive-site.xml文件

impala依赖于hive,所以首先需要进行hive的配置修改;

hive只需要安装一台,为了操作方便,后期在三台服务器上拷贝hive配置

  • node1机器修改hive-site.xml内容如下:

  • vim /opt/bigdata/hive/conf/hive-site.xml

    [外链图片转存失败(img-DWg9AKNC-1569375250556)(D:\course\智能网联BMS\网上源代码等\大数据高级开发1期资料共享\20190906-impala\impala课程(1)]\impala课程设计.assets\1569290193711.png)

        <property>
            <name>hive.metastore.uris</name>
            <value>thrift://node1:9083</value>
        
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值