数据仓库系统的结构包括哪些(数据仓库四个层次结构)

一、Hive简介Hive 是一个构建于 Hadoop 之上的数据仓库工具,由 Facebook 公司开发,并在 2008 年 8 月开源 。Hive 在某种程度上可以看作是用户编程接口,其本身并不存储和处理数据,而是依赖 HDFS 来存储数据,依赖 MapReduce 来处理数据 。Hive 定义了简单的类似 SQL 的查询语言-HiveQL,它与大部分 SQL 语法兼容,但是,并不完全支持 SQL 标准,比如,HiveQL 默认不支持更新操作,也不支持索引和事务,它的子查询和连接操作也存在很多局限 。


数据仓库系统的结构包括哪些(数据仓库四个层次结构)

文章插图
Hive的最佳使用场景是大数据的批处理作业 。


Hive框架的作用:
(1)可以让不懂Java开发的数据分析人员使用Hadoop进行数据分析 。
【数据仓库系统的结构包括哪些(数据仓库四个层次结构)】(2)MapReduce开发非常繁琐复杂,使用Hive可以提高效率 。
(3)统一的元数据管理,可与Impala/Spark共享元数据 。

二、Hive的体系结构首先左边是Command-line shell的一个命令行,右边有个Thrift/JDBC,这是什么意思呢?就是说我们可以通过什么方式来访问Hive,可以理解成Command-line shell和Thrift/JDBC 是两个客户端来操作数据,你可以通过Hive脚本的方式来操作,也可以通过服务器,通过thrift协议按照编译JDBC的方式就能够完成对Hive里面的数据进行相应的操作 。


数据仓库系统的结构包括哪些(数据仓库四个层次结构)

文章插图
不管是通过哪一个客户端,肯定要写SQL语句 。因为刚开始的时候SQL仅仅是一段很普通的字符串,如果想把这段SQL转换成物理性的执行计划,那其中是有很多的过程的,所以第一步就是解析SQL 。首先把语句解析成抽象语法树(AST),之后才能转换成逻辑性执行计划,上图中有一个SQL Parser目的就是把我们的SQL语句翻译成抽象语法树,到这一步之后会生成逻辑执行计划,然后再使用一个查询优化的工具Query Optimizer对我们逻辑执行计划进行优化,最终再通过Exection(执行器)生成物理执行计划,在物理执行计划中还包括序列化和反序列化(SerDes),把最终的物理执行计划生提交到MapReduce上去执行 。


从上到下的这个过程,从客户端传递SQL至Driver来解析SQL语句到最后生成物理执行计划交给MapReduce执行这些都是由Hive内核完成的,我们输入仅仅只有一条SQL语句,那么输出就是相应的作业的输出了,那么左边还剩下两个框Metastore和RDBMS(MySQL)是什么意思呢?
MetaStore表示元数据,也就是“数据的数据”,例如一张表里有许多数据,而元数据则是在描述该表的相关信息,例如创建时间、列数、行数等 。Hive的元数据默认储存在derby数据库里,但推荐储存在MySQL里 。

三、 SQL on Hadoop框架Hive是一种最常见、使用最为广泛的SQL on Hadoop框架 。还有几个其他常见的SQL on Hadoop框架 。
1. Presto
Presto是Facebook开源的大数据查询引擎,为了解决Hive查询慢产生 。使用Java编写,数据全部在内存中处理,作用和Impala类似 。原生集成了Hive、HBase和关系型数据库 。国内京东使用比较广泛 。


数据仓库系统的结构包括哪些(数据仓库四个层次结构)

文章插图
2. Drill
2012年,由Hadoop 分销商的领导者之一MapR 领导的一个团队,提出构建一个Google Dremel 的开源版本,一个交互式的分布式热点分析系统 。
2015年,两位关键的Drill 贡献者离开了MapR,并启动了Dremio,该项目尚未发布 。


数据仓库系统的结构包括哪些(数据仓库四个层次结构)

文章插图
3. Impala
底层是使用C++写的,受到Google的Dremel项目启发,2012年由Cloudera开发,现在是Apache开源项目 。
Impala是基于内存的,适合交互式查询任务 。Hive是基于磁盘的 。
需要指出的是,虽然 Impala 的实时查询性能要比 Hive 好很多,但是,Impala 的目的并不在于替换现有的包括 Hive 在内的 MapReduce 工具,而是提供一个统一的平台用于实时查询 。事实上,Impala 的运行依然需要依赖于 Hive 的元数据 。总体而言,Impala 与其它组件之间的关系如图所示 。


数据仓库系统的结构包括哪些(数据仓库四个层次结构)

文章插图
与 Hive 类似,Impala 也可以直接与 HDFS 和 HBase 进行交互 。Hive 底层执行使用的是MapReduce,所以主要用于处理长时间运行的批处理任务,例如批量提取、转化、加载类型的任务 。而 Impala 则采用了与商用并行关系数据库类似的分布式查询引擎,可以直接从HDFS 或者 HBase 中用 SQL 语句查询数据,而不需要把 SQL 语句转化成 MapReduce 任务来执行,从而大大降低了延迟,可以很好地满足实时查询的要求 。另外,Impala 和 Hive 采用相同的 SQL 语法、 ODBC 驱动程序和用户接口 。


4. Spark SQL
Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用 。


数据仓库系统的结构包括哪些(数据仓库四个层次结构)

文章插图
由于MapReduce这种计算模型执行效率比较慢,所以Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快!同时Spark SQL也支持从Hive中读取数据 。


5. Apache Kylin
Apache Kylin是一个开源的、分布式的分析型数据仓库,提供Hadoop/Spark 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由 eBay 开发并贡献至开源社区 。它能在亚秒内查询巨大的表 。


数据仓库系统的结构包括哪些(数据仓库四个层次结构)

文章插图
Kylin 提供与多种数据可视化工具的整合能力,如 Tableau、PowerBI 等,令用户可以使用 BI 工具对 Hadoop 数据进行分析 。
Kylin 以Hive或者Kafka作为数据源,里面保存着真实表,而Kylin做的就是将数据进行抽象,通过引擎实现Cube的构建 。将HBase作为数据的仓库,存放Cube 。因为HBase的直接读取比较复杂,所以Kylin提供了近似SQL和HQL的形式,满足了数据读取的基本需求 。对外提供了RestApi和JDBC/ODBC方便操作 。


数据仓库系统的结构包括哪些(数据仓库四个层次结构)

文章插图
Elasticsearch技术专栏第1-3章,分别介绍了Elasticsearch/Kibana/Metricbeat v7.3的安装配置 。技术专栏从实战出发,通过理论讲解-环境搭建-项目案例实战,让初学者快速掌握Elastic技术栈 。
获取更多Elasticsearch设计细节、入门实例、原理剖析和演示项目源代码,可访问Elasticsearch 7.x 技术专栏 。