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

Hive3.x来了

执行引擎变更为TEZ,不使用MR成熟的ACID大数据事务支持LLAP用于妙极,毫秒级查询访问基于ApacheRanger的统一权限管理默认开启HDFSACLsBeeline代替Hi




  1. 执行引擎变更为 TEZ ,不使用MR

  2. 成熟的ACID大数据事务支持

  3. LLAP 用于妙极,毫秒级查询访问

  4. 基于 Apache Ranger 的统一权限管理

  5. 默认开启HDFS ACLs

  6. Beeline代替Hive Cli,降低启动开销

  7. 不再支持内嵌Metastore

  8. Spark Catalog不与Hive Catalog集成,但可以互相访问
    9.批处理使用TEZ,实时查询使用LLAP


架构原理



  1. TEZ执行引擎

    Apache TEZ 是一个针对Hadoop数据处理应用程序的分布式计算框架,基于Yarn且支持DAG作业的开源计算框架。Tez产生的主要原因是绕开MapReduce所施加的限制,逐步取代MR,提供更高的性能和灵活性。

    Apache TEZ的核心思想是将Map和Reduce拆分成若干子过程,即Map被拆分成Input、Processor、Sort、Merge和Output, Reduce被拆分成Input、Shuffle、Sort、Merge、Processor和Output等,分解后可以灵活组合成一个大的DAG作业。

    Apache TEZ兼容MR任务,不需要代码层面的改动。

    Apache TEZ提供了较低级别的抽象,为了增强Hive/Pig的底层实现,而不是最终面向用户的。

    Hive3的 TEZ+内存查询结合 的性能据说是Hive2的50倍(也有文章说是100倍,这个数字是不是很熟悉,它到底能不能与Spark内存计算速度媲美呢)。

    上图是Hive On MR和Hive On Tez执行任务流程对比图,解释:
































Hive On MR Hive On Tez
计算需要多个MR任务而且中间结果都要落盘 只有一个作业,只写一次HDFS
没有资源重用 资源复用
处理完释放资源 Applications Manager资源池启动若干Container,处理完不释放直接分配给未运行任务
Map:Reduce = 1:1 不再是一个Map只对应一个Reduce
在磁盘处理数据集 小的数据集完全在内存中处理以及内存Shuffle


新的HiveQL执行流程



Hive编译查询->Tez执行查询->Yarn分配资源->Hive根据表类型更新HDFS或Hive仓库中的数据->Hive通过JDBC连接返回查询结果




  1. LLAP

    LLAP(Live Long and Process)实时长期处理,是Hive3的一种查询模式,由一个守护进程和一个基于DAG的框架组成,LLAP不是执行引擎(MR/Tez),它用来保证Hive的可伸缩性和多功能性,增强现有的执行引擎。

    LLAP的守护进程长期存在且与DataNode直接交互,缓存,预读取,某些查询处理和访问控制功能包含在这个守护程序中用于直接处理小的查询,而计算与IO较大的繁重任务会提交Yarn执行。守护程序不是必须的,没有它Hive仍能正常工作。对LLAP节点的请求都包含元数据信息和数据位置,所以LLAP节点无状态。

    可以使用Hive on Tez use LLAP来加速OLAP场景(OnLine Analytical Processing联机分析处理)

    LLAP为了避免JVM内存设置的限制,使用堆外内存缓存数据以及处理GROUP BY/JOIN等操作,而守护程序仅使用少量内存。

    Hive3支持两种查询模式 ContainerLLAP



如图LLAP执行示例,TEZ作为执行引擎,初始阶段数据被推到LLAP,LLAP直接与DataNode交互。而在Reduce阶段,大的Shuffle数据在不同的Container容器中进行,多个查询和应用能同时访问LLAP。



  1. 更成熟的ACID支持

    Hive的UPDATE一直是大数据仓库的一个问题,虽然在Hive3.x之前也支持UPDATE操作,但是性能很差,还需要进行分桶。

    Hive3.x支持全新的更成熟的ACID。

    Hive3默认对内部表支持事务和ACID特性。

    默认情况下启用ACID不会导致性能或操作过载。


  2. 物化视图重写和自动查询缓存

    多个查询可能需要用到相同的中间表,可以通过预先计算和将中间表缓存到视图中来避免重复计算。查询优化器会自动利用预先计算的缓存来提高性能。例如加速仪表盘中的join数据查询速度。


  3. 元数据映射表

    Hive会从JDBC数据源创建两个数据库:information_schema和sys。所有Metastore表都映射到表空间,并在sys中可用。information_schema数据显示系统的状态。


  4. Hive 3.0其他特性

    1、连接Kafka Topic,简化了对Kafka数据的查询

    2、执行查询所需的少量守护进程简化了监视和调试

    3、工作负载管理(会话资源限制):用户会话数,服务器会话数,每个服务器每个用户会话数等限制,防止资源争用导致资源不足

    4、会话状态,内部数据结构,密码等驻留在客户端而不是服务器上

    5、黑名单可以限制内存配置以防止HiveServer不稳定,可以使用不同的白名单和黑名单配置多个HiveServer实例,以建立不同级别的稳定性





推荐阅读
  • 美团优选推荐系统架构师 L7/L8:算法与工程深度融合 ... [详细]
  • FastDFS Nginx 扩展模块的源代码解析与技术剖析
    FastDFS Nginx 扩展模块的源代码解析与技术剖析 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • 本指南从零开始介绍Scala编程语言的基础知识,重点讲解了Scala解释器REPL(读取-求值-打印-循环)的使用方法。REPL是Scala开发中的重要工具,能够帮助初学者快速理解和实践Scala的基本语法和特性。通过详细的示例和练习,读者将能够熟练掌握Scala的基础概念和编程技巧。 ... [详细]
  • Android中将独立SO库封装进JAR包并实现SO库的加载与调用
    在Android开发中,将独立的SO库封装进JAR包并实现其加载与调用是一个常见的需求。本文详细介绍了如何将SO库嵌入到JAR包中,并确保在外部应用调用该JAR包时能够正确加载和使用这些SO库。通过这种方式,开发者可以更方便地管理和分发包含原生代码的库文件,提高开发效率和代码复用性。文章还探讨了常见的问题及其解决方案,帮助开发者避免在实际应用中遇到的坑。 ... [详细]
  • 手指触控|Android电容屏幕驱动调试指南
    手指触控|Android电容屏幕驱动调试指南 ... [详细]
  • 第二章:Kafka基础入门与核心概念解析
    本章节主要介绍了Kafka的基本概念及其核心特性。Kafka是一种分布式消息发布和订阅系统,以其卓越的性能和高吞吐量而著称。最初,Kafka被设计用于LinkedIn的活动流和运营数据处理,旨在高效地管理和传输大规模的数据流。这些数据主要包括用户活动记录、系统日志和其他实时信息。通过深入解析Kafka的设计原理和应用场景,读者将能够更好地理解其在现代大数据架构中的重要地位。 ... [详细]
  • 本文介绍了如何利用Apache POI库高效读取Excel文件中的数据。通过实际测试,除了分数被转换为小数存储外,其他数据均能正确读取。若在使用过程中发现任何问题,请及时留言反馈,以便我们进行更新和改进。 ... [详细]
  • 深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用
    深入解析Spring Boot启动过程中Netty异步架构的工作原理与应用 ... [详细]
  • 字节跳动深圳研发中心安全业务团队正在火热招募人才! ... [详细]
  • 全面解析Java虚拟机:内存模型深度剖析 ... [详细]
  • 2019年后蚂蚁集团与拼多多面试经验详述与深度剖析
    2019年后蚂蚁集团与拼多多面试经验详述与深度剖析 ... [详细]
  • 在Linux系统中,原本已安装了多个版本的Python 2,并且还安装了Anaconda,其中包含了Python 3。本文详细介绍了如何通过配置环境变量,使系统默认使用指定版本的Python,以便在不同版本之间轻松切换。此外,文章还提供了具体的实践步骤和注意事项,帮助用户高效地管理和使用不同版本的Python环境。 ... [详细]
  • 图论入门基础教程
    图论是计算机科学和数学中的重要分支,本教程旨在为初学者提供全面的基础知识。通过实例解析,如“昂贵的聘礼”问题,讲述了一个年轻探险家在印第安部落与酋长女儿的爱情故事,展示了图论在解决实际问题中的应用。教程内容涵盖了图的基本概念、表示方法以及常见算法,适合各类读者学习。 ... [详细]
  • HBase Java API 进阶:过滤器详解与应用实例
    本文详细探讨了HBase 1.2.6版本中Java API的高级应用,重点介绍了过滤器的使用方法和实际案例。首先,文章对几种常见的HBase过滤器进行了概述,包括列前缀过滤器(ColumnPrefixFilter)和时间戳过滤器(TimestampsFilter)。此外,还详细讲解了分页过滤器(PageFilter)的实现原理及其在大数据查询中的应用场景。通过具体的代码示例,读者可以更好地理解和掌握这些过滤器的使用技巧,从而提高数据处理的效率和灵活性。 ... [详细]
author-avatar
谁能吿诉我
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有