• (一)Impala


    1. impala的核心概念

    2. impala的架构原理

    3. 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、支持DataLocal

      数据本地化:无需数据移动,减少数据的传输

    6、支持JDBC/ODBC远程访问

    1.4 impala缺点

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

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

    3、稳定性不如hive

    2 impala基础架构

    2.1 impala体系架构

    图XXXXXXXXXXXXXXXXXX

    Catalog  State Store 

    Impala Daemon   Impala Daemon

    Catalog:同步不同的hive元数据信息

    impala集群的主节点

    • 从hive元数据库中同步元数据,分发表的元数据信息到各个impala daemon中
    • 接收来自statestore的所有请求,告知哪些impala节点是健康的

    补充:

    • impala1.2中加入的Catalog服务减少了refresh和invalidate metadata语句的使用
    • 在之前的版本中,当在某个节点上执行了create database、drop database、create table

    或者drop table语句之后,需要在其它的各个节点上执行命令invalidate metadata 来确保元数据信息的更新。

    • 同样的,当你在某个节点上执行了inset语句,在其它节点上执行查询时就得先执行

    refresh table_name这个操作,这样才能识别到新增的数据文件。

    • 需要注意的是,通过impala执行的操作带来的元数据变化,有了Catalog就不需要再执行

    refresh和invalidate metadata,但如果是通过hive进行的建表、加载数据,则仍然

    需要执行refresh 和invalidate metadata来通知impala更新元数据信息。

    State Store:对Impala Daemon做一些健康监控

      impala集群的主节点,为impalaDaemon提供查询服务,并周期性地检查impala进程状态

    补充:

    • 如果某个impala节点由于硬件错误、软件错误或者其他原因导致离线,statestored

    就会通知其他的节点,避免其他节点再向这个离线的节点发送请求。

    • 由于statestored是当集群节点有问题的时候起通知作用,所以它对impala集群并不是

    有关键影响的

    • 如果statestored没有运行或者运行失败,其他节点和分布式任务会照常运行,只是说当节点

    掉线的时候集群会变得没那么健壮。当statestored恢复正常运行时,它就又开始与其他

    节点通信并进行监控。

    impala

    • impala的核心组件是运行在各个节点上面的impala这个守护进程
    • 接收Client请求、query执行并返回给中心协调节点
    • 子节点上的守护进程,负责向statestore保持通信,汇报工作

    执行计算

    • 因内存依赖大,所以最好不要和impala的其他组件放到同一节点
    • 最好是与hdfs的datanode节点部署在一起,提高查询计算(数据本地化)

    考虑集群性能问题,一般将statestore与Catalog放在同一节点上,因两者之间要

    进行大量的通信。

    2.2 impala查询过程

    客户端连接impala daemon上,它的内部有三个组件:

    query palnner(查询解析器)

    将我们的字符串sql语句解释成为执行计划

    query coordinator(中心协调节点)

    coordinator从state store请求其他的impala daemons,并把查询分发给其他的impala daemon

    query Executor(查询执行器)

    做查询工作的就是executor

    *************jdbc impala,会用ok,遇到问题深入研究************************

  • 相关阅读:
    多线程编程1-定义理解与三种实现方式
    Java类集框架详细汇总-底层分析
    Trie、并查集、堆、Hash表学习过程以及遇到的问题
    spring前导知识-Tomcat、Maven等配置
    双指针、位运算、离散化、区间合并的手动模拟
    单点登录原理与简单实现
    Spring引入外部配置文件
    Java异常机制
    Java多线程-线程的概念和创建
    java webservice服务器端获取request对象的三种方式
  • 原文地址:https://www.cnblogs.com/hanchaoyue/p/13394187.html
Copyright © 2020-2023  润新知