HDFS RAID实现方案(转)
原文链接:http://blog.chinaunix.net/uid-20196318-id-3213700.html
分布式文件系统主要用于解决海量数据存储的问题,如Goolge、Facebook等大型互联网企业都使用分布式文件系统作为数据存储的基础 设施,并在其上构建很多服务,分布式文件系统通常采用三副本的策略来保证数据的可靠性,但随着应用数据量的不断膨胀,三副本策略为可靠性牺牲的存储空间也 越来越大,如何在不降低数据可靠性的基础上,进一步降低存储空间成本? Facebook将erasure code应用到内部HDFS集群中,该方案使用erasure code代替传统的三副本策略,在保持集群可用性不变的情况下,节省了数PB的存储空间,Facebook的实现方案(HDFS RAID)目前已贡献给开源社区。
Erasure code
如下图所示,HDFS要想容忍2个block的丢失,则需要为每个block创建3个副本,存储空间成本为数据量大小的3倍。而采用RS编码,只需要1.4倍(10个数据块、4个校验块)的存储开销,能容忍4个block的丢失。(RS的原理请自行google)

HDFS中的文件通常很大,文件有多个固定大小(64M)的block组成,block一旦写满就不会再更改,HDFS RAID以文件为单位计算校验,并将计算出来的校验block存储为一个HDFS文件。HDFS-RAID目前支持Raid5和RS(Raid6可用RS实现)两种编码方式,下图为副本、Raid5、RS三种方案编码的对比,其中副本方式存储空间成本最高、但能获得较高的读写效率(多副本并行服务);RS方案存储成本最低,但数据存储、恢复时计算开销较大。

DRFS总体架构(Distributed Raid File System)

- DRFS: 应用了RAID方案后的HDFS。
- RaidNode:对 需要存储在DRFS中的文件,从HDFS DataNode中读取文件(source file)对应的数据块,并计算出校验块文件(parity file,所有的校验块组成一个HDFS文件),并将parity file存储在HDFS中);RaidNode周期性的检查所有文件对应的block数据是否丢失,如果丢失,则需重新计算以恢复丢失的block。
- DRFS client:提供访问DRFS中文件的接口,其在HDFS client接口上进行封装,当读取到已丢失的block时,透明的计算恢复的block数据并返回给应用。
- RaidShell:DRFS管理工具,可人工触发文件block检查、丢失block的恢复等。
RaidNode
为 了不影响现有的服务逻辑,DRFS采用渐进式的部署方案,可逐步的将编码应用到HDFS中的文件,用户可配置需要编码的文件的模式(如指定后缀名为 mkv、指定某个目录下的所有文件等),RaidNode根据用户的配置,从NameNode获取符合要求的文件(满足用户配置的模式,且超过指定时间没 有更新)分布信息,并从DataNode上读取文件数据块,计算出校验文件,并存储到HDFS中(用户可配置校验文件的存储位置)。
DRFS以文件为单位计算校验,将文件划分成多个Stripe,每个Stripe包含一或多个block(stripe length可配置),stripe length越小,计算出的校验数据量越小,数据恢复时的成本越高;反之,,stripe length越大,存储空间成本越高,但当block丢失,恢复时的计算和传输成 本越低 。如下图所示,6个block组成的文件,当stripe length为1和2时,校验块的情况;两者都可以容忍两个block丢失,但前者的存储开销为1.33倍,而后者的存储1.67倍;但当block丢失 时,前者需要读取6个block来恢复,而后者只需要读取3个block。
当校验数据块计算完成,且校验文件存储到HDFS后,HDFS将降低文件的副本数,以节省存储空间。另外,对于一些小的文件(block数较少),RaidNode并不会为其计算校验块,而是什么也不做,因为当文件较小时,副本方案与RS方案的存储成本开销相差不大,并不能起到节省存储空间的作用,反而降低了文件并行服务的能力,增加了block丢失时的恢复开销。

RaidNode还负责丢失块的恢复工作,它定期的检查已经应用erasue code的文件状态,确定其是否有block已经丢失(source file、parity file都需要检查),如果有block已经丢失,则其先从各个DS上获取恢复该block需要的数据,并重新计算该block。
HDFS RAID主要问题在于,parity file的数据块可能分布到跟source file数据块相同的DataNode上,这样实际上降低了系统的整体可靠性;为解决该问题,HDFS RAID提出了新的数据放置方案,已将source和parity的block数据分散到不同的DataNode,但要应用新的放置方案,需要重启NameNode的服务。
DRFS Client
用 户需要读取已经应用erasue code的方案的文件时,需要使用DRFS Client,其对HDFS Client进行了封装,并透明处理block丢失的情况;当出现Block丢失或检验错误时,DRFS Client透明的计算出丢失block的数据,并返回给用户;当用户请求完成后,DRFS Client会丢弃block的数据,该block的恢复会由RaidNode完成,或由管理员通过RaidShell手动触发恢复。
参考资料:
HDFS RAID实现方案(转)的更多相关文章
- MySQL数据库Raid存储方案
作为一名DBA,选择自己的数据存储在什么上面,应该是最基本的事情了.但是很多DBA却容易忽略了这一点,我就是其中一个.之前对raid了解的并不多,本文就记录下学习的raid相关知识. 一.RAID的基 ...
- HDFS ErasureCode方案对比
HDFS目前存储文件的方案是将一个文件切分成多个Block进行存储,通常一个Block 64MB或者128MB,每个Block有多个副本(replica),每个副本作为一个整体存储在一个DataNod ...
- hadoop2.x通过Zookeeper来实现namenode的HA方案以及ResourceManager单点故障的解决方案
我们知道hadoop1.x之前的namenode存在两个主要的问题:1.namenode内存瓶颈的问题,2.namenode的单点故障的问题.针对这两个问题,hadoop2.x都对它进行改进和解决.其 ...
- 简单描述RAID级别:
简单描述RAID级别: RAID 0 是俩盘一起读写,如果一个坏了那么数据全丢失: RAID 1是一块写,一块用来备份,坏一块无所谓: RAID 2 ,3 ,4 不常用: 最常用的就是RAID 5和R ...
- Hadoop HA方案调研
原文成文于去年(2012.7.30),已然过去了一年,很多信息也许已经过时,不保证正确,与Hadoop学习笔记系列一样仅为留做提醒. ----- 针对现有的所有Hadoop HA方案进行调研,以时间为 ...
- RAID和LVM磁盘阵列
RAID磁盘冗余阵列 CPU的处理性能保持着高速增长,Intel公司在2017年最新发布的i9-7980XE处理器芯片更是达到了18核心36线程.但与此同时,硬盘设备的性能提升却不是很大,因此逐渐成为 ...
- RAID与LVM磁盘阵列技术
RAID(Redundant Array of Independent Disks,独立冗余磁盘阵列) RAID概念: RAID技术通过把多个硬盘设备组合成一个容量更大.安全性更好的磁盘阵列,并把数据 ...
- Raid分类说明 (from mongodb权威指南)
RAID(Redundant Array of Independent Disk,独立磁盘冗余阵列,旧称Redundant Array of InexpensiveDisk,廉价磁盘冗余阵列) 是一种 ...
- Linux RAID 磁盘管理
Linux RAID 磁盘管理 RAID工作模式介绍:https://www.cnblogs.com/xiangsikai/p/8441440.html 本章主要讲解 Linux下 RAID5 与 R ...
随机推荐
- 在Linux上编译使用tcmalloc
项目需要使用tcmalloc,比较简单的方法是安装tcmalloc相关包(gpertools)后,将tcmalloc的静态库提取出来,在编译项目内核(执行makefile)时,链接上静态库即可. 这里 ...
- Guardian of Decency UVALive - 3415(最大独立集板题)
老师在选择一些学生做活动时,为避免学生发生暧昧关系,就提出了四个要求.在他眼中,只要任意两个人符合这四个要求之一,就不可能发生暧昧.现在给出n个学生关于这四个要求的信息,求老师可以挑选出的最大学生数量 ...
- 笔记-自己看Day20-待续
1. 搭建环境 1)注释掉csrf 2)配置模板路径 'DIRS': [os.path.join(BASE_DIR,'templates')], # BASE_DIR,代指当前目录. 3)配置静态文 ...
- oracle 如何查看pga
进去命令行 输入 sqlplus username/password@dbname 回车 进入数据库输入 show parameter pga 回车
- VSS2005设置不输入密码直接登录VSS
1.登录管理员 2.Tools-->Options-->General -->Use network name for automatic user log in 去掉勾选不自动登 ...
- Java SSM 整合
从2012年的“用户标签”到2014年的“用户画像”,从2015年的“大数据”到2017年的“人工智能”,大数据正在从神坛走向现实.“标签”到“画像”,代表着数据在数量和维度上,逐渐在丰富:“大数据” ...
- 【BZOJ2329】括号修复(Splay)
[BZOJ2329]括号修复(Splay) 题面 BZOJ 洛谷 题解 本来想着用线段树来写 但是有一个区间翻转 所以不能用线段树了,就只能用平衡树 然后直接\(Splay\)就好了 注意一下几个标记 ...
- [USACO4.1]麦香牛块Beef McNuggets 题解报告
题目描述 农夫布朗的奶牛们正在进行斗争,因为它们听说麦当劳正在考虑引进一种新产品:麦香牛块.奶牛们正在想尽一切办法让这种可怕的设想泡汤.奶牛们进行斗争的策略之一是"劣质的包装".& ...
- bzoj3173: [Tjoi2013]最长上升子序列(fhqtreap)
这题用fhqtreap可以在线. fhqtreap上维护以i结尾的最长上升子序列,数字按从小到大加入, 因为前面的数与新加入的数无关, 后面的数比新加入的数小, 所以新加入的数对原序列其他数的值没有影 ...
- 解题:SCOI 2008 天平
题面 我们很容易想到差分约束,但是我们建出来图之后好像并不好下手,因为我们只能得到砝码间的大小关系,并不能容易地得到每个砝码的具体重量. 于是我们有了一种神奇的思路:既然得不到具体重量我们就不求具体重 ...