大数据技术之Hive:先导篇(一)

目录

一、什么是Hive

二、思考如何设计出Hive功能

2.1 提问

2.2 案例分析

2.3 小结

三、掌握Hive的基础架构

3.1 Hive组件 - 元数据存储

3.2 Hive组件 - Driver驱动程序

3.3 Hive组件 - 用户接口


一、什么是Hive

什么是分布式SQL计算

我们知道,在进行数据统计分析时,通常是编程语言(如Java、Python) +  SQL,说明SQL是目前数据统计分析最为方便的编程工具

大数据体系中充斥着非常多的统计分析场景。所以,使用SQL去处理数据,在大数据中也是有极大的需求的 。

但是前面我们学习的非常重要的MapReduce,它只支持程序开发(Java、Python等),不支持SQL开发

所以,尽管MapReduce很重要,计算效率很高,由于不支持SQL开发,使用上就显得非常复杂。

由此,Hive应运而生。

什么是Hive

Apache Hive是一款分布式SQL计算的工具, 其主要功能是:

将SQL语句 翻译成MapReduce程序运行

 Hive的好处

使用Hadoop MapReduce直接处理数据所面临的问题:

  • 人员学习成本太高 需要掌握java、Python等编程语言
  • MapReduce实现复杂查询逻辑开发难度太大

使用Hive处理数据的好处

  • 操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)
  • 底层执行MapReduce,可以完成分布式海量数据的SQL处理

二、思考如何设计出Hive功能

2.1 提问

如果让您设计Hive这款软件,要求能够实现

  1. 用户只编写sql语句
  2. Hive自动将sql转换MapReduce程序并提交运行
  3. 处理位于HDFS上的结构化数据。

如何实现?

2.2 案例分析

针对SQL:SELECT city, COUNT(*) FROM t_user GROUP BY city;

若翻译成MapReduce程序,有如下问题:

  • 数据文件在哪里?
  • 使用什么符号作为列的分隔符?
  • 哪些列可以作为 city 使用?
  • city列是什么类型的数据?

下面我们逐一分析:

数据文件在哪里?

单凭这个”给定的SQL“,怎么知道数据文件放在什么位置呢?

这一点我们不妨借鉴一下数据库(例如MySQL数据库),它通过SQL语句内部就能够定位到数据文件的存储位置。

同理,使用什么符号作为列的分隔符?哪些列可以作为 city 使用?city列是什么类型的数据?这些个问题,在MySQL中通过内部映射关系都能够解决。

那么,最最简单的方法,就是找一个数据库,让它管理我们的数据。我们称为元数据管理

元数据管理

所以,元数据管理的功能,即:

解决数据位置、数据结构等问题,对数据进行描述进行记录。

SQL解析器

解决了元数据管理后,我们还有一个至关重要的步骤, 即完成SQL到MapReduce转换的功能

这个功能,我们称它为SQL解析器,期待它能做到:

  • SQL分析
  • SQL到MapReduce程序的转换
  • 提交MapReduce程序运行并收集执行结果

注意:这里提到的SQL解析和数据库工具(比如Mysql)的SQL解析器不是一回事。MySQL的SQL解析器是内部解析SQL语法的工具。这里的SQL解析器是针对Hive工具设计的,目的是让Hive的SQL能被解析转换成MapReduce程序,同时也能对SQL进行分析等等。因为Hive的SQL和数据库的SQL是有区别的。

至于Hive的SQL和数据库的SQL有什么异同,怎么让MySQL识别到Hive的SQL语法,这个后续慢慢讲~

所以,当解析器也拥有了之后,我们就完成了一款基于MapReduce的,分布式SQL执行引擎的基础构建。

2.3 小结

Apache Hive其2大主要组件就是:SQL解析器以及元数据存储, 如下图。

三、掌握Hive的基础架构

3.1 Hive组件 - 元数据存储

通常是存储在关系数据库如 mysql/derby中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

-- Hive提供了 Metastore 服务进程提供元数据管理功能

3.2 Hive组件 - Driver驱动程序

即SQL解析器,包括语法解析器、计划编译器、优化器、执行器。

作用

完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。

生成的查询计划存储在 HDFS 中,并在随后有执行引擎调用执行。

这部分内容不是具体的服务进程,而是封装在Hive所依赖的Jar文件即Java代码中。

3.3 Hive组件 - 用户接口

包括 CLI、JDBC/ODBC、WebGUI。其中,CLI(command line interface)为shell命令行;Hive中的Thrift服务器允许外部客户端通过网络与Hive进行交互,类似于JDBC或ODBC协议。WebGUI是通过浏览器访问Hive。

-- Hive提供了 Hive Shell、 ThriftServer等服务进程向用户提供操作接口

下一章,会讲解Apache Hive的安装部署以及 hello world   

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何苏三月

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值