当前课程知识点:大数据系统基础 > 6. NoSQL > 授课视频 > 一致性哈希与数据分区
在Cassandra节点间
相互连通之后
如何将大规模的数据集合
进行切分
并存放到各个节点上
下面我们就学习一致性哈希
和数据分区
Cassandra采用一种
一致性哈希的方法
对数据集进行切分
其基本思想是
用同样的哈希函数
来计算数据对象
和节点的哈希值
用节点的哈希值
作为数据集的切分点
这样
如果数据集群中
有多少个计算节点
数据集就被切分成多少份
在一致性哈希方法中
节点不再是影响数据对象
哈希值的参数
而是作为哈希函数的输入
下面我们看一个例子
在这里我们用MD5哈希操作
产生一个128位的数字码
我们会看到
这里的数据集是银行的存款账户
我们一共有7条记录
这7条记录通过MD5后
产生7个128位的数值
在这里集群中有两个节点
分别是A和B
它们也同样产生了128位的码
在这里就是用这两个码
来对这7个数据集进行切分
一致性哈希方法
首先将集群管理的全部数据
按照其哈希值的大小组成一个环
这里头的哈希值
就是我们刚才用MD5方法
产生的数据码
这时假设数据集中只有一个节点
此后
随着集群中节点的增加
这个理想的数据环
被切分成多个数据区间
我们称之为Range
注意数据区间的数量
等于集群中节点的数量
每一个节点负责存储环中
它本身和它前面节点之间的
这个数据区间
图中四种颜色的区间
被放在对应颜色的
A B C D四个节点上
节点负责的区域确定后
每个节点都保存一个区间表
如右上图所示
对于一个新插入的数据行
到底该放在哪个节点上
Cassandra采用顺时针绕环规则
比如
数据A305在顺时针方向
A到B这个区间上
即落到了红色区间上
它们就存在B节点上
数据A226
落到紫色区间
它就存储在D节点上
一致性哈希方法的优点
主要有两条
一在确定了哈希函数
和节点区间表之后
客户端自己就可以知道
一个数据象
该存放在哪个物理节点上
因此不需要全局的源数据服务器
二当节点数量改变时
不需要将所有数据对象
在新的集群中进行重新分配
具体来讲
如果删除一个节点
邻近的机器
就会接管删除节点的数据
如果新增一个节点
邻近的机器
就会分摊掉一部分数据
给新的节点
这里我们考察三处节点的例子
当前面的节点B离开后
数据对象A305
就从节点B移到了节点C
而节点A和节点D
所管理的数据不变
假如B节点离开了系统后
E节点加入到了系统
注意 E的位置与B的位置不同
这时
C负责存储数据的红色部分
就分摊给了E节点
-授课视频
--什么是大数据
--大数据典型应用
--大数据的特点
--大数据技术体系
--大数据生态系统
--大数据技术挑战
--课程内容
-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