hive架构介绍、SQL引擎与NoSQL引擎的对比
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引擎的对比相关推荐
- MySQL第7天:MySQL的架构介绍之存储引擎
MySQL的架构介绍之存储引擎 #编写时间:2017.3.9 #编写地点:广州 1.存储引擎相关的命令 //查看已安装的mysql已提供的存储引擎 mysql>show engines;//查看 ...
- 超详细图解!【MySQL进阶篇】SQL优化-索引-存储引擎
1. Mysql的体系结构概览 整个MySQL Server由以下组成 Connection Pool : 连接池组件 Management Services & Utilities : 管理 ...
- 基于Hadoop架构下的FineBI大数据引擎技术原理
随着各个业务系统的不断增加,以及各业务系统数据量不断激增,业务用户的分析诉求越来越多且变化很快,IT数据支撑方的工作变得越来越复杂. 1.数据来自多个不同的系统,存在需要跨数据源分析,需要对接各种不同 ...
- mysql nosql引擎_nosql与mysql的区别是什么
nosql与mysql的区别是:1.MySQL是一个基于表格设计的关系数据库,而NoSQL本质上是非关系型的基于文档的设计:2.MySQL的严格模式限制并不容易扩展,而NoSQL可以通过动态模式特性轻 ...
- 下面介绍一个开源的OCR引擎Tesseract2。值得庆幸的是虽然是开源的但是它的识别率较高,并不比其他引擎差劲。网上介绍Tessnet2也是当时时间排名第三的识别引擎,只是后来慢慢不维护了,目前是G
下面介绍一个开源的OCR引擎Tesseract2.值得庆幸的是虽然是开源的但是它的识别率较高,并不比其他引擎差劲.网上介绍Tessnet2也是当时时间排名第三的识别引擎,只是后来慢慢不维护了,目前是G ...
- 【Games104-现代游戏引擎0102】引擎架构分层个人笔记
参考资料 <GAMES104-现代游戏引擎:从入门到实践>02.引擎架构分层(bilibili) <Game Engine Architecture>(Third Editio ...
- Hive体系结构介绍
http://www.aboutyun.com/thread-6217-1-1.html 1.Hive架构与基本组成 下面是Hive的架构图. 图1.1 Hive体系结构 Hive的体系结 ...
- Hive全面介绍(有点详细)
Hive有关介绍 Hive是什么 使用Hive的好处 Hive的特点 Hive架构 Hive工作原理 Hive的适用场景 Hive中表的分类 Hive与HBase的联系和区别 Hive与HBase的联 ...
- 伍哥原创之豆荚商城商品搜索架构介绍
为什么80%的码农都做不了架构师?>>> 豆荚商城(www.dou55.com)商品搜索架构介绍 1,需求分析 伍哥所在的豆荚商城是一个家电行业的B2C网上零售平台.作为这样一 ...
最新文章
- Git本地仓库文件的创建、修改和删除
- pandoc讲html转换为pdf,mac下利用Pandoc、LaTeX 转换markdown成html,pdf
- 5G毫米波三大自然缺陷
- 点货网 x mPaaS | 仅 2 位 Java 开发,使用小程序上线一款 App
- 王者服务器延迟高,王者荣耀延迟高卡住不动怎么办 卡顿的解决方法汇总
- Motherboard Monitor .NET
- ajax中设置请求头和自定义请求头
- Firefox浏览器无法安装firebug和firepath插件问题解决
- 如何固定电脑桌面便签 win7便签怎么设置?
- 【报告分享】第二届中国工业互联网大赛成果汇编-中国工业互联网大赛组委会(附下载)
- 如何加密文件及文件夹
- 录制课程用什么软件好?3款超好用的课程视频录课软件
- 班级页面设计——【2-主界面部分】
- 计算机985专硕还是211学硕好,985专硕和211学硕哪个更值得读
- 每日一题:假设你有一个很长的花坛,一部分地块种植了花,另一部分却没有。可是,花卉不能种植在相邻的地块上,它们会争夺水源,两者都会死去。
- Ubuntu16.04配置orb_slam2环境,orb_slam的单目数据集,单目实时运行,RGB-D数据集的运行
- JavaScript中的参数传递
- 小米手机短信定位服务激活失败
- 对提升开发效率的总结
- 序列数据的数据增强方法综述