《大数据日知录》(一)——数据分片与路由

主要内容:

  • 概述
  • 抽象模型
  • 哈希分片
  • 范围分片

概述

目前大数据规模已达到PB级别之上,单台服务器已经无法满足该规模数据量的需求,需要采取大规模集群存储和处理这些数据。因此对于待处理的数据,需要通过数据分片切分数据并将其分配到各个机器中去,数据分片操作后,需要通过数据路由来查找某条记录存储在哪条机器中。接下来主要从数据分片与路由的抽象模型、数据分片与路由分类来详述。

抽象模型

数据分片与路由的抽象模型,可以看成一个二级映射关系。第一级key-partition映射是将数据记录映射到数据分片,一个数据分片可以包含多条数据记录;第二级partition-machine映射是将数据分片映射到物理机器中,一个物理机器可以包含多个数据分片。

《大数据日知录》(一)——数据分片与路由_第1张图片
数据分片与路由的抽象模型

数据分片时,根据 key-partition映射关系将数据水平分割成数据分片,再根据 partition-machine映射关系将分片存入对应的物理机器中;
数据路由时,根据 key-partition映射关系查找到对应的数据分片,然后根据 partition-machine得出具体存储该数据的物理机器,之后从该物理机器读取值。

哈希分片

数据分片的常见手段是采取哈希函数,常见的哈希分片方式分别是:哈希取模法虚拟桶一致性哈希

Round Robin

其实就是哈希取模法,假设有K台机器,对其编号从0到K-1。对于key关键字的记录,根据H(key)哈希函数求出存储该数据的机器编号,从而实现数据分片数据路由也使用相同的哈希函数。

  H(key)=hash(key) mod K

Round Robin的优点是实现非常简单缺点缺乏灵活性,因为每台物理机器对应一个数据分片,抽象模型中两个映射关系都采取了同一个哈希函数,造成了集群中机器个数和哈希函数的紧耦合,因此只要机器个数发生变化,哈希函数发生变化,需要重新进行数据分片。

虚拟桶

所有记录通过哈希函数映射到虚拟桶,一个虚拟桶可以包含多条记录,这是第一层映射关系,虚拟桶其实就是数据分片;第二层映射通过查表实现,一个物理机器可容纳多个虚拟桶。

《大数据日知录》(一)——数据分片与路由_第2张图片
虚拟桶的运行机制

引入虚拟桶的 优点在于增强了系统的 扩展灵活性,一级和二级映射解耦合。当新加入机器时,只需修改数据分片-机器映射表中受影响的条目就可以实现扩展。

一致性哈希

一致性哈希是在分布式环境下,每台机器负责存储部分数据,通过哈希方式对数据进行操作的方法。一般

范围分片

所有记录根据主键进行排序,再从排序好的记录中划分数据分片,每个分片存储的是一段记录。一般会保存一个数据分片的映射表,表记录数据分片中记录的最小主键值以及对应的机器地址。

《大数据日知录》(一)——数据分片与路由_第3张图片
范围分片

参考文章
《大数据日知录:架构与算法》

你可能感兴趣的:(《大数据日知录》(一)——数据分片与路由)