说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

XOR的黄色大象:Erasure Code为Hadoop节省数据恢复带宽

HTML文档下载 WORD文档下载 PDF文档下载
如何在尽可能少的成本下,保证数据安全,或在数据丢失后实现快速恢复?这的确是个不小的挑战。在Azure和Facebook中都使用了Erasure Code,这是一种替代Hadoop三副本和传统Reed Solomon Code的高效算法。

来自南加州大学和Facebook的7名作者共同完成了论文《 XORing Elephants: Novel Erasure Code for Big Data》。论文作者开发了Erasure Code家族的新成员——Locally Repairable Codes(即本地副本存储,以下简称LRC,它基于XOR。),明显减少修复数据时的I/O和网络流量。他们将这些编码应用在新的Hadoop组件中,并称之为 HDFS–Xorbas,并在Amazon AWS上和Facebook内部做了测试。

从Reed Solomon code到LRC

大约十年前,业界开始采用 Reed Solomon code对数据分发两份或三份,替代传统的RAID5或RAID6。由于采用了廉价的磁盘替代昂贵的存储阵列,所以这种方法非常经济。Reed Solomon code和XOR都是Erasure Code的分支。其中,XOR只允许丢失一块数据,而Reed Solomon code可以容忍丢失多块数据。

但标准的Reed Solomon code并不能很好的解决超大规模Hadoop负载。因为数据修复的时间和花费(主要为I/O和网络流量)成本较高。同时,在一段时间内,指数级增长的数据超出了互联网公司的基础设施能力。三副本有时候也不能满足更高的可靠性需求。

现在,这些互联网巨头设计的存储系统标准为:即便四个存储对象同时失效(这些对象包括磁盘、服务器、节点,甚至整个数据中心),也不能失去任何数据(目前Reed Solomon code是采用(10,4)策略,即10个数据块生成4个校验文件,可以容忍丢失4块数据。)。从这篇论文来看,Facebook采用Erasure Code方式后,相对于Reed Solomon code只需要60%的I/O和网络流量

论文作者分析了Facebook的Hadoop集群中的3000个节点,涉及45PB数据。这些数据平均每天有22个节点失效,有些时候一天的失效节点超过100个,见图1。


图1:日节点失效图

Hadoop集群的网络经常被被动占用,几个活跃的磁盘就可以占满1Gb带宽,修复失效数据产生的拥堵是不可能忽略不计的。一个理想的存储方案不仅要保证存储效率,还要减少修复数据所需的流量

LRC测试结果的主要指标:

  • 磁盘I/O和网络流量比Reed Solomon code减少一半;
  • LRC比Reed Solomon code多占用14%的存储空间;
  • 修复时间大幅缩短;
  • 更强的可靠性;
  • 对网络流量需求降低将实现适当的数据物理分布,甚至跨数据中心分布

表1:LRC与Reed Solomon code、传统Hadoop三副本策略对比。LRC比Reed Solomon code的无故障运行时间提升两个数量级,修复流量减少一半。

包括 HDFS-3544在内,业界正在不断追求高可靠下对网络带宽的节省方法,这对于互联网巨头和云计算基础架构服务商而言的意义不言而喻。由南加州大学、韦恩州立大学和微软共同参与的《 Simple Regenerating Codes》也在朝这个方向努力。值得注意的是,前文所说的LRC、HDFS-3544和《Simple Regenerating Codes》都是通过增加本地数据,来减少修复数据需要的网络流量

在 ATC2012上,微软Azure工程师Cheng Huang和他的同事分享了《 Erasure Coding in Windows Azure Storage》。Cheng Huang表示,微软在Azure上也使用了LRC技术。 这里可以看到Cheng Huang此次分享视频。另外,Cheng Huang也参与了《Simple Regenerating Codes》。

在国内,Azure在世纪互联北京、上海的两个数据中心部署了服务。在接受CSDN采访时,微软云计算与服务器事业部总经理严治庆 透露:

Windwos Azure上的数据要存放6份,即使是虚机的本地存储也不例外。在中国,没有一家公有云计算的公司愿意去承诺三个9这样的 SLA,但微软会承诺3个9或更高。

关于HDFS–Xorbas、LRC和GFS2

目前,HDFS–Xorbas基于Facebook的HDFS-RAID版Hadoop( GitHub入口、 Apache入口)修改而来,并在 GitHub上托管代码。

HDFS–Xorbas项目由 Maheswaran Sathiamoorthy维护,他是一名南加州大学谢明电子工程部的候选教授。咨询公司TechnoQWAN创始人Robin Harris在 文章中表示:论文中的几名作者已经创立了公司。

论文作者之一的 Dhruba Borthakur是Facebook的Hadoop工程师,他在2009年的一篇 博客中对Erasure Code进行了介绍:

我知道使用Erasure Code的想法来自 DiskReduce,这是一帮来自卡内基梅隆大学的家伙搞出来的。于是我借用了这个想法,并在Apache Hadoop上增加了这一功能 HDFS-503。

Dhruba强调,HDFS Erasure Code只是在HDFS之上的代码,并没有对HDFS内部代码进行修改。这样做的原因是HDFS代码已经十分复杂,不想自找麻烦把它弄的更复杂。

Dhruba还在Hadoop Summit 2012中的一个关于HDFS的 研讨会上谈到了HDFS-RAID在Facebook内部运行的情况。数据工程师 梁堰波在 博客中分享了Dhruba的观点:

存放在HDFS上的数据分为热数据和冷数据两种。热数据一般是存放三备份,因为这些数据经常会被用到,所以多备份除了高效冗余外还能起到负载均衡的作用。对于冷数据,并非一定要在HDFS里面保存3个副本。Dhruba介绍了两种不同的RAID方案,对于不太冷的数据块A/B/C,通过XOR方式产生校验数据块,原来的数据块A/B/C各保留2个副本,校验数据块也有两个副本。这样,副本系数就从3减小到了2.6(理论值)。

对于很冷的数据,方案更加激进,由10个数据块通过Reed Solomon code生成4个校验文件,对于原来的数据块,只保留一个副本,校验数据块有2份副本。这样,副本系数就降到了1.2。

梁堰波在 博客分享了Dhruba介绍的分布式RAID文件系统实现原理,在2009年Dhruba的博客中也对此进行了介绍,可以分别查阅。

当然,Hadoop不过是GFS的开源实现,那么Google是如何解决数据修复带来的高成本呢?在Google GFS2(Colossus)中使用了Reed Solomon code来复制。在Google去年发表的《 Spanner: Google's Globally-Distributed Database》( CSDN摘译稿)中透露:

Reed Solomon code可以将原先的3副本减小到1.5副本,提高写入性能,降低延迟。

但是关于GFS2的信息,Google透露非常有限。Google首席工程师Andrew Fikes在Faculty Summit 2010会议上分享了《 Google的存储架构挑战》,他谈到了Google为什么使用Reed Solomon  code,并列举了以下理由:

  • 成本。特别是跨集群的数据拷贝。
  • 提升平均无故障时间(MTTF)。
  • 更灵活的成本控制和可用性选择。

参考资料:

  • 王锐坚的博客
  • EMC中国研究院 颜开的博客
  • Highscalability
  • StorageMojo

(文/ 包研  审校/仲浩) 

欢迎关注 @CSDN云计算微博,了解更多云信息。

VB怎样在VB中播放Flash动画。 VB制作TopMost窗口 VB制作带有动画和声音的屏幕保护程序 VB制作自己的MP3播放器 用VB实现鼠标的隐藏 0、""(空字串)、Null、Empty、与 Nothing 的区别 -VB资料 VB中获取逻辑磁盘的信息 Command & Conquer 文件格式-VB资料 CrystaIReports for VB5报表编程经验 DirectX揭密-VB资料 HOOKS 说明书-VB资料 kb_event函数的使用 -VB资料 MaskEdit 中 9 的问题 -VB资料 MDB文件的导出(使用DAO)-VB资料 PaintPicture的和法 -VB资料 Shell & Wait 的程序怎么写? -VB资料 SHELL语句用法心得-VB资料 VarPtr、StrPtr和ObjPtr函数的用法-VB资料 VB 在ACADWIN中的使用 VB5.0应用程序的启动与退出设计 VB5如何取得CDROM的盘符? VB5三十六计 VB5中确定CPU类型 Vb6.0编程技巧四则 VB6二进制双通道技术实战经典 VB6内置的内码转换功能 VB编程步步高-代码效率篇(一) VB编程步步高-杂类篇(二) VB编程步步高-杂类篇(一) VB编程的必备技巧 VB编程的一些心得 问一个关于TTreeView控件中树节点所带数据的问题 菜鸟求救:有关DBGrid显示的问题。 当读取1万条记录以上,应怎么做才有高效率? 那想在记事本中实现“查找,”“替换”。。。。要怎么做,我头猛大 有没有按位图画不规则窗口的代码? 怎样得到LISTCTRL的全部列(COLUMN)的信息,难道要用GETCOLUMN()? 为什么现在学win32 API的人这么少? 还是老问题 redhat安装问题,请高手指点 网页中有一文本框,如何约束用户输入格式 现在fanso怎么回事? 安徒生童话之六---老爹做的事总是对的 (呵呵,好故事,很美丽) 如何调用EXE或DLL程序,使被调用程序是调用程序的MDI中的一个子窗口? 《网络设计师教程》P103表5.2中 4B/5B码和4位2进制之间是怎么转换的? COM进程类组件中,在一个接口中加了一个方法,成员变量类型CString,可是不行,那该用什么? 请问那里有 motif toolkit 开发工具下载 一个mysql的问题! 出售软件源代码以及销售权! byte类型的数据如何转化成二进制数,显示给用户(如8-》0000 1000) 代征:精通vc的深圳朋友,精通网络通讯的开发和多媒体处理。 20分求助!这条警告是什么原因呀?怎么解决 ?LINK : warning LNK4089: all references to "SHELL32.dll" discarded by /OPT:REF 局域网的文件共享传输是基于什么协议的? windows and dos ??? 请问大家几个技术问题!!谁能回答阿!比较着急!:) 有没有代替VB里的PICTUREBOX 的控件,VB里的不好用?????????? 我是新手,请问JSP有些什么开发软件?比如JAVA用JBUILDER。。。 请问知道整型值a=97,什么函数可以得到"a"呢?即97->"a"通过什么函数呢? 如何将十进制数转换成二进制数 函数对象的简单问题 喜欢仙剑的朋友请进。:) 恭喜恭喜? 我想制作C++ Builder4工程的安装程序,不知道用什么软件,请大家帮忙。谢谢! 请问大家几个技术问题!!谁能回答阿! 我是ASP初学者,请求一个简单的问题,Help!!! 有没有关于installshield6的书, 快看呀!我真的要不行了! 请教大家一个术语吧! 低手问题,关于Form中的数据问题,谢了。 如何用PictureBox控件显示GIF图?特急!!!!!! 单文档多视(急!) 想学delphi中关于database方面的内容,不晓得哪本书好,大家推荐好吧? “CSDN准备推出海外图书邮购服务,首批是侯捷的著作和译作” 什么时候可以开始? 谁能介绍一下嵌入开发领域比较成熟的产品?他们的功能、性能如何 关于Autocad字体的问题 在 ActiveForm 中如何初始本地数据模块!菜鸟问题! (const char *)&p转化为delphi语言该是什么? ####我拼了命也要问出这个问题的答案########## 怎样才可以描述点击窗口右上角的“x”时所发生的事件,请给个例子,谢谢了! 哪儿有Install anywhere 4下载 庆祝kylix2001,终于知道叫什么好了,耶………… VB,请问set obj=new class 和 dim obj as new class的区别????????? “选择xx”为话题写作文补充题目、要独特点的、 别百度一搜、全是这篇- -那我就不提问了 求一个《往事》作文的开头结尾,急啊! 500字《历史的选择》读后感作文 以“选择”为话题写作文.怎么写? 中国有那些重大的历史事迹?我写作文需要!收集材料!麻烦您了古代史与现代史 古代史与现代史 古代史与现代史 古代史与现代史 关于历史的选择的作文800字 紧急!以选择为话题写作文~600字~3章600字的~ 历史上因有一技之长而扬名的人,我要写作文 帮忙举几个例子, 紧扣历史的选择400~500字作文 作文素材以选择为题写作文 和法律有关的历史事件 简洁点 我写作文 历史的选择作文 以选择什么为题写作文 600字选择放弃 坚持 诚实 …… 写作文 600字 记叙文哦 咋样才能快速提高写作文的水平? 历史的选择作文怎默写1500字 紧急!以选择为题写作文~~500字~~初中作文 如何提高写作文的速度?我每次写作文都写得很慢,几乎要两个多小时.我写作文时常常是写了这一段不知道下一段写什么,要思考好久.请问有什么办法能使我写作文的速度变快又不影响文章的 历史的选择作文怎么写?312321 以“怎样的______”为题写作文1与诗句有关2不少于4003不可灌水 如何提高小孩子的做事情速度? 我想知道“历史的选择”作文怎么写? 以“体验”为题写作文体验是它的中心,最好在500多字左右 怎样提高写字速度. 历史的选择整整800字的征文作文如何写? 人生关爱为话题写作文以“人生关爱”为话题写一篇文章.文体不限,不少与600字 怎么提高写字速度?最好是字写得好速度又快的哪种. 大师风范什么意思百度知道 以选择为话题的作文 要通过一个具体的事例,写出你对生活的感悟,特别要注意表达内心的真实感受. 如何有效地提高写字速度?这里的写字是指硬笔(钢笔、铅笔等).平时因为写字速度慢导致语文的抄写作业几乎成了我的恶梦,政治默写时更因为写字速度慢而无法完成(我会写,而且背得很熟 阅读大师风范中:仅此一点,足以称之为大师,句中的此指的是什么? 以"积极人生"为话题写作文600字左右..作参考用~ 写作文 申论 我特别慢写作文 申论 我特别慢 你们一分钟,能写多少字啊 我特别慢啊 蜗牛一样 概括《大师风范》,快. 以"城市,让生活更美好"为话题写作文 怎么才能提高写字的速度.写字精力不集中. 求英语阅读答案,和文章的主要内容,具体私下沟通,高手来, 求有关“对话”的历史素材 写作文用 怎样提高自己写作文的水平? 18米增加六分之一米后是() 18米增加它的6/1是() 甲数是108,甲数的3/1与亿数的4/1相等 乙数是() 一根20米长的铁丝,先用去它的20/3,再用去20/3米 还剩下() 应用题 有一份稿件,小明第一天 关于中国传统建筑的资料,我要写作文,不要太专业,稍稍简单一点,先注明是哪一个建筑,再简略写一下一眼看过去的样子,然后说外型特点和内部构造. 怎样提高写作文的水平 西游记中前十回关于描写师徒四人性格特点的主要内容. 急求关于反省的历史素材,用于写作文的,谢谢 如何提高自己写作文的语言水平我现在上高二,每次作文语言都不够好,论据哪方面也了了,应该如何提高?看什么书比较好? -):-):-)求大师一一帮一帮 NBA中的作文素材我总感觉作文中可以运用大量NBA球星的感人事迹作为论据,请大家告诉我一些.我谢谢大家了. 怎么让我写作文的水平提高? 民族风范的作文 触动心灵的往事的开头与结尾 如何提高写作文的水平 大师风范中小提琴家为什么说”琴声是最好的教育“? 有关历史的选择的作文 写作文中好的开头和结尾要求是散文或者议论文 如何速度写作文速度作文要认真先看好作文的题目,在认真的思考,想清楚在速度写! 以选择为话题写作文最好是满分的, 题材历史的作文有什么好的开头结尾? 作文 《历史的选择 》 500字左右,要快讲的是抗日英雄的 急 谢了 怎样以选择为话题写作文 怎样写作文的开头和结尾 作文 500字
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn