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

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云计算微博,了解更多云信息。

[CTO俱乐部第100期]软件平台的新思维及2345技术团队管理经验分享 失败怪圈:今天的移动App在重蹈1999年的覆辙 极客编程必备的五大PHP开发应用 Oracle或将宣布与Salesforce.com,NetSuite以及微软结盟 【专访间】神州数码谢耘:智慧城市需要以“融合平台”为特征的沃尔玛模式 对话OW2 CEO:开源≠安全隐患,免费≠无利可图 不断抄袭的Facebook正逐步沦为一家普通的公司 Windows 8.1会不会把Windows 8的“Modern”开发者踢到路边 任志鹏:FusionCloud是华为二十年技术积累的精华 机器学习典范?iOS7中的Siri能主动学习如何发音 三星宣布关闭PC业务 主推便携设备和一体机 Web设计师必须掌握的六大设计策略 Facebook为什么要推Instagram视频分享功能? 天气预报(id后面的9位数字为城市代码)年月日,星期,当前时间(仅用于javascript) PHP 5.5.0发布 不再支持Windows XP和2003 专访ThinkPHP创始人刘晨:用最简单最快速的方式开发PHP应用 重构:仔细查看,改进代码 加速编码的17款最棒的CSS工具 生于微信:专访疯狂猜图CEO曹晓刚 谷歌:受感染的合法网站远比恶意网站危险性大 Mozilla正式发布Firefox 22应用程序开发者受益 支持3D游戏、视频通话和文件分享 直接拿来用!最火的前端开发项目(一) Salesforce.com和Oracle在云合作上达成长期协议 即将到来的数据中心僵尸末日,谁能成为最后的幸存者?! Andorid APK反逆向解决方案:梆梆加固原理探寻 科技拥抱设计:体验设计如何创新? Rails 4.0正式发布 命途多舛的webOS,两度易主,生生死死多少回 Citrix全面开源XenServer 为了三十亿人的网络幸福:Google投资O3b发射网络卫星 Windows 8.1中IE 11开始支持WebGL和SPDY/3 数据统计问题,请大侠门帮忙!急急急!!! 求解ZModem通讯协议源程序----有谁用过CZModemCore 我也不知道对不对! 最高级的问题?搞一个专业的VC程序员基地~~~~~~ 在研究directshow filter的push模式的兄弟请进 800分+工资管理原代码,如何解决ActiveReports打印图片的一个很难题;否则我快下岗了 有两个问题,每题40分,马上给分!!!! 如何使用打印机? 在爱情方面谁能做到这一点? 谁有 file cutter v1.4的注册码? 有急用! 搞一个专业的VC程序员基地~~~~~~谁愿意加入????? 最新发现:原来C++Bilder的项目文件(.bpr)是XML格式的! 关于FAT32和NTSF的问题 如何用VC实现Email的发送? 800分+工资管理原代码,如何解决ActiveReports打印图片的一个很难题;否则我快下岗了! 搞一个专业的VC程序员基地~~~~~~需要网页制作高手!! ADO 的用法 m_pRecordset->Fields->GetItem(index)->GetName() 关于CRichEditCtrl的问题之二,取的当前可见行数? 请问在哪里下载IMAIL SERVER???各位帮帮忙!!! 高手请回答,ADO和BDE到底有什么区别,你选择谁?为什么? 高分求教!!!!!!!!!!!!!!!!怎样得到局域网上所有的机器名?(普通WINDOWS网络,用VB?,好象用WNET API可以的) 如何安装com.ibm.bridge2java.*这个包阿? 有人吗???求救! 你也许也会遇到这样的问题? 800分+工资管理原代码,如何解决ActiveReports打印图片的一个很难题!!! 大虾看过来. 一个access表一万条记录,想转到Mysql下(Mysql在Linux下)用什么方法和什么语言来做好? rs.CursorLocation=aduseclient是什么东西? 800分+工资管理原代码,如何解决ActiveReports打印图片的一个很难题! 简单SQL,免费送分! 用ASP如何上传文件,可以用组件。 谁知道怎么改运行中的程序的托盘图标???我用SysTray.ocx不能改? 新手提问,简单题目,大量给分~~~~~~~~~~ 如何使用getdispatch(), 800分+工资管理原代码,如何解决ActiveReports打印图片的一个很难题!! 关于在一个窗口中的多个数据窗口的问题 扔块砖头, 开个场子 。 ( yeti_lee ) 800分+工资管理原代码,如何解决ActiveReports打印图片的一个很难题;否则我快下岗了? To: baicolt(五岁的小新是我师傅) 有没有人用过Jcreator 如何在sql server 的查询分析器中用sql语句转到另一台机器上的数据库,同样了sql server的 是不是MSHFlexGrid的bug? 800分+工资管理原代码,如何解决ActiveReports打印图片的一个很难题;否则我快下岗了?? 这个错误类型是什么意思? 如何能够简单的得到昨天的日期? NetBios-SSN是什么? 怎样得到局屿网上所有的计算机名,我想给班里写个局屿网聊天程序,原想用DX8,但DX8好想建立的连接都是C/S模式的。如果能得到机器名就可以用WINSOCK写了(用VB写) 请问诸位有没有什么自动生成源码注释的工具,可以产生函数说明注释和类说明注释 数据库连接这种是什么错误? TStringList *p 定义为一个两维数组怎么做? 在VC++6.0下编程,有什么办法可以获得所有的窗口的句柄??? 1kg棉花和1kg铁块相比谁的密度大?杀人砂仁提问 假如把一亿元兑换成100万张100元人民币,新版人民币的规格是15.5×(单位:cm),那么100万张有多少平方米过程也要 在比例尺是1:3000000的地图上,量得A,B两城之间的距离是2.4厘米.在A,B两城之间有一个中途停靠站C.A,B两城到C站的距离比是7:5.一辆汽车从B城到C站用了0,6小时,求这辆汽车的速度 1T棉花和1T铁块比较,以下说法正确的是A.棉花体积较大,所含物质较多 B.铁块掂着较重,所含物质较多 C.棉花和铁块质量相等,所含物质一样多 南京长江大桥下层的铁路桥全长6700,若把它画在比例尺是1:1000000的地图上,应画几厘米 在比例尺是1:2500000的地图上,量得两市之间的距离是6厘米.如果画在比例尺是3000000分之1的地图上,应画多少厘米? 在1:5000000的地图上,量得甲,乙两地的图上距离是6厘米,把它画在比例尺是1:3000000的地图上 应画多少 1kg的棉花和1kg的铁块相比,下列说法正确的是A.棉花所含物质较多 B.棉花和铁块所含物质一样多C.铁块所含物质较多 D.不是同一种物质,无法比较 成本 利润 计算公式比如我进价是8000,我买12000,这个是加了百分之多少?比如我进价是8000,我要卖12000,这个是加了百分之多少? 在1:5000000的地图上,量得甲、乙两地的图上距离是6cm,把它画在比例尺是1:3000000的地图上,应画多少厘米? 数学二进制、八进制、十进制、十六进制之间如何转换?这几种数值之是转换是以什么为依据的?怎样转换更方便、简单、快捷?转换关系是什么?(本人急用,请走过、路过的朋友帮帮忙忙吧.本 利润公式有没有成本-售价 小学换算公式0.4千米=( )米1200米=( )千米284克=( )千克532厘米=( )米1480米=( )千米1.5千米=( )米1670米=( )分米1.48千米=( )米 谁能帮我讲解一下数学里的十进制,二进制?我学计算机的,因为要涉及到这方面的问题,我不懂,所以请谁帮我讲解一下,谢``` 商品成本a 税收10% 利润30% 求个公式 把a放进去就得到零售价格 比如烟10块成本.税收10%利润30%我要卖多少?着急~ 一根绳子长8/7米,截5次后,剩1/8米,平均每次截几米. 十进制和二进制的数学问题二进制中1101等于十进制的数是? 元要以万元为单位要怎么换算假如100763548.00元要以万元为单位怎么写呀?我都懵了. 60秒等于多少小时? 在比例尺是1:3000000的地图上,量得两地的距离是10厘米,甲乙两车同时从两地相向而行,3小时后相遇.已知甲乙两车的速度比是2:3,求两车的速度各是多少千米? 压力单位 mmAq 怎么读?怎么换算看到一只微压表上有个 mmAq 却不知怎么读.也不知怎样换算.请知道的大侠告诉我,详细点最好. 60小时等于多少秒. 在比例尺是1比3000000的地图上,量的A、B两地距离是10厘米,甲、乙两车同时从两地相地相向而行,3小时后两车相遇.已知甲、乙两车速度比是2比3,求甲、乙两车的速度. 镀金的单位?怎么读?怎么换算? 12亿秒等于多少小时?或等于多少天? 在比例尺是1比3000000的地图上,量的A,b两地的距离是15厘米.甲、乙两车分别从A,B两地同时出发,相向而行,3小时后相遇.已知甲、乙两车的速度比是2比3,求甲、乙的速度 2分之1千克棉花比2分之1铁轻快 35亿秒等于多少小时 要说清楚 我除了也是97。但是这么多个小时 郁闷 要玩到什么时候 郁闷 那又是多少天呀 在比例尺是1比3000000的地图上,量得两地相距10厘米,甲,乙两车同时从两地相向而行在比例尺是1比3000000的地图上,量得两地相距10厘米,甲、乙两车同时从两地相向而行,3小时候两车相遇,已知甲乙 公式法的公式是啥我忘了 一根绳子的长度等于它本身长度的四分之三加上四分之一.这根绳子长多少? 什么时候一吨棉花比一吨铁重一些? 什么是公式法 一根绳子的长度等于它的本身的四分之三加上四分之三米.这根绳子长多少米? 关于一道数学虚数方程题RT,因为因式分解什么的都没弄出来=-=忘记打题目了=-=x^3-6x^2+10x-8=0 数学公式法公式是什么?一定要是公式……………… 有一堆沙子,第一次运走五分之一,第二次运走剩下的五分之二,问那一次运走的多,为什么?(列算式) 什么是纯虚数 ?谢谢了,大神帮忙啊 在一幅比例尺是1:3000000的地图上量得甲乙两城的距离为8厘米在比例尺是1:4000000的地图上甲乙两城的距离是多少厘米 一堆沙第一次运走了四分之一,第二次运走了五分之二,还剩下14吨,这顿沙原来有多 在比例尺为6000000分之1的地图是量得甲、乙两地间的铁路线、长约5厘米.有快、慢两车同时从甲、乙两地相对同时从甲、乙两地相对开出,3小时后相遇.已知快车每小时行65千米,慢车每小时行多 亿和万元之间怎么换算 如题779134195等于多少万元1570578096等于多少万元1653049244等于多少万元2638322593等于多少万元1591870916等于多少万元 数学换成乘积的形式谢谢(4) 有没有数学过关的教教转换公式.46.94%含固量的液体是43.87吨,换算成36%含固量的液体是57.20吨.其中46.94%含量的液体价格是每吨2440元一吨.那么.转换成36%含量的液体是多少钱. 14亿美元换算成人民币是多少?搞不懂如何换算? 数学换成乘积的形式谢谢(2) 在产品销售成本计算表中单位成本是如何算出来的,有计算公式吗在产品销售成本计算表中单位成本是如何算出来的,产品入库单是怎么得来的,没有产品购买来呀,只有购材料 用数学归纳法证明1+4+9+...+n^2=1/6*n*(n+1)*(2n+1)ji, 求超大数字乘积 表达式意义2017612633061982200*18446744073709552000=?上面数字乘积等于多少,3.7218383881977644e+37;这个数字表示什么意思 我要求的数字是10的2017612633061982200*18446744073709552000 次方也就是1 货物加运费以后如何计算成本?有没有计算公式,谢谢单一一种东西我会算,例如:10件物品350元,加运费20元,一共370元,那么1件物品成本为37元,我实在你不明白多种不同价格东西如何摊运费呢?例 1=1^2 2+3+4=3^2 3+4+5+6+7=5^2 4+5+6+7+8+9=7^2 …… 试猜测一般结论,并用数学归纳法证明 1亿除以60等于多少?拜托 1.在比例尺是1:3000000的地图上,量得A、B两地的距离是50厘米.甲乙两辆客车同时从A、B两地相对开出,经过10小时相遇.甲客车每小时行76千米,那么乙客车每小时行多少千米? 用数学归纳法证明:3*7^(k+1)+6能被9整除 在一副比例尺为1:3000000的地图上,量得A、B两地之间的距离是4.5厘米.再另一副比例尺为1/5000000的地图上,A、B两地的图上距离是多少? 把一亿化作以万作单位是怎么换算的 1千克的铁你1千克的棉花重.对吗? 在比例尺为1:3000000的地图上,图上1厘米表示实际距离多少千米?在1:3000000这个比例尺中所表示的实际距离是图上距离的多少倍? 一道换算单位30000cm^3=( )kg? 在比例尺是1:3000000的地图上,量得A、B两城的距离是2.4厘米.在A、B两成之间有一中途停靠站C.A、B两成到C站的距离比是7:5.一辆汽车从B城到C站用了0.6小时,求着辆汽车的平均速度.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn