这是我参与2022首次更文挑战的第21天,活动详情查看:2022首次更文挑战
本文重点介绍hive的架构,每一层的作用,以及实现流程。首先简单解析一下hive的架构关系图,具体的图可以看下面。
这个图可以被分解为四大块:
第一块是最底下的HDFS和MapReduce就是hadoop框架中的内容,可以看之前的hadoop原理说明,
第二块就是最上面的部分,client即客户端就是操作人的一些行为,这两部分都比较简单。
然后第三块是左侧的Meta store,这个是存储元数据的作用,hive可以看作是hadoop的一个客户端,在安装hive后,我们新建了一张表,然后塞了一些字段,在HDFS中同时也会生成文件路径,这个表到文件的映射关系就是这个元数据,然后我们还配置了mysql的驱动信息,这就是把元数据存储到mysql中。这个元数据存储的作用就是为了读取元数据,首先从mysql中获取元数据,根据元数据拼接起来的路径,再到HDFS中访问到实际的数据内容。所以可见在hive中,不会存储数据,连元数据路径信息也是存储在第三方框架中,具体的数据信息存储在hadoop中的HDFS中。
剩下的最后一个模块就是真正hive所拥有的东西。看一下有解析器、编辑器、优化器和执行器。之前说过hive的本质写的很清楚了,hive就是把sql语句编译成mapreduce工作的过程。稍微一一解释一下每一项的工作内容,第一个解析器,就是将我们的sql语句录入,解析语句,校验通过基本语法;编译器就是翻译的作用,将任务翻译成MR,就是hive核心内容;优化器就是对MR工作过程进行优化,提高查询效率;提交给YAN执行任务,吐出相应的结果,这就是整个hive的过程,工作原理也是按照这样的顺序去执行的。
再细化一下hive的运行机制。
参照上述内容看这个图更简单了。