[姚文辉课程笔记]大规模分布式存储系统的混合存储

【混合存储】 混合存储原因是要根据不同存储介质合理使用,提高存储系统性能的同时又不会太大的增大成本。 例如, (1)HDFS中可以将一个副本放在SSD中,其他副本放在磁盘上。 (2)阿里的盘古文件系统中,后台程序定期将SSD上记录的多次随机写合并成一次批量写,将数据写入到HDD的chunk replica文件中,这样能在一定程度上降低写的延迟。 (3)RAMCloud内存存储方案同盘古的混合存储方案比较接近,最明显的不同点是将SSD换成了内存存储。 当数据写入是,所以数据均写入到内存,为了高效利用内存,采用了连续记录日志的方式将数据存放在内存中。同时将数据按照数据所属应用进行划分,分别建立索引,方便对数据进行随机访问。由于内存存储的易失性,所以需要将内存中的数据以异步方式保存到磁盘中。 这种实现策略非常适用于分布式的cache服务,可以充分利用内存的高带宽和低延迟,但是在分布式环境中需要同时配备高速网络,否则其威力得不到发挥。 从上面的例子可以看到,混合存储技术基本是利用高性能小容量高成本的介质来作为低性能大容量低成本的cache来满足业务需求。 0

Read More

姚文辉课程笔记]大规模分布式存储系统的高可用和可扩展方案

【元数据管理的高可用性和可扩展性】 (1)高可用:单个节点出现问题,服务仍旧可以用。 (2)可扩展:分布式做法线性提高扩展能力。 通常的做法是可以将这些节点做成多个备份,保证在一个备份出现问题的时候,仍然可以提供服务。但是多个备份间需要维护数据一致性,防止服务切换造成的数据不一致或者丢失。 【高可用性方案】 方案一: HDFS中元数据的高可用性方案是引入了分布式锁服务ZooKeeper,每个NameNode的FailoverController来维护分布式锁状态,在出现锁丢失的情况下,触发主备切换。主NameNode将操作日志写入到共享数据存储的设备上,这样的设备可以是有DRBD功能的磁盘或者NFS系统。 这个实现方案相对简单,因为较复杂的功能都放到了锁服务和共享存储系统中。这样的做法也是非常经济实惠的,复杂性均由分布式系统的单个模块来维护,其他服务进行依赖,这种做法降低了软件的实现难度和维护工作量。 方案二: 阿里的盘古分布式文件系统Meta server之间采用了Paxos的特化Raft实现数据选举和同步,可以存在多个master的备份。 方案三: 在Ceph系统的元数据管理模块MDS从原理上来说使用了共享存储,每个MDS有一个Standby进程作为热备。但是其独特之处在于是利用了OSD同Ceph monitor组成的RADOS最为共享存储,这样的实现方法即保证了元数据管理的高可用,又提供了无限可扩展的能力,同时可以不依赖于其他系统做到了独立自包含。 【可扩展性方案】 方案一: HDFS的可扩展性,Namespace切分的Fedeation。在HDFS Federation中NameNode的扩展性依赖于目录树的静态切分,每个目录子树被称为一个Volume,并将切分后的Volume分配到不同的NameNode上。DataNode则作为数据存储池,被所有的NameNode共享使用。为了让客户端可以找到某棵树中的节点,在client端需要加载ClientSideMountTable,这里记录了目录树同NameNode的对应关系,用户使用文件名访问元数据时,客户端首先用文件名从MountTable中获取NameNode的服务端口后,再发送元数据请求。 Federation的这种做法简单高效,静态划分的方法需要提前对各个NameNode未来元数据量有比较准确的估计,否则很容易造成各个NameNode间元数据的不平衡,给整个存储系统带来瓶颈。 盘古系统采用了同HDFS一样的解决方案,在实现过程中对应每个HDFS中的NameNode会部署一组盘古多master。盘古Federation除了用MountTable让用户透明访问系统外,还提供了新的访问方式。用户可以在文件名前指定Volume名称,这样可以绕过mount

Read More

[姚文辉课程笔记]大规模分布式存储系统的数据正确性、数据可靠性、数据均衡、垃圾回收

【数据正确性 checksum】 在集群中网络、内存、磁盘和软件都有可能导致数据错误,那么在分布式存储系统中如何保证海量数据中没有任何数据错误呢? (1)数据应该给全程保护,否则任何一个环节出现问题导致数据错误未被检查到,都可能会导致数据出错。 (2)被保护的数据至少应该具有数据、数据长度和CRC校验值这样的三元组,而且在任何后续的处理中,都应该先对数据进行处理后,再校验这个3元组的一致性,来保证刚被处理过的数据是正确的。 在数据进入系统前,有checksum保护。否则数据在系统内部传输,则可能出现错误。 【数据可靠性 Replication】 (1)当机器/磁盘出现异常,通过其它副本快速恢复。 (2)充分利用多台机器的复制带宽。 (3)实际系统中,应考虑复制的优先级以及复制的流量控制。 通常会按照数据的剩余拷贝来计算复制的优先级。 剩余拷贝数量越少的数据应该优先被复制。 优先级高的数据流量复制也不能超过复制流量限制。 【数据均衡 Rebalance】 (1)当有新的机器/磁盘上线时,迁移数据保证负载均衡。 (2)充分利用多台机器的复制带宽。 (3)实际中,也需要考虑控制因为负载均衡而导致复制优先级和流量控制。 【垃圾回收

Read More

[姚文辉课程笔记]大规模分布式存储系统的服务质量

【IO QoS】(服务质量) 问题:当多个用户访问存储系统时如何保证优先级和公平性 阿里盘古文件系统中采用的方案: (1)将IO请求按优先级分成多个类别,每个类有相应的权重表示该类请求占用IO带宽的比例 (2)IO请求根据分类放入相应的队列,队列内根据队列限制和任务做调度和丢弃 (3)调度器根据相应权重从队列取出请求进行调度 0

Read More

[姚文辉课程笔记]大规模分布式存储系统的读流程和读流程优化

【读正常流程】 (1)Clinet携带文件名从Master中获取数据位置。 (2)Clinet任意选择一份副本来进行读取(其中,也要考虑读取的位置等)。 对异常的读取: 如果读取第一个位置出错,则开始读取第二个位置……依次尝试直到读取到正确数据。这种方式增加了读取的时间。 【读流程优化】 目的是为了解决依次重试带来的性能下降。 关键:并行读取某几个CS(比如两个)。一旦一份读取完成,就发送结束读取的消息。 缺点:增加了两份IO复用。 慢节点规避 Clinet收到Master返回的文件位置后,对多个位置评价延迟时间,然后选择延迟时间最小和第二小的进行读取。 0

Read More

[姚文辉课程笔记]链式写流程与主从模式写流程

【链式写正常流程】 (1)Client端进程在Master上打开文件写(Client请求时传输文件名,Master返回数据写入位置等)。 (2)Client端以链式方式将数据写入到多个CS中。 Client将数据传递给CS1,CS1将数据传递给CS2,CS2将数据传递给CS3……最后一个节点将写入成功的结果依次向上传递给Client。 【写流程——主从模式】 链式写入方式适合:数据写入量大,但是不注重latency(延迟)的业务。 主从模式适合:数据写入频繁,要求低延迟的业务。 primary:写操作的协调者和接收者 replica:数据的接收者 流程: (1)Client将数据传送给Primary,Primary将数据转发给另外两台Replica,等到所有数据都合并到内存的cache后,Primary返回给Client确认消息。 (2)等待Replica将所有数据都写入到物理磁盘后,Replica将发送磁盘写入成功的消息给Primary。Primary在将数据成功写入磁盘后,也将发送数据写入成功的消息给Client。 分析: (1)Primary流量是两份流量(有两个Replica交互)。如果是数据导入量较大的业务,则不适合。 (2)在写入3个副本的情况下,只需两跳即可达到Client端(1个Primary和2个Replica一共写了3个副本,之后Replica发送一跳到Primary,Primary再发送一跳到Client,一共需要发送两跳)。从而减小了网络延迟。 【链式写入异常】 以链式写入方式为例。使用链式写入方式在写入时,如果链条中间节点写入失败,可以采取放弃写入,直接写入到失败节点后边的节点的方法来提高写入成功率。 【Seal and New】

Read More

[姚文辉课程笔记]大规模分布式存储系统的挑战

【小概率事件】 (1)磁盘机器损坏:磁盘具有损坏率(5000中有每天5-6个),要对数据进行紧急复制 (2)Raid卡故障:Raid卡将数据写入磁盘 (3)网络故障:集群中的部分节点网络失联、网络丢包等 (4)电源故障:机器掉电,影响数据可靠性 (5)数据错误:数据在磁盘上可能会发生错误 (6)系统异常:多个节点时钟不一致、机器死机 (7)热点:计算热点过度抢占存储资源,热点机器需要做存储隔离,否则可能发生错误 (8)软件缺陷:用户经常重启、用户频繁切换文件、软件设计不合理、低效的用户程序 分布式存储系统应具备识别和检验数据有效性的能力,防止数据混乱。 0

Read More

[姚文辉课程笔记]大数据对分布式存储系统需求

【大数据对分布式存储系统需求】 关键网站:www.sortbenchmark.org。可以通过这个网站来查看性能。 【大数据对分布式存储系统需求】 (1)高容量:需要至少100PB (2)高吞吐量:每小时1PB (3)数据的高可靠性:数据不能丢失、错误 (4)数据的高可用:需要达到99.95% (5)高效运维(自动化运维):业务种类多、硬件设备多、软件负责度高 (6)低成本:数据压缩、混合存储 要实现这6个方面,如果要满足上述要求,对大数据的要求比较大。 偶尔会发生硬件错误,导致系统重启或数据错误。 在大数据场景下,要正确处理这种小概率事件,并减少这种小概率事件的发生。使得大规模下的小概率事件成为常态。 0

Read More

大数据的步骤、应用、系统的分类、难点

【大数据的一般步骤】 (1)大数据采集和预处理 (2)大数据存储和管理 (3)大数据的计算和处理 【大数据的应用】 谷歌的广告推荐、Facebook的广告推荐等用到了大数据。通过挖掘大数据中的关键信息可以获取用户特征数据,然后用于营销。 【大数据系统的分类】 (1)分布式文件系统:HDFS、GFS (2)半结构化存储系统:HBase(NoSQL数据库)、 (3)计算机框架和编程模型:Hadoop、Spark、Storm (4)图计算和机器学习系统:MLbase (5)类SQL查询系统:Hive、 【大数据的难点】 多样性、试试行、不确定性、关联性、异质性 0

Read More

数据库管理系统的环境配置

数据库管理系统的配置: 将下载的 mysql-noinstall-5.1.69-win32.zip 解压至需要安装的位置, 如: C:\Program Files; 在安装文件夹下找到 my-small.ini 配置文件, 将其重命名为 my.ini , 打开进行编辑, 在 [client] 与 [mysqld] 下均添加一行: default-character-set

Read More

数据库设计的特点

其主要特点有: (1)数据库建设是硬件、软件和干件(技术与管理的界面)的结合。 (2)从软件设计的技术角度看,数据库设计应该和应用系统设计相结合,也就是说,整个设计过程中要把结构(数据)设计和行为(处理)设计密切结合起来。 0

Read More