大数据生态体系产品(1) - Hive的架构与执行过程

1. MapReduce实现SQL

  下表pv_users为用户访问网页的数据存储:

pageidage
125
225
132
225

  查询不同年龄段访问网页的数据情况。

1.1 SQL实现

  SQL语句如下:

Select pageid, age, count(1) From pv_users Group By page_id, age;

  查询结果为:

pageidagecount
1251
2252
1321

1.2 MapReduce实现

  1. <pageid, age>作为Map的Key,Map的输出为:<<pageid, age>, 1>;
  2. 通过Shuffle进行Sort后,进行Reduce;
  3. Reduce的输出就是:<<pageid, age>, count>;

  下图为详细流程,便于理解:

Hive-SQL-MapReduce过程

  既然SQL能够被MapReduce计算处理,而对于做数据分析的人来说,写MapReduce程序有学习成本和负担,不如继续写SQL来的方便,在这样的情况下,Hadoop大数据仓库的Hive工具就诞生了。

  SQL之所以可以转为MapReduce,是因为两者在数学上是等价,MapReduce本质就是字段划分→查询→分组聚合,SQL也是这个。这也是Hive能实现的基础,SQL是声明式语言,比写MapReduce简单多了。

2. Hive的架构

  Hive由Facebook开源,用于解决海量结构化日志的数据统计,能够直接处理我们输入的SQL语句(Hive的SQL语法和数据库标准SQL略有不同),调用MapReduce计算框架完成数据分析操作。

  Hive实现的基本原理:

  1. Hive处理的数据存储在HDFS
  2. Hive分析数据底层的实现是MapReduce
  3. 执行程序运行在Yarn上

  下面是它的架构图:

Hive架构图

3. Hive执行过程

  通过Hive的Client向Hive提交SQL命令。

  • 如果是创建数据表的DDL(数据定义语言)

  Hive会通过执行引擎Driver将数据表的信息记录在Metastore元数据组件中,通过这个组件通常用一个关系数据库实现,记录表名、字段名、字段类型、关联HDFS文件路径等数据库的Meta信息。

  • 如果是查询分析数据的 DQL(数据查询语句)

  Driver就会将该语句提交给自己的编译器Compiler进行语法分析、语法解析、语法优化等一系列操作,最后生成一个MapReduce执行计划。然后根据执行计划生成一个MapReduce的作业,提交给Hadoop的MapReduce计算框架处理。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小爱玄策

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

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

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

打赏作者

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

抵扣说明:

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

余额充值