热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

(一)Impala

憨1.impala的核心概念2.impala的架构原理3.impala的安装和使用1.impala介绍1.1impala概述impala是Cloudera公司推出,提供对HDFS、

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,遇到问题深入研究************************

 


推荐阅读
  • 为了提升单位内部沟通效率,我们开发了一套飞秋软件与OA系统的消息接口服务系统。该系统能够将OA系统中的审批、通知等信息自动同步至飞秋平台,确保员工在使用飞秋进行日常沟通的同时,也能及时获取OA系统的各类重要信息,从而实现无缝对接,提高工作效率。 ... [详细]
  • 在使用Eclipse进行调试时,如果遇到未解析的断点(unresolved breakpoint)并显示“未加载符号表,请使用‘file’命令加载目标文件以进行调试”的错误提示,这通常是因为调试器未能正确加载符号表。解决此问题的方法是通过GDB的`file`命令手动加载目标文件,以便调试器能够识别和解析断点。具体操作为在GDB命令行中输入 `(gdb) file `。这一步骤确保了调试环境能够正确访问和解析程序中的符号信息,从而实现有效的调试。 ... [详细]
  • MySQL的查询执行流程涉及多个关键组件,包括连接器、查询缓存、分析器和优化器。在服务层,连接器负责建立与客户端的连接,查询缓存用于存储和检索常用查询结果,以提高性能。分析器则解析SQL语句,生成语法树,而优化器负责选择最优的查询执行计划。这一流程确保了MySQL能够高效地处理各种复杂的查询请求。 ... [详细]
  • 本项目通过Python编程实现了一个简单的汇率转换器v1.02。主要内容包括:1. Python的基本语法元素:(1)缩进:用于表示代码的层次结构,是Python中定义程序框架的唯一方式;(2)注释:提供开发者说明信息,不参与实际运行,通常每个代码块添加一个注释;(3)常量和变量:用于存储和操作数据,是程序执行过程中的重要组成部分。此外,项目还涉及了函数定义、用户输入处理和异常捕获等高级特性,以确保程序的健壮性和易用性。 ... [详细]
  • VS2019 在创建 Windows 恢复点时出现卡顿问题及解决方法
    在使用 Visual Studio 2019 时,有时会在创建 Windows 恢复点时遇到卡顿问题。这可能是由于频繁的自动更新导致的,每次更新文件大小可能达到 1-2GB。尽管现代网络速度较快,但这些更新仍可能对系统性能产生影响。本文将探讨该问题的原因,并提供有效的解决方法,帮助用户提升开发效率。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • Vim 编辑器功能强大,但其默认的配色方案往往不尽如人意,尤其是注释颜色为蓝色时,对眼睛极为不友好。为了提升编程体验,自定义配色方案显得尤为重要。通过合理调整颜色,不仅可以减轻视觉疲劳,还能显著提高编码效率和兴趣。 ... [详细]
  • 在 Mac 上查看隐藏文件和文件夹的详细指南。通过终端命令,您可以轻松地显示或隐藏这些文件。具体步骤如下:输入 `defaults write com.apple.finder AppleShowAllFiles -bool true` 以显示所有隐藏文件,或使用 `defaults write com.apple.finder AppleShowAllFiles -bool false` 以重新隐藏它们。此方法适用于各种版本的 macOS,帮助用户更好地管理和访问系统文件。 ... [详细]
  • 本文详细解析了逻辑运算符“与”(&&)和“或”(||)在编程中的应用。通过具体示例,如 `[dehua@teacher~]$[$(id -u) -eq 0] && echo "You are root" || echo "You must be root"`,展示了如何利用这些运算符进行条件判断和命令执行。此外,文章还探讨了这些运算符在不同编程语言中的实现和最佳实践,帮助读者更好地理解和运用逻辑运算符。 ... [详细]
  • 二分查找算法详解与应用分析:本文深入探讨了二分查找算法的实现细节及其在实际问题中的应用。通过定义 `binary_search` 函数,详细介绍了算法的逻辑流程,包括初始化上下界、循环条件以及中间值的计算方法。此外,还讨论了该算法的时间复杂度和空间复杂度,并提供了多个应用场景示例,帮助读者更好地理解和掌握这一高效查找技术。 ... [详细]
  • 蚂蚁课堂:性能测试工具深度解析——JMeter应用与实践
    蚂蚁课堂:性能测试工具深度解析——JMeter应用与实践 ... [详细]
  • 在 iOS 开发中,经常会遇到 `@(YES)`、`@[firstViewController]` 以及 `@{@a:@b}` 这样的语法糖。这些简化的写法分别用于初始化布尔值、数组和字典对象,能够显著提高代码的可读性和编写效率。例如,`@(YES)` 可以快速创建一个布尔值对象,`@[firstViewController]` 则用于创建包含单个元素的数组,而 `@{@a:@b}` 则用于创建键值对字典。理解这些语法糖的使用方法,有助于开发者更加高效地进行编码。 ... [详细]
  • Unity3D 中 AsyncOperation 实现异步场景加载及进度显示优化技巧
    在Unity3D中,通过使用`AsyncOperation`可以实现高效的异步场景加载,并结合进度条显示来提升用户体验。本文详细介绍了如何利用`AsyncOperation`进行异步加载,并提供了优化技巧,包括进度条的动态更新和加载过程中的性能优化方法。此外,还探讨了如何处理加载过程中可能出现的异常情况,确保加载过程的稳定性和可靠性。 ... [详细]
  • 在 Android 开发中,`android:exported` 属性用于控制组件(如 Activity、Service、BroadcastReceiver 和 ContentProvider)是否可以被其他应用组件访问或与其交互。若将此属性设为 `true`,则允许外部应用调用或与之交互;反之,若设为 `false`,则仅限于同一应用内的组件进行访问。这一属性对于确保应用的安全性和隐私保护至关重要。 ... [详细]
  • 在最近的项目中,我们广泛使用了Qt框架的网络库,过程中遇到了一些挑战和问题。本文旨在记录这些经验和解决方案,以便日后参考。鉴于我们的客户端GUI完全基于Qt开发,我们期望利用其强大的网络功能进行Fiddler网络数据包的捕获与分析,以提升开发效率和应用性能。 ... [详细]
author-avatar
少钧13
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有