hive架构介绍、SQL引擎与NoSQL引擎的对比

什么是hive?

hive构建在hadoop hdfs 上的数据仓库。

什么是数据仓库?

数据仓库是一个面向主题的,集成的,不可更新的,随时间不变化的数据集合,
它主要用于支持企业或组织的决策分析处理。
数据仓库实际上就是一个数据库,数据仓库的特点:引入冗余,分析数据;
数据库的特点:避免冗余,捕获数据。

数据仓库的构建过程

1、数据源 (业务数据系统、文档资料、其他数据)
2、数据存储及管理-ETL (抽取Extract、转换Transform、装载Load)
3、数据仓库引擎 (服务器)
4、前端展示 (数据查询、数据报表、数据分析、各类应用)

OLTP应用和OLAP应用

1.OLTP(on-line transaction processing) 联机事务处理
例:银行转账
2.OLAP(on-line analytical processing) 联机分析处理
例:商品推荐系统

数据仓库中的数据模型

1、星型模型——强调大范围的维度,冗余少
在这里插入图片描述

2、雪花模型——强调具体指标,有较多冗余,用起来方便
在这里插入图片描述

什么是hive

hive是建立在hadoop hdfs 上的数据仓库基础架构。
hive可以用来进行数据提取转化加载(ETL)。
hive提供了简单的类似SQL的查询语言(HQL),它允许熟悉SQL的用户查询数据。
hive允许熟悉MapReduce的开发者,
开发自定义的mapper和Reducer来处理内建的mapper和reducer无法完成的复杂的分析工作。
hive是SQL引擎,它将SQL语句转移成M/R job, 然后在Hadoop上执行。
hive表其实就是HDFS的目录/文件

HIVE的体系结构

hive的体系结构之元数据

hive的元数据

  • hive将元数据存储在数据库中(metastore),支持mysql、derby等数据库(mysql、derby、oracle)
  • hive中的元数据包括表的名字、表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

hive的体系结构之HQL的执行过程

解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。
生成的查询计划存储在HDFS中,并在随后又MapReduce调用生成。
在这里插入图片描述

hive的体系结构

hadoop

  • 用HDFS进行存储,利用MapReduce进行计算
    元数据存储 (MetaStore)
  • 通常是存储在关系数据库 mysql,derby等

在这里插入图片描述

什么是SQL引擎?

对关系型数据来说,数据库引擎 (或“存储引擎”)是DBMS用于从数据库增删查改(CRUD)数据的底层软件组件。
部署了最基本的数据存取(包括B+树以及索引)以后,还可以实现一些高级功能。
(1)SQL语言是数据库通用操作语言,所以需要一个SQL解析器,将SQL命令解析为对应的ISAM操作。

(2)数据库连接(join)是指数据库的两张表通过"外键",建立连接关系。你需要对这种操作进行优化。

(3)数据库事务(transaction)是指批量进行一系列数据库操作,只要有一步不成功,整个操作都不成功。所以需要有一个"操作日志",以便失败时对操作进行回滚。

(4)备份机制:保存数据库的副本。

(5)远程操作:使得用户可以在不同的机器上,通过TCP/IP协议操作数据库。

对于非关系型数据,主要在sql解析上区别。对比关系型与非关系型数据库如下;

SQL与NoSQL的典型引擎和区别

数据库类型SQLNoSQL
举例Oracle、SqlServer、MySQL、PostgreSQL等MongoDB、Redis、HBase等
存储结构采用结构化表来存储数据采用半结构化数据集存储数据
存储规范化 &存储代价通过更加规范化逻辑表来避免重复,获得最精简的空间,但数据操作往往涉及多个表,数据管理复杂。将数据存储在数据集中,数据经常可能存储重复,但数据更容易读写。
横向扩容能力较弱较强
事务性 &纯扩展性非常好的支持事务性不支持或半支持

关系型数据库特征及适用场景

数据库特征适用场景
MySQL最广泛、流行的开源数据库,支持多插件式存储引擎、灵活、多平台,支持水平拆分。支持高并发,简单的绝大部分 OLTP场景,单实例数量级不易过大,非常适合大规模数据库场景相对简单的互联网行业。
SQL Server与微软体系紧密结合的商业关系型数据库,大多数操作通过图形界面完成,支持共享存储方式的数据库集群,可通过硬件进行垂直升级。适用于应用端采用微软体系的大多数 OLTP场景。
Oracle目前市面上功能最强大、最复杂的商业数据库,有一套完整监控管理体系,支持多种高可用方案。适用于稳定性、安全性要求非常高的 OLTP场景,如银行、金融行业。
PostgreSQL目前功能最强大的开源数据库,支持多平台、多种高可用方案,但国内社区活跃度有待进一步增强。易用性介于 mysql与oracle中间。支持绝大多数高并发 OLTP场景,国内大规模应用的案例相对较少,适合作为oracle与mysql之间的折中方案。

关系型数据库特征及适用场景

数据库特征适用场景
MongoDB主流的文档型 NoSQL数据库,开源,多平台。适用于更新迭代快、需求变更多、以对象为主的网站应用、小文件系统、日志分析系统等。
Redis主流的内存数据库,性能高,稳定性好。适用于对命令响应速度要求高,热点数据规模小、读取频繁的场景。
Hbase主流的海量列式存储型 NoSQL数据库。适用于简单数据写入和海量、简单数据查询的业务场景,多用于 OLAP场景。

hive on

spark及spark on hive,spark sql的区别:sql引擎和计算引擎
Spark-SQL:Spark SQL引擎 + SparkRDD引擎

Hive on Spark:Hive SQL引擎+ SparkRDD引擎

Spark on Hive: Hive SQL引擎+ SparkRDD引擎

Hive on Spark和Spark on Hive之间的SQL和计算引擎是一模一样的,如果区分?

Hive on Spark 是在Hive中配置Spark,运行方式入口是通过Hive,底层是有第三方的hive on spark中间包自动转换MR引擎,变为SparkRDD引擎。

Spark on Hive 是在Spark中配置Hive,运行方式入口是通过Spark,底层通过配置Hive的hive-site.xml,hdfs-site.xml等配置文件来直接操作hive SQL,其实是Hive的语法规则,但是计算还是本身的SparkRDD引擎。

Spark-SQL、Hive on Spark、Spark on Hive使用场景

从计算引擎上来看,三者都是SparkRDD计算引擎。从计算性能上来看,其实不会差非常多,都是取决于SparkRDD计算引擎。

Spark-SQL更多是开发Code中进行计算任务比较多,同时Saprk-SQL可以持久化到库表中方便第二次使用。

Hive on Spark,常规的数仓查询任务的,对外接口服务之类的。因为Hadoop生态群中的WEBUI界面非常丰富,所以直接通过HiveSQL查询将会非常方便。

Spark on Hive,使用Spark作为开发架构的,Hive作为数仓存储的场景中使用。

Hive

计算引擎的切换方法
1、配置mapreduce计算引擎
set hive.execution.engine=mr;
2、配置spark计算引擎
set hive.execution.engine=spark;
3、配置tez 计算引擎

set hive.execution.engine=tez;

参考

HIVE入门(概述、hive的体系结构): https://zhuanlan.zhihu.com/p/46210633
从 Hive 迁移到 SparkSQL,有赞的大数据实践:https://www.infoq.cn/article/I0ogpB7hMY4r4-4dFDDI

Hive计算引擎的切换方法:https://blog.csdn.net/u014236468/article/details/80927783

主流开源SQL引擎总结,不断改进的Hive始终遥遥领先 :https://www.sohu.com/a/127616590_470008

如何开发一个大数据SQL引擎:
https://geek-docs.com/hive/hive-tutorial/how-to-develop-a-large-data-sql-engine.html

大学生如何实现一个数据库?:https://www.zhihu.com/question/35382593

数据库的最简单实现:
https://www.ruanyifeng.com/blog/2014/07/database_implementation.html

数据库入门之3张表对比关系型与非关系型数据库:http://blog.itpub.net/31556022/viewspace-2638924/

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值