参考:
课程教学(林子雨老师)
程序羊大数据学习路线
HDFS入门
Hbase入门
NoSql入门
文章目录
- 一、大数据概述
-
-
- 1.1大数据时代
- 1.2大数据的概念和影响
- 1.3大数据的应用
- 1.4大数据的关键技术
- 1.5大数据,物联网和云计算
-
- 检测题
- 二、大数据处理架构Hadoop
-
- 2.1hello,Hadoop
-
- 2.1.1Hadoop简介
- 2.1.2Apache Hadoop版本演变
- 2.2Hadoop项目结构
- 2.3Linux和Hadoop的安装
-
- 2.3.1安装Linux虚拟机
- 2.3.2安装Hadoop
- 2.4Hadoop集群的部署和使用
- 三、分布式文件系统HDFS
-
- 3.1 [分布式文件系统HDFS简介](https://www.cnblogs.com/gzshan/p/10981007.html)
- 3.2HDFS相关概念
-
- 块
- HDFS集群的节点分为两类:namenode和datanode
- 3.3 HDFS体系结构
- 3.4 HDFS存储原理
- 3.5HDFS数据读写过程
-
- 3.5.1 HDFS读数据过程
- 3.5.2 HDFS写数据过程
- 3.6[HDFS编程实践](https://blog.csdn.net/Moliay/article/details/129450964)
-
- 3.6.1HDFS常用命令
- 3.6.2安装Eclipse
- 3.6.3 HDFS常用Java API及应用实例
- 四、 分布式数据库HBase
-
- 4.1 HBase简介
- 4.2 HBase数据模型
- 4.3 HBase的实现原理
- 4.4 HBase运行机制
- 4.5 HBase应用方案
- 4.6 [HBase的安装和编程实践](https://blog.csdn.net/Moliay/article/details/129617128)
- 五、NoSQL数据库
-
- 5.1 NoSQL数据库
- 5.2 NoSQL与关系数据库的比较
- 5.3 四大类型NoSQL数据库
-
- 5.3.1键值数据库和列族数据库
- 5.3.1键值数据库和列族数据库
- 5.4 NoSQL数据库的理论基石
- 5.5 从NoSQL到NewSQL数据库
- 5.6 文档数据库MongoDB
一、大数据概述
1.1大数据时代
三次信息化浪潮
![大数据技术原理与应用笔记_第1张图片](http://img.e-com-net.com/image/info8/a6f108b33af743cbba6ea28ceb9bc7ff.jpg)
1.2大数据的概念和影响
1.3大数据的应用
(谷歌预测流感,大数据)
![大数据技术原理与应用笔记_第4张图片](http://img.e-com-net.com/image/info8/b1e907b822684011a5759f7c0f6e8652.jpg)
1.4大数据的关键技术
![大数据技术原理与应用笔记_第5张图片](http://img.e-com-net.com/image/info8/ee06b40ffcea41259fd9fb325c57ea22.jpg)
1.5大数据,物联网和云计算
1.5.1 云计算
![大数据技术原理与应用笔记_第6张图片](http://img.e-com-net.com/image/info8/2ffed352a95d42ca9edb905df29f210e.jpg)
- 解决了两个核心问题,即海量数据的分布式存储和分布式处理问题
- 典型特征是虚拟化和多租户
![大数据技术原理与应用笔记_第7张图片](http://img.e-com-net.com/image/info8/369796c33144441392e3a1ad01112583.jpg)
(老朋友 自来水)
![大数据技术原理与应用笔记_第8张图片](http://img.e-com-net.com/image/info8/f44114e2f2444a85846f100e9484a2f1.jpg)
(公有云:例如百度)
![大数据技术原理与应用笔记_第9张图片](http://img.e-com-net.com/image/info8/4b37d82d803249b69aca5e517cdbc396.jpg)
![大数据技术原理与应用笔记_第10张图片](http://img.e-com-net.com/image/info8/d611c3e794824fd3839cbce85724f22f.jpg)
1.5.2物联网
![在这里插入图片描述](http://img.e-com-net.com/image/info8/4e5fe5ea3c704a82ada7605839365170.jpg)
- 物联网的关键技术:识别&感知
- 大数据(此时指数据处理技术,非数据本身):如何存储&如何处理
![大数据技术原理与应用笔记_第11张图片](http://img.e-com-net.com/image/info8/ef863f5746f44fd984de200c4bd123ce.jpg)
(三者不断融合发展,相辅相成)
![大数据技术原理与应用笔记_第12张图片](http://img.e-com-net.com/image/info8/86f4b755e8fd4681aee78067c7ff7c38.jpg)
检测题
- 单位换算
1KB (Kilobyte 千字节)=1024B,
1MB (Megabyte 兆字节 简称“兆”)=1024KB,
1GB (Gigabyte 吉字节 又称“千兆”)=1024MB,
1TB (Trillionbyte 万亿字节 太字节)=1024GB,其中1024=2^10 ( 2 的10次方),
1PB(Petabyte 千万亿字节 拍字节)=1024TB,
1EB(Exabyte 百亿亿字节 艾字节)=1024PB,
1ZB (Zettabyte 十万亿亿字节 泽字节)= 1024 EB,
1YB (Yottabyte 一亿亿亿字节 尧字节)= 1024 ZB,
1BB (Brontobyte 一千亿亿亿字节)= 1024 YB.
(k m g t p e z y b 提屁姨,贼一笔)
二、大数据处理架构Hadoop
2.1hello,Hadoop
2.1.1Hadoop简介
- Hadoop发展历程
Apache软件基金会旗下的开源分布式平台,基于Java语言开发,具有很好的跨平台性
核心是分布式文件系统HDFS和MapReduce(分别实现了海量数据的分布式存储&处理)
![大数据技术原理与应用笔记_第13张图片](http://img.e-com-net.com/image/info8/907c9398b14e48629c8b8d8870c34d48.jpg)
Hadoop源自始于Apache Nutch项目。
- Hadoop的特性
高可靠性、高效性、高可扩展性、高容错性、成本低、运行在Linux平台、支持多种编程语言。
2.1.2Apache Hadoop版本演变
Hadoop2.0增加了HDFS HA和YARN两个系统。
![大数据技术原理与应用笔记_第14张图片](http://img.e-com-net.com/image/info8/643b35f4825946ee876bc8b647c359fe.jpg)
2.2Hadoop项目结构
![大数据技术原理与应用笔记_第15张图片](http://img.e-com-net.com/image/info8/52b92dcc171543349d214248e77f52b0.jpg)
-
HDFS:负责分布式文件存储
-
YARN框架:对计算机资源(例如带宽、内存啥的)进行管理和调度
-
MapReduce:离线 批处理计算
-
Tez:把作业 分析优化后 构建有向无环图,得出哪些工作先做哪些工作可以后做 以获得最好的工作效率
![大数据技术原理与应用笔记_第16张图片](http://img.e-com-net.com/image/info8/a93a5bcabd4c415bafafae83a01c9160.jpg)
-
Spark:类似于Hadoop MapReduce的通用并行框架
区别 Spark基于内存,因而效率比后者高一个数量级
MapReduce基于磁盘
-
Hive:Hadoop上的数据仓库
支持SQL语句,可以把SQL语句转化为一堆mapreduce作业
![大数据技术原理与应用笔记_第17张图片](http://img.e-com-net.com/image/info8/e36e01a59a84424b922c2c191a156647.jpg)
-
Pig:实现流数据处理
提供轻量级的数据分析
(虽说MapReduce已经屏蔽了很多底层的复杂性,但还是很复杂
所以有了Pig这一轻量级的脚本语言)
![大数据技术原理与应用笔记_第18张图片](http://img.e-com-net.com/image/info8/cf4203ad03034296af24a067993cbcd1.jpg)
-
Oozie:作业流调度系统
-
ZooKeeper:提供分布式协调一致性(例如分布式锁,集群管理啥的)
-
HBase列族数据库:支持随机读写,进而支持实时应用(快男)
-
Flume:日志收集分析框架(例如淘宝借助其进行流数据的收集)
-
Sqoop:数据导入导出
![大数据技术原理与应用笔记_第19张图片](http://img.e-com-net.com/image/info8/d3d8aa8f32eb4bf6bd3f1ae13c7d6c67.jpg)
-
Ambari:安装部署工具
![大数据技术原理与应用笔记_第20张图片](http://img.e-com-net.com/image/info8/3469b694d9444f12b1500c416f1bed1b.jpg)
2.3Linux和Hadoop的安装
2.3.1安装Linux虚拟机
2.3.2安装Hadoop
2.4Hadoop集群的部署和使用
主要是考虑两大核心组件的底层硬件的需求是啥
![大数据技术原理与应用笔记_第21张图片](http://img.e-com-net.com/image/info8/9711cdb6208345a1a43260a980072629.jpg)
(其余感觉比较散,之后看情况补充)
三、分布式文件系统HDFS
3.1 分布式文件系统HDFS简介
![大数据技术原理与应用笔记_第22张图片](http://img.e-com-net.com/image/info8/848442cecf3c4f948eee03b4020c1813.jpg)
HDFS:小弟不才,解决了两大核心问题之一
![大数据技术原理与应用笔记_第23张图片](http://img.e-com-net.com/image/info8/5446fa5ea1ec4b98b3c604eca3ea788d.jpg)
- 分布式文件系统
数据量上去了,进而有了分布式
![大数据技术原理与应用笔记_第24张图片](http://img.e-com-net.com/image/info8/a83819438d684b419da1cc48f7f6df38.jpg)
集群是个物理形态,分布式是个工作方式。
只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知道;一个程序或系统,只要运行在不同的机器上,就可以叫分布式,C/S架构也可以叫分布式。集群一般是物理集中、统一管理的,而分布式系统则不强调这一点。所以,集群可能运行着一个或多个分布式系统,也可能根本没有运行分布式系统;分布式系统可能运行在一个集群上,也可能运行在不属于一个集群的多台(2台也算多台)机器上。
作者:Wang Xu
链接:https://www.zhihu.com/question/20004877/answer/13632513
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
- HDFS实现目标:
- 兼容廉价的硬件设备
以企业可以承担的成本,可以使用普通的PC机构成集群。设计之初,就要考虑到能够兼容廉价的硬件设备。
- 实现流数据读写
区别于传统文件系统(以块数据为单位)之处。满足批量处理数据或海量数据处理的需求。
- 支持大数据集
- 支持简单的文件模型
为支持高效的数据读写,对文件进行了简化。牺牲了相关性能,但获得了批处理特性。只允许追加,不允许修改。
- 强大的跨平台兼容性
基于Java实现
![大数据技术原理与应用笔记_第25张图片](http://img.e-com-net.com/image/info8/754cbc82ae5f437daba9164fd139e8e5.jpg)
- HDFS自身的局限性
- 不适合低延迟数据访问
是为了面向大规模的流式读写,一次读大批量或者全部数据。所以当想要读某条数据时,需要读大量数据,再筛选出来,故实时性不高(HBase具备随机读写特性,实时性处理需求)。
- 无法高效储存大量 小文件
小文件多,索引结构庞大,进而索引效率低
- 不支持多用户写入及修改文件
只允许追加,不允许修改
![大数据技术原理与应用笔记_第26张图片](http://img.e-com-net.com/image/info8/6b5b092f9fc84e80bdc1b2cdbd572231.jpg)
3.2HDFS相关概念
块
默认一个块(block)的大小为128MB(HDFS的块这么大主要是为了最小化寻址开销),要在HDFS中存储的文件可以划分为多个分块,每个分块可以成为一个独立的存储单元。
与本地磁盘不同的是,HDFS中小于一个块大小的文件并不会占据整个HDFS数据块。
![大数据技术原理与应用笔记_第27张图片](http://img.e-com-net.com/image/info8/e749d2a28ed742ab9f132fd396f25990.jpg)
![大数据技术原理与应用笔记_第28张图片](http://img.e-com-net.com/image/info8/e5e6a42ace9c478e8d163a5f2e82c099.jpg)
块并非一味的大就是好
![大数据技术原理与应用笔记_第29张图片](http://img.e-com-net.com/image/info8/787d4b530de148a4a0af97f4810b6e19.jpg)
- 优点:
-
支持大规模文件存储
可以把大文件进行切割,各个小块可以分布式的存储在不同机器上,则可以突破单机存储容量上限。
-
简化系统设计
使用抽象的块,而不是整个文件作为存储单元,可以简化存储管理,使得文件的元数据可以单独管理。
-
适合数据备份
冗余备份。数据块非常适合用于数据备份,进而可以提供数据容错能力和提高可用性。每个块可以有多个备份(默认为三个),分别保存到相互独立的机器上去,这样就可以保证单点故障不会导致数据丢失。
![大数据技术原理与应用笔记_第30张图片](http://img.e-com-net.com/image/info8/7b9ab6f9cfcf43428836e3606b9088e4.jpg)
HDFS集群的节点分为两类:namenode和datanode
以管理节点-工作节点的模式运行,即一个namenode和多个datanode.
- namenode管理节点:整个HDFS集群的管家
(管理文件系统命名空间,管理文件系统树以及树中的所有目录和文件)
![大数据技术原理与应用笔记_第31张图片](http://img.e-com-net.com/image/info8/ebc9b6fa495e499789c35be939a36db1.jpg)
![大数据技术原理与应用笔记_第32张图片](http://img.e-com-net.com/image/info8/6baaa11ee21e423e8f4e88d65612f9d8.jpg)
FsImage不维护文件在具体的哪个节点(是通过数据节点和名称节点运行过程中不断地沟通,来实时维护)
![大数据技术原理与应用笔记_第33张图片](http://img.e-com-net.com/image/info8/58d1c658e8464b2a83433fc730d402f2.jpg)
保存元信息的种类有:
* 文件名目录名及其之间的层级关系
* 文件目录的所有者及其权限
* 每个文件块的名及文件由哪些块组成
![大数据技术原理与应用笔记_第34张图片](http://img.e-com-net.com/image/info8/5aa8401753814e26b7a05082fc64beef.jpg)
第二名称节点Secondary Namenode:名称节点的冷备份,实现对EditLog的处理
![大数据技术原理与应用笔记_第35张图片](http://img.e-com-net.com/image/info8/626b41c15cfc43979798066c676cf25f.jpg)
- datanode工作节点:存储实际数据(保存到本地的Linux文件系统中)
![大数据技术原理与应用笔记_第36张图片](http://img.e-com-net.com/image/info8/ea8e34fbc6db423a95380451fa61f088.jpg)
![大数据技术原理与应用笔记_第37张图片](http://img.e-com-net.com/image/info8/7e894017b18c454ea7b55c16fca65a2d.jpg)
3.3 HDFS体系结构
中从架构。
- 机架之间通过光纤高速连接
![大数据技术原理与应用笔记_第38张图片](http://img.e-com-net.com/image/info8/1b8e2171066942e6be1e73e3d59c9751.jpg)
- 缺点(第四点因为Secondary Namenode是冷备份)
(冷:不能保证一发生故障就能立刻顶上来)
![大数据技术原理与应用笔记_第39张图片](http://img.e-com-net.com/image/info8/da877405c0d3445680afefe7887f3463.jpg)
![大数据技术原理与应用笔记_第40张图片](http://img.e-com-net.com/image/info8/a4c2bedcc05c4e6cadd728f36e273f18.jpg)
3.4 HDFS存储原理
![大数据技术原理与应用笔记_第41张图片](http://img.e-com-net.com/image/info8/0d600c35857148c6ab7b4c829a5b344f.jpg)
底层架构在廉价的集群之上,而廉价的机器们最致命的缺点就是会不断出故障。所以HDFS中的数据都被冗余保存,一般默认为三份(当然也可以自定义其他数值)
![大数据技术原理与应用笔记_第42张图片](http://img.e-com-net.com/image/info8/b840a550f8154e988ef92a6c6a1d7c55.jpg)
- 数据冗余保存的优点
- 加快数据传输速度
并行传输
- 检查数据错误
互为参照
- 保证数据可靠性
![大数据技术原理与应用笔记_第43张图片](http://img.e-com-net.com/image/info8/3dbadf83a73d4db0aaba62a93fcca29d.jpg)
存放策略:
第一个副本:存放在上传这个文件的节点上(无需再通过网络传到其他机器上),若提交请求不是来自集群内部而是外部的某个数据节点时,存放在一个磁盘不太满,CPU不太忙的节点
第二个副本:存放在另一个机架上(不同于第一个的机架)
第三个副本:存放在第一个机架的不同节点上
(若还有其他副本,可通过随机算法)
![大数据技术原理与应用笔记_第44张图片](http://img.e-com-net.com/image/info8/e071ecf698d544aaae347db4ff1bd8ee.jpg)
数据读取
- 机架内部通信代价很小且较快
![大数据技术原理与应用笔记_第45张图片](http://img.e-com-net.com/image/info8/99623ed3765547cfb1eabf64a73e7801.jpg)
3.5HDFS数据读写过程
3.5.1 HDFS读数据过程
- client访问NameNode,查询元数据信息,获得这个文件的数据块位置列表,返回输入流对象。
- 就近挑选一台datanode服务器,请求建立输入流 。
- DataNode向输入流中中写数据,以packet为单位来校验。
- 关闭输入流
其中,方框内对用户屏蔽,系统自动封装完成。
![大数据技术原理与应用笔记_第46张图片](http://img.e-com-net.com/image/info8/4a779a614a3a41f6b9fb3e6176f839b2.jpg)
hadoop中设置了通用文件系统 抽象基类FileSystem
- 通常用的方法有
- open返回的是输入流
![大数据技术原理与应用笔记_第47张图片](http://img.e-com-net.com/image/info8/f63910e4ad6741119c4bb47888bc8260.jpg)
3.5.2 HDFS写数据过程
![大数据技术原理与应用笔记_第48张图片](http://img.e-com-net.com/image/info8/a440f2973f5b40eaa23a93f4219d899e.jpg)
- 客户端向NameNode发出写文件请求。
- 检查是否已存在文件、检查权限。若通过检查,直接先将操作写入EditLog,并返回输出流对象。
(注:WAL,write ahead log,先写Log,再写内存,因为EditLog记录的是最新的HDFS客户端执行所有的写操作。如果后续真实写操作失败了,由于在真实写操作之前,操作就被写入EditLog中了,故EditLog中仍会有记录,我们不用担心后续client读不到相应的数据块,因为在第5步中DataNode收到块后会有一返回确认信息,若没写成功,发送端没收到确认信息,会一直重试,直到成功)
- client端按128MB的块切分文件。
- client将NameNode返回的分配的可写的DataNode列表和Data数据一同发送给最近的第一个DataNode节点,此后client端和NameNode分配的多个DataNode构成pipeline管道,client端向输出流对象中写数据。client每向第一个DataNode写入一个packet,这个packet便会直接在pipeline里传给第二个、第三个…DataNode。
(注:并不是写好一个块或一整个文件后才向后分发)
- 每个DataNode写完一个块后,会返回确认信息。
(注:并不是每写完一个packet后就返回确认信息,个人觉得因为packet中的每个chunk都携带校验信息,没必要每写一个就汇报一下,这样效率太慢。正确的做法是写完一个block块后,对校验信息进行汇总分析,就能得出是否有块写错的情况发生)
- 写完数据,关闭输输出流。
- 发送完成信号给NameNode。
(注:发送完成信号的时机取决于集群是强一致性还是最终一致性,强一致性则需要所有DataNode写完后才向NameNode汇报。最终一致性则其中任意一个DataNode写完后就能单独向NameNode汇报,HDFS一般情况下都是强调强一致性)
3.6HDFS编程实践
(点开本节标题链接,详细展开)
3.6.1HDFS常用命令
启动Hadoop(启动失败的解决之一)
cd /usr/local/hadoop
./sbin/start-dfs.sh
jps
![在这里插入图片描述](http://img.e-com-net.com/image/info8/1327a4db86b6434e848640b62daa6658.jpg)
3.6.2安装Eclipse
3.6.3 HDFS常用Java API及应用实例
四、 分布式数据库HBase
4.1 HBase简介
HBase是BigTable的开源实现。
BigTable
- 引入目的:解决谷歌公司内部大规模网页搜索问题
- 网页搜索的两种方式
![在这里插入图片描述](http://img.e-com-net.com/image/info8/e3669f0960f34b18b7af91c99bb683b1.jpg)
- 实现
不是直接在底层磁盘上存储,而是架构在谷歌分布式文件系统GFS之上。
![大数据技术原理与应用笔记_第49张图片](http://img.e-com-net.com/image/info8/266e2fd6d01645abba705c8ef92757c7.jpg)
- 优点
![大数据技术原理与应用笔记_第50张图片](http://img.e-com-net.com/image/info8/bb5e83d38e15434184cf38dd7726930a.jpg)
HBase是高可靠,高性能,面向列,可伸缩的分布式数据库。最主要的特点是用来存储半结构化和非结构化的松散数据
![大数据技术原理与应用笔记_第51张图片](http://img.e-com-net.com/image/info8/afa6743473644c9eaa5e459fdda80f8d.jpg)
-
产生原因:为了满足不断增长的数据存储需求
![大数据技术原理与应用笔记_第52张图片](http://img.e-com-net.com/image/info8/4acd547eaf164d7eb2a46ab6138b34de.jpg)
-
HBase vs BigTable
![大数据技术原理与应用笔记_第53张图片](http://img.e-com-net.com/image/info8/a933ba4df96643a199142ec490c01ba4.jpg)
-
HBase vs 关系数据库
![大数据技术原理与应用笔记_第56张图片](http://img.e-com-net.com/image/info8/6a3bfe9858da4d0c8405ff1de92b3f1f.jpg)
- 访问接口
![大数据技术原理与应用笔记_第57张图片](http://img.e-com-net.com/image/info8/35df90fccbee4d109680f6d85bbe3581.jpg)
- what
Hbase是一种分布式存储的数据库。
- Hbase是一种NoSQL数据库,即它和传统的RDBMS数据库那种支持SQL作为查询语言 不同
- 技术上讲,它更像是分布式存储而非分布式数据库,缺少很多RDBMS系统的特点。如列类型,辅助索引,触发器和高级查询语言等待。
- 特点
- 强读写一致
但不是“最终一致性”的数据存储,使得它很适合高速的计算聚合
- 自动分片
通过Region分散在集群中,当行数增长的时候,Region也会自动的切分和再分配
- 自动的故障转移
- Hadoop/HDFS集成,和HDFS开箱即用,不用太麻烦的衔接
- 丰富的“简洁、高效”API
Thrift/REST API,Java API
- 块缓存,布隆过滤器,可以高效的列查询优化
- 操作管理
Hbase提供了内置的web界面来操作,还可以监控JMX指标
- when
- 数据库量要足够多
数据量小的话,真正能工作的机器量少,剩余的机器都处于空闲的状态。
因此,当有十亿及百亿行数据,适合Hbase;
当只有几百万行甚至更少的数据量,适合RDBMS
- 不需要辅助索引,静态类型的列,事务等特性。
一个已经用RDBMS的系统想要切换到Hbase,则需要重新设计系统
- 保证硬件资源足够
每个HDFS集群在少于5个节点的时候,都不能表现得很好。因为HDFS默认的复制数量是3,再加上一个Name Node(上一章的老朋友)
Hbase在单机环境也能运行,但在开发环境的时候使用就好。
4.2 HBase数据模型
HBase是一个稀疏的多维度(四个维度(行键,列族,列限定符,时间戳))的排序的映射表。
![大数据技术原理与应用笔记_第58张图片](http://img.e-com-net.com/image/info8/1da7c4901c334265af5c50687b6714b7.jpg)
其中:
- 列限定符也可以称为列
- 一个行可以有一个行键和任意多列
- 每一个值都是未经解释的字符串也就是Bytes数组
- 列族可以支持动态扩展,且保留旧的版本(追加时间戳)。
![大数据技术原理与应用笔记_第59张图片](http://img.e-com-net.com/image/info8/47594aa032d2447fafb55a21316506ab.jpg)
面向行的存储
- 缺:分析某个特征时都是针对一个列去分析,每次取出一整行代价大
![大数据技术原理与应用笔记_第60张图片](http://img.e-com-net.com/image/info8/3873d98dac8d403994a3c629e852b78c.jpg)
![大数据技术原理与应用笔记_第61张图片](http://img.e-com-net.com/image/info8/43327c7f693a42d080765c6e41f288da.jpg)
4.3 HBase的实现原理
![大数据技术原理与应用笔记_第69张图片](http://img.e-com-net.com/image/info8/0e12c240df2d4c7e8394c56796ac2708.jpg)
三级寻址可采用缓存,加快寻址速度。但是随着数据更新,缓存可能失效。
![大数据技术原理与应用笔记_第70张图片](http://img.e-com-net.com/image/info8/a56c5b0f578e45c0a965db59b84e03f3.jpg)
4.4 HBase运行机制
4.5 HBase应用方案
![大数据技术原理与应用笔记_第83张图片](http://img.e-com-net.com/image/info8/fb7fdb89069d41859c857ed923c08c4e.jpg)
![大数据技术原理与应用笔记_第84张图片](http://img.e-com-net.com/image/info8/3151d02e62754a9eb13c26e27ccb8c3c.jpg)
![大数据技术原理与应用笔记_第85张图片](http://img.e-com-net.com/image/info8/035be9f74e6b4ad58e8f8b6d9a395022.jpg)
- HBase之上如何构建SQL引擎和HBase二级索引
![大数据技术原理与应用笔记_第86张图片](http://img.e-com-net.com/image/info8/e9df651b35514e70bdc842522b88945c.jpg)
![大数据技术原理与应用笔记_第87张图片](http://img.e-com-net.com/image/info8/59e6e042ac92409e92c652cdf41ec9ec.jpg)
![在这里插入图片描述](http://img.e-com-net.com/image/info8/118be725a6cd4eb79638456df00c6a5b.jpg)
![大数据技术原理与应用笔记_第88张图片](http://img.e-com-net.com/image/info8/f5c3900cf5e742c19a21928639f8d296.jpg)
4.6 HBase的安装和编程实践
五、NoSQL数据库
5.1 NoSQL数据库
![大数据技术原理与应用笔记_第89张图片](http://img.e-com-net.com/image/info8/335c58cb6c2840688480c435fd55e084.jpg)
5.2 NoSQL与关系数据库的比较
-
不同角度的比较
-
数据库原理
- 关系数据库:具有完备的关系代数理论作为基础√
- NoSQL数据库:NoSQL数据库缺乏理论基础
-
数据规模
- 关系数据库:很难实现横向扩展,纵向扩展非常有限
- NoSQL数据库:具有非常好的水平可扩展性√
-
数据库模式
- 关系数据库:要定义严格的数据库模式,且要严格遵守事先定义的数据库模式
- NoSQL数据库:数据模型非常灵活√
-
查询效率
- 关系数据库:适当数量级查询效率高,数量级增大查询效率下降√
- NoSQL数据库:未构建面向复杂查询的索引查询性能差
-
事务一致性
- 关系数据库:遵循ACID事务模型可以保证事务强一致性√
- NoSQL数据库:只能保证事务的最终执行,而不能保证事务强一致性
-
数据完整性
- 关系数据库:具有保证完整性的完备机制
- NoSQL数据库:不能实现完整性约束
-
可扩展性
- 关系数据库:扩展性一般较差
- NoSQL数据库:水平扩展性非常好
-
可用性
- 关系数据库:随着规模增大,为了保证严格的一致性,可用性方面就被削弱了
- NoSQL数据库:具有非常好的可用性,能够在短时间内迅速返回所需的结果
-
标准化
- 关系数据库:遵循SQL标准,标准化较为完善
- NoSQL数据库:未形成通用的行业标准
-
技术支持
- 关系数据库:很多都是商业数据库,可获得强大的技术和后续服务支持
- NoSQL数据库:很多都是属于开源产品,处于整个发展的初期阶段
-
可维护
- 关系数据库:需要管理员维护
- NoSQL数据库:没有成熟的基础和实践操作规范,维护较为复杂
-
应用不是非此即彼,通常采用混合型架构
![大数据技术原理与应用笔记_第95张图片](http://img.e-com-net.com/image/info8/a7adfd7b6ffb47d98daf4ea6433657e6.jpg)
-
NoSQL数据库
![大数据技术原理与应用笔记_第96张图片](http://img.e-com-net.com/image/info8/a94446074d864860b52b326236d19b29.jpg)
-
关系数据库
- 优点
- 具有非常完备的关系代数理论作为基础
- 有严格的标准
- 支持事务一致性
- 可以借助索引机制实现高效的查询
- 缺
![大数据技术原理与应用笔记_第97张图片](http://img.e-com-net.com/image/info8/bb528f5e9a6b44b28d8ee8c5e78aa684.jpg)
5.3 四大类型NoSQL数据库
5.3.1键值数据库和列族数据库
5.3.1键值数据库和列族数据库
5.4 NoSQL数据库的理论基石
5.5 从NoSQL到NewSQL数据库
5.6 文档数据库MongoDB
本周课程没完成,继续见