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

  • 什么是hive?
  • 什么是数据仓库?
  • 数据仓库的构建过程
  • OLTP应用和OLAP应用
  • 数据仓库中的数据模型
  • 什么是hive
  • HIVE的体系结构
    • hive的体系结构之元数据
    • hive的体系结构之HQL的执行过程
    • hive的体系结构
  • 什么是SQL引擎?
  • SQL与NoSQL的典型引擎和区别
  • hive on
  • Hive on Spark和Spark on Hive之间的SQL和计算引擎是一模一样的,如果区分?
  • Spark-SQL、Hive on Spark、Spark on Hive使用场景
  • Hive
  • 参考

什么是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的典型引擎和区别

数据库类型 SQL NoSQL
举例 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/

hive架构介绍、SQL引擎与NoSQL引擎的对比相关推荐

  1. MySQL第7天:MySQL的架构介绍之存储引擎

    MySQL的架构介绍之存储引擎 #编写时间:2017.3.9 #编写地点:广州 1.存储引擎相关的命令 //查看已安装的mysql已提供的存储引擎 mysql>show engines;//查看 ...

  2. 超详细图解!【MySQL进阶篇】SQL优化-索引-存储引擎

    1. Mysql的体系结构概览 整个MySQL Server由以下组成 Connection Pool : 连接池组件 Management Services & Utilities : 管理 ...

  3. 基于Hadoop架构下的FineBI大数据引擎技术原理

    随着各个业务系统的不断增加,以及各业务系统数据量不断激增,业务用户的分析诉求越来越多且变化很快,IT数据支撑方的工作变得越来越复杂. 1.数据来自多个不同的系统,存在需要跨数据源分析,需要对接各种不同 ...

  4. mysql nosql引擎_nosql与mysql的区别是什么

    nosql与mysql的区别是:1.MySQL是一个基于表格设计的关系数据库,而NoSQL本质上是非关系型的基于文档的设计:2.MySQL的严格模式限制并不容易扩展,而NoSQL可以通过动态模式特性轻 ...

  5. 下面介绍一个开源的OCR引擎Tesseract2。值得庆幸的是虽然是开源的但是它的识别率较高,并不比其他引擎差劲。网上介绍Tessnet2也是当时时间排名第三的识别引擎,只是后来慢慢不维护了,目前是G

    下面介绍一个开源的OCR引擎Tesseract2.值得庆幸的是虽然是开源的但是它的识别率较高,并不比其他引擎差劲.网上介绍Tessnet2也是当时时间排名第三的识别引擎,只是后来慢慢不维护了,目前是G ...

  6. 【Games104-现代游戏引擎0102】引擎架构分层个人笔记

    参考资料 <GAMES104-现代游戏引擎:从入门到实践>02.引擎架构分层(bilibili) <Game Engine Architecture>(Third Editio ...

  7. Hive体系结构介绍

    http://www.aboutyun.com/thread-6217-1-1.html   1.Hive架构与基本组成 下面是Hive的架构图. 图1.1 Hive体系结构     Hive的体系结 ...

  8. Hive全面介绍(有点详细)

    Hive有关介绍 Hive是什么 使用Hive的好处 Hive的特点 Hive架构 Hive工作原理 Hive的适用场景 Hive中表的分类 Hive与HBase的联系和区别 Hive与HBase的联 ...

  9. 伍哥原创之豆荚商城商品搜索架构介绍

    为什么80%的码农都做不了架构师?>>>    豆荚商城(www.dou55.com)商品搜索架构介绍 1,需求分析 伍哥所在的豆荚商城是一个家电行业的B2C网上零售平台.作为这样一 ...

最新文章

  1. Git本地仓库文件的创建、修改和删除
  2. pandoc讲html转换为pdf,mac下利用Pandoc、LaTeX 转换markdown成html,pdf
  3. 5G毫米波三大自然缺陷
  4. 点货网 x mPaaS | 仅 2 位 Java 开发,使用小程序上线一款 App
  5. 王者服务器延迟高,王者荣耀延迟高卡住不动怎么办 卡顿的解决方法汇总
  6. Motherboard Monitor .NET
  7. ajax中设置请求头和自定义请求头
  8. Firefox浏览器无法安装firebug和firepath插件问题解决
  9. 如何固定电脑桌面便签 win7便签怎么设置?
  10. 【报告分享】第二届中国工业互联网大赛成果汇编-中国工业互联网大赛组委会(附下载)
  11. 如何加密文件及文件夹
  12. 录制课程用什么软件好?3款超好用的课程视频录课软件
  13. 班级页面设计——【2-主界面部分】
  14. 计算机985专硕还是211学硕好,985专硕和211学硕哪个更值得读
  15. 每日一题:假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
  16. Ubuntu16.04配置orb_slam2环境,orb_slam的单目数据集,单目实时运行,RGB-D数据集的运行
  17. JavaScript中的参数传递
  18. 小米手机短信定位服务激活失败
  19. 对提升开发效率的总结
  20. 序列数据的数据增强方法综述

热门文章

  1. 023 导数之左导数、右导数;可导必然连续,连续不一定可导
  2. RetinaFace:单阶段人脸检测方法
  3. 基于C#的AE二次开发-地图渲染之分级设色符号化
  4. Python注释方式有哪些
  5. python注释几种类型
  6. TexturePacker 导出 Egret(白鹭引擎)格式的图集和图片字体
  7. vue解析Excel
  8. DBeaver Enterprise 21.3 企业版使用方法
  9. linux 删除文件夹中所有文件命令行,Linux中使用命令行删除文件夹
  10. 梆定变量的长度不一致也可能会造成硬解析