当前课程知识点:大数据系统基础 > 6. NoSQL > 授课视频 > 节点本地数据存储
最后我们学习Cassandra中
某一个节点是如何完成
本地数据存取的
前面讲过
Cassandra系统采用了P2P架构
节点完全对等
没有主节点
客户端可以和集群中的
任意节点相连
这个连接点
我们叫做协调者
其它节点叫非协调者
协调者节点会根据一致性级别
把请求发给相应的数据节点
最终执行用户请求的节点
我们称之为本地节点
Cassandra使用了LSM-Tree结构
来存储数据
L就代表写操作的日志
S即Sstable
代表数据持久化的文件
M代表Memtable
也就是内存中的数据表
Cassandra中的Memtable
它的数据是排序的
不仅是按行排序
而且它的列
也是按照列名进行排序
Cassandra定期会将Memtable
刷到硬盘Sstable当中
Sstable的数据
一经写入不再修改
Sstable生成后
Memtable即被销毁
相关的CommitLog清空
除此之外
Cassandra磁盘上
还有其它的辅助结构
如rowkey的索引和布隆过滤器等
当然Cassandra在内存中
也有辅助结构
如
行的缓存或键的缓存
当然对某一个键的值
可能存在若干个Sstable中
现在我们看
Cassandra数据的写过程
这里重点考察对
Memtable和CommitLog的操作
首先当本地节点接收协请求后
首先将数据的键值
写入Memtable当中
同时也把相应的键值
写入CommitLog
这时本地节点写完成并返回
而Memtable的持久化
则推迟到后面去做
这里我们可以看到
整个数据的写过程
没有涉及任何的读操作
它的阻塞主要来自于CPU
而非磁盘的I/O
这样就提高了
Cassandra数据写的速度
下面来考察Cassandra数据的
读操作
当读请求来到本地节点后
首先从Memtable当中获取数据
如果数据存
在则返回
否则从行缓存中去读取数据
如果存在
即返回给客户端
再者检查布隆过滤器
判断那些Sstable中
会存在相应的数据
如果不存在
则返回客户端为空
透过布隆过滤器
第四步就完成在Key缓存中
来定位所查询的键值
是在哪个Sstable当中
最后
我们从Sstable当中获取数据
返回给客户端
同时把数据写入行缓存当中
在这里我们看到
由于Memtable当中的
列是按句存储的
所以列的检索特别快
同时由于行是排序存在的
因此对行切片的检索也比较快
最后要感谢黄向东博士
和宋韶旭老师
对这节课的帮助和支持
-授课视频
--什么是大数据
--大数据典型应用
--大数据的特点
--大数据技术体系
--大数据生态系统
--大数据技术挑战
--课程内容
-1. 绪论--Quiz 1
-授课视频
--2.2并行化理念
--2.9计算虚拟化
-2.云计算--Quiz 2
-授课视频
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-3.文件存储--Quiz3
-授课视频
--4.13类似框架
--4.14章节总结
-4. 处理框架--Quiz4
-授课视频
-5.内存计算--Quiz5
-授课视频
--数据副本及一致性
--节点本地数据存储
-6. NoSQL--Quiz6
-授课视屏
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
--Video
-7. 流计算--Quiz7