bigdata-29-Impala初步了解

简介: bigdata-29-Impala初步了解

MapReduce、Hive和Impala之间的发展历程是这样的:MapReduce->Hive->Impala。

官方一点的解释:

Impala是一个开源的基于内存的快速查询分析引擎。

他可以直接使用Hive的Metastore,也就是说Hive中创建的表,Impala可以直接使用;并且兼容HiveSQL,但是不是100%兼容,大部分的SQL语法都是兼容的。

Impala的优点

  1. 1:基于内存运算,中间结果不落盘,节省大量的I/O开销;因为在MapReduce任务中,Map阶段产生的中间结果需要先写磁盘,再通过Shuffle拷贝到Reduce阶段,所以会产生大量的I/O,因此计算效率不如Impala。
  2. 2:底层计算引擎由C++编写,通过LLVM统一编译运行,效率更高。LLVM是一个编译器。注意了,Impala底层的计算引擎没有使用大数据生态圈中的计算框架,它是自己单独实现的。
  3. 3:兼容HiveSQL语法,学习成本低,容易上手。ImpalaSQL支持SQL92标准,并具有自己的解析器和优化器。SQL92是数据库的一个ANSI标准,HiveSQL也支持SQL92标准。
  4. 4:兼容Hive的Metastore,可以直接使用Hive中的表。
  5. 5:支持数据本地化(Data Locality)特性,提高计算效率。其实就是说Impala支持数据本地计算,前提是impala的服务需要和HDFS的datanode节点部署在一起。
  6. 6:支持列式存储数据格式,可以和HBase整合。也就是说Impala可以通过SQL计算HBase中的数据。
  7. 7:支持多种文件格式,例如:TextFile、SequenceFile、RCFile、ORC和Parquet。其实只要是Hive支持的数据格式,目前Impala都是支持的。
  8. 8:支持ODBC/JDBC远程访问,这样就可以无缝对接到Web项目,在页面操作起来更方便。

Impala的缺点

  1. 1:基于内存进行计算,对内存依赖性较大。基于内存计算,既是优点,也是缺点。
  2. 2:使用C++编写,意味着维护难度增加,相对而言,Java程序维护起来比较简单。
  3. 3:分区数量超过一万,性能严重下降,容易出现问题。主要还是因为它是基于内存计算,单个SQL任务计算的数据量过大,对内存依赖就很大了,所以容易出现问题。
  4. 4:基于Hive,与Hive共存亡。因为Impala需要使用Hive的Metastore来存储元数据信息。
  5. 5:稳定性不如Hive。主要也是因为Impala是基于内存的,所以稳定性相对来说一般。

Impala + Hive

Impala和Hive之间的关系从这个图里面可以比较清晰的进行了解

最底层是HDFS,接着是MapReduce、Hive对MapReduce做了封装,提供了SQL支持。

Hive的元数据信息存储在Metastore中,Metastore我们一般是使用MySQL。

Impala自己使用C++实现了一套分布式计算引擎,也可以直接操作HDFS中的数据,并且和Hive共享一个Metastore。

Impala三大核心组件

Impala架构中主要包含三大核心组件:

  1. Impala daemon:简称为impalad,它是Impala集群中的核心守护进程,需要在多个节点启动,一般会和DataNode节点部署在一起;他主要负责向Statestore保持通信,汇报工作。同时负责接收客户端的请求,执行查询,并把结果返回给客户端。
  2. Statestore daemon:简称为statestored,他主要负责收集集群中各个Impalad进程的资源信息、各节点健康状况、同步节点信息,以及负责Query的协调调度。
  3. Catalog daemon:简称为catalogd,他主要负责分发表的元数据信息到各个Impalad中,以及接收来自Statestore的所有请求。

这个图里面包含了客户端、Hive Metastore、HDFS NameNode、HDFS DataNode、HBase以及Impala中的Statestore、Catalog、Impalad这三个核心组件。

其中Hive Metastore是负责维护Impala元数据信息的,HDFS和HBase都是可以作为Impala底层数据存储的组件。

客户端向Impala发送请求时的整个执行流程是这样的:

(1)客户端向某一个Impalad发送一个Query(SQL)。

(2)Impalad将Query解析为具体的Planner(执行计划), 然后交给当前机器的Coordinator(中心协调节点)。

(3)Coordinator根据Planner,通过本机的Executor执行,并转发给其他有数据的Impalad。

(4)多个Impalad的Executor之间会进行通信,可能需要一些数据的处理。

(5)各个Impalad的Executor执行完成后,会将结果返回给Coordinator。

(6)由Coordinator将汇聚的查询结果返回给客户端。

目录
相关文章
|
编解码 算法 文件存储
浅谈动图文件格式 - GIF
介绍动图的文件格式,及其优劣
3862 0
浅谈动图文件格式 - GIF
|
10月前
|
存储 数据采集 分布式计算
一、数据仓库基石:核心理论、分层艺术与 ETL/ELT 之辨
数据仓库不是数据库的升级,而是面向决策的大脑。本篇带你快速厘清数据库 vs 数仓、分层架构逻辑、ETL/ELT区别,轻松建立数据思维骨架。
703 5
|
数据采集 存储 安全
一文带你讲透数据仓库分层!
在数据处理中,常遇到数据混乱、指标不一致、开发排期长等问题,根源往往在于数据分层设计不合理。本文详解数据仓库分层(ODS、DWD、DWS、DM、APP等),阐述其在数据清洗、整合、管理及应用中的关键作用,帮助提升数据质量、减少重复开发、增强系统扩展性,从而高效支撑业务决策。
一文带你讲透数据仓库分层!
|
7月前
|
传感器 人工智能 监控
协作机器人和工业机器人的区别
协作机器人(Cobot)是专为人机协同设计的工业机器人分支,以安全、灵活、易用为核心,通过力控感知、速度监控与ISO/TS 15066认证实现无围栏共作;支持拖拽示教、快速换型,部署快、成本低、ROI短(6–18个月),适用于打磨、柔性装配、医疗辅助等非标场景。(239字)
|
10月前
|
存储 缓存 关系型数据库
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:分层设计的取舍之道(从 “简单粗暴” 到依赖倒置)
GoWind Admin 是企业级前后端一体中后台框架,深入探讨分层设计的取舍:从“Service直连Data”到依赖倒置与biz层演进,平衡开发效率与架构韧性,适配轻量到超大型项目,实现开箱即用与长期扩展的统一。
438 4
|
10月前
|
存储 弹性计算 Linux
阿里云服务器购买流程及配置选择指南【新手友好手册】
阿里云服务器购买流程及配置选择指南【新手友好手册】阿里云服务器主要分为轻量应用服务器与云服务器 ECS 两类,选择时需结合实际应用场景,从实例类型、CPU 内存、公网带宽、存储配置四个核心维度展开,确保资源匹配需求且成本合理。购买阿里云服务器时,特价机型可通过官方活动页面直接选购,企业级高性能服务器或有特殊配置需求的场景,需通过云服务器 ECS 官方页面自定义购买,以下以云服务器 ECS 自定义购买为例,详细介绍流程步骤。
|
10月前
|
数据采集 人工智能 安全
数据治理工具推荐指南:如何为技术、管理、业务团队匹配最佳方案?
在数字经济时代,数据治理是释放数据价值的关键。本文分析瓴羊Dataphin、字节Dataleap、奇点云DataSimba等主流工具,从智能化、一体化、场景化维度对比功能、适配性与部署模式,为企业提供选型框架与落地建议,助力实现数据驱动的高质量发展。(239字)
|
存储 人工智能 自然语言处理
2025年适用大中企业的CRM系统综合对比
在数字化转型浪潮中,CRM系统对大中型企业至关重要。本文对比了2025年适用于大中型企业的4款CRM系统:纷享销客、Salesforce、销售易和红圈CRM。从功能特点、集成拓展性、实施服务、客户评价四个维度展开分析,展现各系统优势与局限,为企业在选择CRM系统时,综合自身业务需求、预算和发展规划等因素做出决策提供参考。
|
人工智能 JavaScript 测试技术
当Playwright遇见MCP,AI智能体实现自主化UI回归测试
本文探讨如何通过Model Context Protocol(MCP)让AI智能体驱动Playwright实现端到端自动化测试。重点解析快照技术的实现原理与实战流程,同时深入剖析其在信息丢失、元素定位、成本效率及逻辑复杂性等方面的现实挑战。
|
人工智能 自然语言处理 算法
DeepSeek大模型在客服系统中的应用场景解析
在数字化浪潮下,客户服务领域正经历深刻变革,AI技术成为提升服务效能与体验的关键。DeepSeek大模型凭借自然语言处理、语音交互及多模态技术,显著优化客服流程,提升用户满意度。它通过智能问答、多轮对话引导、多模态语音客服和情绪监测等功能,革新服务模式,实现高效应答与精准分析,推动人机协作,为企业和客户创造更大价值。
1238 5