009 数据仓库-hive
Posted 玩转Hadoop
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了009 数据仓库-hive相关的知识,希望对你有一定的参考价值。
1. Hive起源
Hive起源于facebook,是应facebook每天产生的海量新兴社会网络数据进行管理和机器学习的需求而产生和发展的,它是一个构建在Hadoop上的数据仓库框架。
谈到数据仓库,SQL是一个避不开的话题,很多分析师都精通SQL(但可能编程技能较弱),Hive的最初的设计目标也是让分析师能够对存放在HDFS中的大规模数据集执行查询,hive就是把SQL查询转化为一系列在Hadoop集群上运行的MapReduce作业。
2. Hive架构
2.1 Hive架构图
2.2 Hive组件
在上面的架构图中,我们可以看淡hive由下面几个单元组成:
用户接口:包括web端、命令行cli、HD(运行在windows),在我们的实验环境中有两种CLI方式与Hive交互,一个是hive命令,另一个是beeline(推荐),登录edgenode,输入hive
元存储:Hive选择各自的数据库服务器,用以储存表,数据库,列模式或元数据表它们的数据类型和HDFS映射。
HiveQL处理引擎:类似于SQL的Metastore
执行引擎 :将sql查询转换为MapReduce去查询结果
最底层是HDFS文件系统或者Hbase等NoSQL数据库。
2.3 Hive工作流程
执行查询操作 命令行或Web UI之类的Hive接口将查询发送给Driver(任何数据库驱动程序,如JDBC、ODBC等)以执行;
获取计划任务 Driver借助查询编译器解析查询,检查语法和查询计划或查询需求;
获取元数据信息 编译器将元数据请求发送到Metastore(任何数据库);
发送元数据
Metastore将元数据作为对编译器的响应发送出去;
5. 发送计划任务
编译器检查需求并将计划重新发送给Driver。到目前为止,查询的解析和编译已经完成;
6. 执行计划任务
Driver将执行计划发送到执行引擎;
7. 执行Job任务
在内部,执行任务的过程是MapReduce Job,执行引擎将Job发送到Res ourceManager, ResourceManager位于Name节点中,并将job分配给 datanode中的NodeManager,在这里,查询执行MapReduce任务;
8. 元数据操作
在执行的同时,执行引擎可以使用Metastore执行元数据操作;
9. 拉取结果集
执行引擎将从datanode上获取结果集;
10 . 发送结果集至driver
执行引擎将这些结果值发送给Driver;
11. driver将result发送至interface
Driver将结果发送到Hive接口。
3. Hive实例
我们使用上一节的萨松的著名诗词《于我,过去,现在以及未来》为原始数据来展示hive的操作
登录edgenode,并启用hive cli客户端,建立表格和导入input.txt数据
查询全文
统计每一行有多少个单词
统计词频
select word,count(1) as count from (select explode(split(line,' '))\
as word from ronnie) word group by word order by count;
splilt函数对表中行按空格分割
explode函数对split的结果集进行行拆列
剩下的就是sql的统计分析
4. 小结
本节介绍了hive的起源,hive的架构原理,最后给了一个hive的实例,关于hive更多的玩法请参考cdh官方文档,下一节我们将介绍pig。
以上是关于009 数据仓库-hive的主要内容,如果未能解决你的问题,请参考以下文章
Hive数据仓库--Java代码JDBC方式访问Hive中表的数据
Hadoop学习笔记-009-CentOS_6.5_64_HA高可用-Hadoop2.6+Zookeeper3.4.5安装Hive1.1.0