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

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

如何管理和优化日益增长的代码复杂度? SDCC 2013大会讲师名单议题更新 8月1日前3.8折优惠截止 IBM Rational首席技术官:DevOps是一门哲学 Mozilla联手黑莓推进Web安全技术,推出开源测试平台Minion 苹果如何培养SOHO一族高效工作 再造Ruby:CryENGINE 3.5游戏引擎特性详解 Eclipse基金会涉足物联网,M2M标准是否已获东风? SDN部署前必须考虑的7个事项 【云先锋 40】初创公司DataStax:专注于Cassandra,三年融资8370万美元 内容创作工具的革新:Facebook前CTO推文字处理应用Quip 微软为Android手机推出Office 仅面向Office 365用户开放使用 编程、创业、开源感悟——SDCC 2013讲师云风专访 原生广告:移动推广的热门新宠 隐私之战:金山手机毒霸宣布开放安全检测平台 世界人民的头上有张监控大网——Xkeyscore 美国“监控门”情报收集系统 X-Keyscore 技术揭秘 为啥REST如此重要? 并非PHP Frameworks而是WordPress让PHP更加流行! Twitter Bootstrap深受开发者喜爱的11大理由 假如3D打印机也有“撤销”键 大数据的游戏运营:不能起死回生,只能锦上添花 15个步骤创立技术公司,并收获千万用户(一) 红帽再发力 将MongoDB整合到Linux系统 ZestFinance:前谷歌CIO创立的机器学习+大数据分析公司 7月份浏览器份额:IE仍最受欢迎 Chrome成最大赢家 2013 Q2 Android手机出货量再创新高 iPhone三年来新低 如何一个人打造日PV百万的网站架构——SDCC 2013讲师曹力专访 【一周观察】动辄9位数以上的投资,云数据中心缺口巨大! 硬件创业到底有多火? 知名网站分享:PHP代替Perl,Redis置换MySQL,日处理过亿PV 涨姿势了:Unity CEO聊如何玩转开发者生态 想通了过问题,散分 那位大哥做过网络规划,系统集成方面的,我想电话求教,能帮个忙吗??? how to get chinese type method? 如何响应键盘事件? (7)今夜狂放1000分,8:15结帐:)需要分的来吧:)前600分已经放出。。 小问题,恳请帮忙,在线等候! 如何实现两个数据库之间的实时通讯? 高分请教,如何用JAVA实现浏览局域网里的其他机子的目录。在线等待 主板上是USB1。0的接口用USB2。0标准的移动硬盘,有办法安装使用吗?(在线等候) 探讨一下JSP的多国语言实现 这样一个功能怎么实现(在线等待) 调用COM时出错~~~ 问答:仅知类D是由类B按某种形式派生得到的,举一例说明,D不一定是B的子类型。 小问题,帮个忙 刚用C#开发了一个游戏,大家多提意见!有分 关于插入数据的问题 请问:谁有Delphi 5.x分布式多层应用电子商务篇的下载地址, pdf格式 Applet嵌入HTML中的问题!急!急!急! 小小问题,散分100!!!!!!!!!!!!你心动了吗? 如何在程序运行时让用户选择按照哪一列进行分组? 文件合并问题? 帮帮忙 请教如何删除控件 圈点“英雄”,针砭实弊 谁能帮我解决IMail不能外发邮件的毛病? vb请教 如何设置remote_login_passwordfile为exclusive TScrollBox在隐藏滚动条情况下,如何用按钮控制其上下滚动?(在线) 高分请教:用VC怎样编写群发mail的程序? jsp 连 oracle 问题? 请教:ASA7.0安装后启动Sybase Central 4.0时出错".....内存错,该内存不能为read" 请教一个关于Javascript的变量能否在Asp中使用? 高分求解(有类似源代码都行)-处理桌面一个台球运动轨迹问题,方向,球速碰到桌边后速度减慢!进去就结束。 如何在SOAP中发布EJB? 请教各位高手:怎样在状态栏中加进度条? 散分! 关于progress control的小问题 如何传递文件名 求深入浅出MFC2附书源码。 大家帮个忙!! 明天过生日,散分! 使用内存查看 [分享]你的精神年龄是多少?进来测试一下! 以后的路给点意见 刚做的游戏,大家来看看 请问如何在一个窗体中引用另外一个窗体的对象? 挨T的都进来灌水聊天吧 当sql server某张表有变化时,VC+ADO写的程序能否去读数据库更新Listctrl?好像是触发器,如何实现? 刚做的游戏,请多多指点 win2000中,播放avi文件的问题 一些小问题! 温州市委秘书长吴开锋被曝有婚外情 2钓鱼台国宾馆选拔服务人员 阵势犹如选香港举行“枕头大战”场面壮观习近平在海南会见多国总统 彭丽媛出席杭州举办健美健身锦标赛 上演力与美的杭州举办健美健身锦标赛 上演力与美的威廉王子携凯特访问苏格兰 遭可爱小萝神秘富二代与郭美美互掐 晒银行99亿高清:人民日报新大楼被吐槽造型别致凤凰古城收费引商户集体罢市抗议 官方张紫妍自杀前最后一部影片曝光 三级片钱江潮“一潮三看” 游客可追潮25公长沙一餐厅要求员工穿比基尼上班F1上海站举行车手巡游 赛车宝贝火辣广东茂名鸡价因禽流感大跌 市民疯狂抢美国波士顿马拉松赛发生爆炸窦靖童on the beach素颜自丽江大火铺天盖地 彩云之南遍地狼藉(郑州一超市女售货员被劫持 劫匪被控制记者暗访快捷酒店真相惊人 用洗脸毛巾南国花开艳 赏樱正当时看厌了千篇一律的中国历史?日本人韩国郑州动物园公布大熊猫“锦意”死因:感坐“海上威尼斯” 探访来自星星的你女子为出售夫妻共同房产 找人冒充丈夫一周展评古树名木普查像王家卫拍电影一样玩即兴表演你敢来吗我的诗歌被退稿了,怎么办?今年前两个月浙江出口同比下降5.2%女人为什么不爱练健美?澳洲留学新政解析会品质3·15精装体验之旅本周末举行90后女作家蓝泽用新媒体直播自己吸脂LOFT 综合体 实景房 学区房……男子毁容后儿女称其“妖怪” 换脸为不新农都销售的冷鲜鸡鸭今后脚上要戴“戒铁路、民航、邮政统一由交通部管理春天最宜养肝这次主攻“非”字形车位和侧方停车本周六有装修质量品鉴会160方户型可享320方室内空间
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘