对数据进行统计分析,SQL是目前最为方便的编程工具。
大数据体系中充斥着非常多的统计分析场景
所以,使用SQL去处理数据,在大数据中也是有极大的需求的。
MapReduce支持程序开发(Java、Python等)
但不支持SQL开发
Apache Hive是一款分布式SQL计算的工具, 其主要功能是:
使用Hadoop MapReduce直接处理数据所面临的问题
使用Hive处理数据的好处
如果让您设计Hive这款软件,要求能够实现
如何实现?
假设要执行: SELECT city, COUNT(*) FROM t_user GROUP BY city;
对这个SQL翻译成MapReduce程序,会出现哪些困难?
针对SQL:SELECT city, COUNT(*) FROM t_user GROUP BY city;若翻译成MapReduce程序,有如下问题:
所以,我们可以总结出来第一个点, 即构建分布式SQL计算, 需要拥有:元数据管理功能,即:
解决了元数据管理后,我们还有一个至关重要的步骤, 即完成SQL到MapReduce转换的功能。
我们称呼它为:SQL解析器,期待它能做到:
所以,当解析器也拥有了之后,我们就完成了一款基于MapReduce的,分布式SQL执行引擎的基础构建。
即,核心组件需要有:
当拥有这2个组件, 基本上分布式SQL计算的能力就实现了。
Apache Hive其2大主要组件就是:SQL解析器以及元数据存储, 如下图。
通常是存储在关系数据库如 mysql/derby中。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。
– Hive提供了 Metastore 服务进程提供元数据管理功能
完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有执行引擎调用执行。
这部分内容不是具体的服务进程,而是封装在Hive所依赖的Jar文件即Java代码中。
包括 CLI、JDBC/ODBC、WebGUI。其中,CLI(command line interface)为shell命令行;Hive中的Thrift服务器允许外部客户端通过网络与Hive进行交互,类似于JDBC或ODBC协议。WebGUI是通过浏览器访问Hive。
– Hive提供了 Hive Shell、 ThriftServer等服务进程向用户提供操作接口。
结束!!!!!!!
hy:38
低级的快乐来自放纵,高级的快乐来自克制。