hive架构、好处、使用场景以及在hadoop生态系统中的地位
hive在hadoop生态系统中的地位
在讲解hive的架构之前,我们先看一下hadoop的生态系统图,看看hive在hadoop中扮演什么角色它在生态系统中占据什么位置?
我们稍后会向大家介绍这张图中的所有框架。
从上图中我们可以看到hive下面是yarn、MapReduce和HDFS,这和我们对hive的定义是一样的。 hive的右侧是HBase,这说明hive可以和HBase集成。可见hive在整个hadoop生态系统中仍然占据着比较重要的地位。
蜂巢架构
首先让我们看看这张图片的蓝色部分。我们可以看到这是MapReduce和HDFS,这部分我们比较熟悉。
请记住,hive 的本质是将 HQL 语句转换为 MapReduce 程序,以便在 YARN 上执行。现在我们知道了底层的MapReduce 和HDFS。用户如何向hive提交HQL语句?
这是上图的右上部分。用户可以通过cli(命令行)或java调用jdbc,通过Hive驱动程序将HQL提交到Hive。
hive 收到 HQL 语句时,必须执行以下四个步骤:
- 解析 HQL 语句
- 对解析后的语句进行优化。
- 根据优化结果生成物理计划。
- 将物理计划发送到yarn执行。
通过以上步骤,hive已经完成了它的工作,接受了用户提交的HQL语句,并将其转换为MapReduce程序来执行。
我们看到上图左边有一个MetaStore。这是什么?这是配置单元的元数据。让我们解释一下什么是元数据。我们知道hive将某些日志数据转换成数据表。是否需要记录表名与HDFS文件系统中存储的文件的对应关系?它需要知道每列数据的名称吗?这些构成了配置单元的元数据。 Hive通过查找元数据可以清楚地知道要查找哪个文件等等。
元数据默认存储在内置 derby 数据库中。推荐使用MySQL来存储Metestore。
hive的优点
- 操作界面采用类似SQL的语法,提供快速开发机会(简单易用)
- 无需编写MapReducer,降低开发者的学习成本统一的元管理,可以与impala/spark等共享数据。
- 易于扩展(HDFS+MapReduce),可以扩展集群规模;支持用户自定义函数
使用场景
- 数据的离线处理:如日志分析、海量结构 数据的离线分析
- Hive的执行延迟较高:Hive常用于实时数据分析要求不高
- Hive的优势在于处理大数据,但是处理小数据就没有优势了,因为Hive的执行延迟比较高
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。