资讯专栏INFORMATION COLUMN

Hive系列文章(2):Hive介绍

keithxiaoy / 2909人阅读

摘要:从中获取用户对查询树中的表达式进行数据类型检查和基于分区的查询预测所需的元数据信息。生成的执行计划是一个由不同的组成的有向无环图,每个有可能是一个任务,或者元数据信息操作,或者操作。如果任务执行会导致元素局信息的变动,会通知进行元数据修改。

本系列文章使用的硬件环境为:centOS 6.5 64bit / 4G RAM 30G HHD
使用的Hive版本为:

hive2.0.0 / Hadoop版本为2.6.4 / JDK版本为:1.8.0

1、 Hive架构

Hive的核心组件包括:

UI:用户提交查询或其他系统操作的接口,可能是命令行工具,也可能是基于Web的界面工具

Driver:接收查询的组件,Driver实现了会话的概念,并且提供基于JDBC和ODBC接口的执行和获取的API模型。

Compiler:解析用户查询的组件,对不同的查询块和查询表达式进行语法检查,并最终借助于MetaStore提供的表和分区的元数据信息生成一个执行计划。

Metastore:存储数据仓库中的众多表和分区的结构信息,字段和字段类型信息,读写数据所需的序列化和反序列化的反序列化工具信息,以及对应的数据在HDFS存储的位置信息等。

Execution Engine:执行Compiler生成的执行计划。Compiler生成的执行计划是一个由不同stage组成的有向无环图,Execution Engine管理不同stage之间的依赖关系,然后在合适的系统组件上执行这些stage

Hive任务的执行流程

step1:用户通过UI组件提交查询语句或其他指令,UI组件调用Driver组件的命令执行接口

step2:Driver为任务生成一个会话,并且将这个任务提交给Compiler组件。

step3:Compiler从Metastore中获取用户对查询树中的表达式进行数据类型检查和基于分区的查询预测所需的元数据信息。并生成执行计划。Compiler生成的执行计划是一个由不同的stage组成的有向无环图,每个stage有可能是一个MapReduce任务,或者元数据信息操作,或者HDFS操作。如果是MapReduce类型的stage,那么这个Stage会包含一个Map操作树,和Reduce操作树。最后Compiler会向Driver提交生成的执行计划。

step4:Driver生成执行计划之后,向Execution Engine提交执行计划

step5:Execution Engine收到执行计划之后,会根据stage之间的依赖关系,然后向合适的外部组件提交这些stage(不同部署方式会有所不同)。外部组件(比如Hadoop)会将执行结构保存成临时文件。如果任务执行会导致元素局信息的变动,Execution Engine会通知MetaStore进行元数据修改。

step6:Driver通过Execution Engine获取执行结果,并将执行结果返回给终端用户

2、 Hive的数据模型

hive的数据组织结构为:

database:和一般关系型数据库(例如mysql,sqlserver)中的database的概念是类似的,其作用主要是将用户建的表进行隔离。实际存储的时候就是一个数据库的所有表存储在一个文件夹中。

tables:表是实际存放数据的地方,和DBMS中类似,HIve中的表实际上也是二维表,分为行和列,不同之处在于hive中除了一些原生类型之外,还支持List和Map类型,当然用户也可以自定义类型

partitions:为了便于用户组织数据,Hive中提供了一个分区的概念,和Oracle中的分区类似,可以按照某个字段的不同取值,将数据组织在不同的分区中。现在Hive支持多级分区,即对分区之后的数据再进行分区,比如公司订单数据,可以先按照日期进行分区,每天一个分区,然后在每天的分区按照销售区域进行分区。实际储存时每个分区实际上就是表目录下的一个子目录,多级分区就是子子目录,依次类推。不是所有的表都必须分区

buckets:Hive中分区的数据可以按照某个字段拆分成多个文件,进行存储。bucket能够允许系统有效的进行基于字段值得抽样。并非所有的表都会使用bucket

row:就是一条数据记录,在默存储方案下,Hive会指定一个航分割符号,对数据进行分割,默认为换行符。行分割符可以在建表的时候指定。

col:一行数据中可能会包含多个列(字段)。字段与字段之间使用列分割符进行分割。默认的列分隔符为01

参考

https://cwiki.apache.org/conf...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/11764.html

相关文章

  • Hive介绍

    摘要:通过给用户提供的一系列交互接口,接收到用户的指令,使用自己的,结合元数据,将这些指令翻译成,提交到中执行,最后,将执行返回的结果输出到用户交互接口。什么是Hivehive简介hive是由Facebook开源用于解决海量结构化日志的数据统计工具,是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL查询功能。Hive本质将HQL转化成MapReduce程序。...

    Tecode 评论0 收藏0
  • SparkSQL 在有赞的实践

    摘要:在有赞的技术演进。业务数据量正在不断增大,这些任务会影响业务对外服务的承诺。监控需要收集上执行的的审计信息,包括提交者执行的具体,开始结束时间,执行完成状态。还有一点是详细介绍了的原理,实践中设置了的比默认的减少了以上的时间。 前言 有赞数据平台从2017年上半年开始,逐步使用 SparkSQL 替代 Hive 执行离线任务,目前 SparkSQL 每天的运行作业数量5000个,占离线...

    hzx 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<