第一周 hive开篇

108 阅读2分钟

第一周 hive开篇

这个栏目主要是想用三个月去弄懂hive这个框架,我们使用的是开源版本的hive,其中主要包括了与metastore,hdfs,mr,tez,yarn的交互等。

为什么选择hive,现在市面上主流是spark,首先是因为个人本身最近就在做这个方向,希望通过一个引擎可以去入门弄懂大数据引擎运行的原理。但我认为弄懂了hive之后去读spark也会更加的熟练,其中主要的基本模块划分可能有差别但不会过大。这三年博主可能先做的是hive,tez,spark,presto,yarn,在这之后有时间会继续去了解其他的,如果有感兴趣的欢迎大家评论留言。

hive的用途

我们首先看官网(hive.apache.org/ ) 介绍,hive是一个可以对分布式存储中使用sql进行大规模分析和读写,管理pb级别数据量的分布式,容错的数据仓库系统。

hive本质还是一个数据仓库,对用户提供了类sql的友好方式去对存储在分布式中的数据进行管理和查询,说通俗点就是处理数据存储在分布式系统中数据库。这也可以看出hive本身并不存储数据,数据存储分布式(hdfs等)中。

hive主要模块

hive的很多功能都直接使用hadoop生态中已经存在的组件,避免重复造轮子而专注于自身的设计,存储系统(hdfs),调度系统(yarn),计算(tez,mapreduce),网络传输。其中tez我们会在hive序列中后续一起做介绍,并把hive如何与这些进行交互也一起做了。

一般在公司中,hive分为客户端和服务端,客户端负责的是从用户输出的sql开始,按照阶段划分,分为了抽象语法树解析,语义解析,生成逻辑执行计划,最后生成物理执行计划提交。而在这个过程中又伴随着一些其他的插入。

而从功能的角度,有些模块是会在多个阶段都存在的,hive的主要功能模块有metastore保存元数据信息,用户自定义扩展hook和udf,日志模块,序列化和反序列化等。

最后的目标是把Optimizer + parser + exec + io + lib + lock + log + plan + processor + reexec + udf + session这部分做完。