大数据日知录笔记1--大数据存储

一.大数据的存储方式
在单机不可能存储的情况下只能使用分布式集群进行存储。由此涉及到两个最基本的概念:
1.写入数据的时候,需要为数据分配到集群中的某一台机器中,这个过程叫数据分片(shard/partition)。
2.读取数据的时候,需要找到集群中存放这条数据的机器,这个过程叫做数据路由(routing)。
一般的数据分片/路由模型会可以使用两层以上的映射关系,即一个数据分片中可以有多条数据,同时在一个物理机中包含多个数据分片。

二.数据分片的方式
1.哈希分片
通过hash函数对数据进行分片,一般的方式有三种:哈希取模法,虚拟桶,一致性哈希。
(1)哈希取模法
在有N台机器的时候利用公式H(key) = hash(k)modN 来确定数据存储在哪台机器上,在进行数据路由的时候也用同样的方法来尽情确认。
优点:简单方便,容易实现。
缺点:灵活性不够,当多增加机器后整个映射关系全部不可用。
缺点的原因:物理机和数据分片功能耦合在一起。
(2)虚拟桶
引入数据分片层的概念,其中数据到数据分片的映射用哈希函数,数据分片到物理机一般采用表格方式,从而对数据和物理机进行解耦,增删机器后只用对 对应的数据分片中的数据进行迁移。
(3)一致性哈希
一致性是哈希是分布式哈希(DHT)的一种实现,将哈希数值空间按照大小组成首尾相连的环,然后将每台机器映射到哈希数值空间内,然后每台机器负责存储落在一段有序空间内的数据。
书本原图如下,在哈希值空间为0—31上映射5台机器后:
这里写图片描述
其中N14表示这台机器负责哈希值在14–6之间的数据,以利类推N5负责30~31,0~5的数据。
路由时可以从一个节点开始然后沿着有向环的方向挨个去找,但这样当节点过多的时候效率会直线下降,一般每个节点可以存几个离自己有一定距离的其他节点(路由表),然后根据这张表来找,其核心方法类似于skipList。
在增加机器的时候需要迁移部分重叠数据,删除机器的时候需要对老数据做迁移。
注意稳定性检测算法,一般会在稳定性检测算法中做到数据平衡以及整个集群前后趋的正确性。
稳定性检测算法一共有四步:
第一步:当前节点c访问自己记录的后继结点s,查看其的前趋节点p.
第二步:如果p在c和s之间则c记录p为它的后继结点。
第三步:如果p的前趋节点为null或者c位于p和他的前趋节点之间,则将p的前趋改为c
第四步:对 c,p上的 数据进行迁移
新加入节点的时候一般需要设置好自己的后继结点,前趋节点通过稳定性算法调整。
虚拟节点在节点和物理机之间做一次映射用来解决机器负载的问题。
优点:灵活,自维护能力强
缺点:复杂,哈希值空间不可轻易改变
2.范围分片(range partition)
事先知道数据的范围大小,然后按照范围空间预设好分片进行分布。

三.存储中的高可用。
为了解决存储中的高可用性一般都会将同一数据存储多份,业内常规是三份,这样不但可以确保当某一台机器出现问题(比如坏盘等)后数据的丢失问题,在可以提高数据读取是的效率,进行一定的负载。缺点在于会引发一致性问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值