专栏首页码的一手好代码Hive概念以及架构介绍

Hive概念以及架构介绍

Hive的架构、执行任务的流程

Hive概念以及架构

0. 目录

  • 什么是Hive
  • Hive 体系介绍
  • Hive 执行任务的流程

1. 什么是Hive

  • Hive是Hadoop工具家族中一个重要成员,可以将结构化的数据文件(HDFS)映射为一张数据库表。
  • Hive 定义了简单的类 SQL 查询语言,被称为 HQL,实现方便高效的数据查询
  • Hive的本质是将HQL,转换成MapReduce任务,完成整个的数据的ETL,减少编写MapReduce的复杂度

2.Hive体系介绍

Hive架构包括如下组件:CLI(command line interface)、JDBC/ODBC、Thrift Server、Hive WEB Interface(HWI)、Metastore和Driver(Complier、Optimizer和Executor)

  • Driver:核心组件。整个Hive的核心,该组件包括Complier、Optimizer和Executor,它的作用是将我们写的HQL语句进行解析、编译优化,生成执行计划,然后调用底层的MapReduce计算框架。
  • Metastore: 元数据服务组件。这个组件存储Hive元数据,放在关系型数据库中,支持derby、mysql。
  • ThriftServers:提供JDBC和ODBC接入的能力,它用来进行可扩展且跨语言的服务的开发,hive集成了该服务,能让不同的编程语言调用hive的接口。
  • CLI:command line interface,命令行接口
  • Hive WEB Interface(HWI):hive客户端提供了一种通过网页的方式访问hive所提供的服务。这个接口对应hive的hwi组件(hive web interface)

3. Hive执行流程

  1. UI调用Drive的execute接口(1)
  2. Drive创建一个查询的Session事件并发送这个查询到Compiler,Compiler收到Session生成执行计划(2)
  3. Compiler从MetaStore中获取一些必要的数据(3,4)
  4. 在整个Plan Tree中,MetaStore用于查询表达式的类型检查,以及根据查询谓语(query predicates)精简partitions 。该Plan由Compiler生成,是一个DAG(Directed acyclic graph,有向无环图)执行步骤,里面的步骤包括map/reduce jobmetadata 操作、HDFS上的操作,对于map/reduce job,里面包含map operator trees和一个reduce operator tree(5)
  5. 提交执行计划到Excution Engine,并由Execution Engine将各个阶段提交个适当的组件执行(6,6.1,6.2 , 6.3)
  6. 在每个任务(mapper / reducer)中,表或者中间输出相关的反序列化器从HDFS读取行,并通过相关的操作树进行传递。一旦这些输出产生,将通过序列化器生成零时的的HDFS文件(这个只发生在只有Map没有reduce的情况),生成的HDFS零时文件用于执行计划后续的Map/Reduce阶段。对于DML操作,零时文件最终移动到表的位置。该方案确保不出现脏数据读取(文件重命名是HDFS中的原子操作),对于查询,临时文件的内容由Execution Engine直接从HDFS读取,作为从Driver Fetch API的一部分(7,8,9)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Hive与Hbase之间的区别与关系

    俺也想起舞
  • HIVE:JOIN原理、优化

    hive的一些join操作以及hivejoin操作的优化

    俺也想起舞
  • Spark中的持久化

    Spark 中一个很重要的能力是将数据持久化(或称为缓存),在多个操作间都可以访问这些持久化的数据。当持久化一个 RDD 时,每个节点的其它分区都可以使用 RD...

    俺也想起舞
  • 一分钟看完 Hive 体系结构

    ①CLI(command line interface):CLI启动的时候会同时启动一个Hive副本;

    Lenis
  • 「大数据系列」:Apache Hive 分布式数据仓库项目介绍

    Apache Hive™数据仓库软件有助于读取,编写和管理驻留在分布式存储中的大型数据集并使用SQL语法进行查询

    首席架构师智库
  • Hive基础(1)

    Hive基础(1) Hive的HQL(2) 1. Hive并不是分布式的,它独立于机器之外,类似于Hadoop的客户端。 2. 元数据和数据的区别,前者如表名、...

    王小雷
  • hive学习笔记——Hive表的创建

    初衷:以前看过Hadoop方面的材料,但是一直以来都是与实际应用脱轨,现在有机会接触到真正的Hadoop集群,还是被他的性能所震撼,利用这个机会认真重新学习下...

    zhaozhiyong
  • hive学习笔记——Hive表的创建

    初衷:以前看过Hadoop方面的材料,但是一直以来都是与实际应用脱轨,现在有机会接触到真正的Hadoop集群,还是被他的性能所震撼,利用这个机会认真重新学习下...

    zhaozhiyong
  • 数据仓库Hive 基础知识(Hadoop)

    Hive是基于Hadoop的数据仓库工具,可对存储在HDFS上的文件中的数据集进行数据整理、特殊查询和分析处理,提供了类似于SQL语言的查询语言–HiveQL,...

    小莹莹
  • 如何在 Flink 1.9 中使用 Hive?

    阿里巴巴技术专家,Apache Hive PMC成员,加入阿里巴巴之前曾就职于Intel、IBM等公司,主要参与Hive、HDFS、Spark等开源项目。

    用户6259908

扫码关注云+社区

领取腾讯云代金券