39 | 十年一梦,一起来看Facebook的数据仓库变迁(一)
徐文浩
你好,我是徐文浩。
前面两节课,我们是从方法论和具体的实践这两方面,一起了解了 Twitter 的大数据系统是怎么样的。而在过去的整个课程里,我们也看过大量的来自 Google 的论文。
发表了大量论文的 Google,是开创整个大数据时代的引领者,我们有太多可以学习他们的地方,却很难去模仿他们。那么,团队规模比起来小很多的 Twitter,则是一个我们可以直接“抄袭”的对象,我们不仅可以借鉴他们的直接经验,在选择开发什么系统上,也可以模仿他们的整体思路。
而有一家公司,则介于他们两者之间,那就是今天我们要介绍的 Facebook。比起 Twitter,随着逐渐发展壮大的过程,Facebook 为开源社区提供了更多广泛使用的开源项目。比起 Google,Facebook 在大数据系统的开创性工作上却做得不多。
而如果你所在的团队,正好要从各种实践方法的优化,进一步提升到通过开发新系统来让大数据体系更加易用,那么从 Facebook 的数据基建的发展历程中,你可以学到很多东西。
所以今天,就请你和我一起来读一读发表在 2010 年的《Data Warehousing and Analytics Infrastructure at Facebook》这篇论文。在这篇论文里,Facebook 还处于自己发展的早期阶段,而在下节课里,我们还会看到 Facebook 的数据基建是如何进一步进化的。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Facebook的数据仓库变迁展示了其在大数据系统架构和部署方面的独特解决方案。文章介绍了Facebook面临的挑战以及他们采取的解决方案。首先,Facebook拆分了多个集群,以确保不同任务的SLA得到满足。其次,他们利用历史数据作为容错手段,避免生产环境的MySQL负担过重。此外,Facebook还通过监控进程和Hook来同步数据和元数据,确保两个Hadoop集群的数据和元数据保持同步。这些解决方案展示了Facebook在大数据系统架构和部署方面的创新和实用性。Facebook采用了容错+分层+优化的三板斧来解决各种具体问题。通过多个职责分离的集群,Facebook既能够确保数据及时落地,也避免了不同类型的任务之间抢占资源,相互影响。Facebook的线上集群分成了承载日志落地的Scribeh集群,只运行有严格时间期限任务的生产Hive-Hadoop集群,以及运行没有那么严格的生产任务和临时分析程序的Adhoc集群。Facebook的这些经验是可以好好借鉴的,尤其对于基于Hadoop或者Spark搭建大型数据仓库的人来说。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大数据经典论文解读》,新⼈⾸单¥59
《大数据经典论文解读》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(3)
- 最新
- 精选
- 核桃Erasure code的就是EC卷,在hdfs里面现在已经支持了,同时存储的glusterfs这些也支持。所谓的EC卷,和副本卷最大的不同是,节点中存放的副本都是一个完整的,而EC则是分片的,是以前数据分片的进一步优化过来的。因为数据节省空间,可以把一份数据切分成等分的十个分片,但是丢失了则无法找回,因此才有了EC编码。 而常见的是2+1, 4+2,8+2这样的方式其中加号后面的,则是冗余,也就是说,一份完整的数据,会切分成m分,然后计算校验码n份,一个完整的数据就有m+n分,最多允许丢失n份。 那么这里的原理也不难,其实就是一个数据矩阵是否可逆的问题,因为根据大学线性代数的基础,可逆矩阵总是有解的。而为了求解是否可逆,一般使用的是柯西矩阵或者范德蒙矩阵,当然,在工业界上使用的是伽罗瓦域去做的,这样求解的速度会快很多。具体的这些,大家可以去自行搜索纠删码,或者里的所罗门编码。 那么对于EC卷和副本卷,抛开原来来说,最大的问题就是对一致性要求不一样,副本卷极端情况下,只要有一个完整副本,那么都可以恢复回来的,但是EC卷不行,因为是对数据分片了,最多只能损坏n个分片。因此每次写入的时候,至少要保证m个数据分片是完整,否则直接无法恢复了。 另外在工程实现上,目前对于EC卷的实现有两种方式,一种是实时EC,也就是每次写入一堆数据(例如要求满4k,不满的则补齐),然后对其进行分片并且计算冗余码,然后下发到节点。另外一种则是先写入副本,然后把完整的副本转为EC编码,然后再删掉副本数据。2022-03-232
- vkingnew有机会请详细的讲解下Erasure code的原理和应用?有些数据不用是否可以销毁?应该有销毁的策略2022-01-2611
- 尚春我们厂目前一些分层的思路: - 数据湖:主要存放一些对于读取性能要求不那么高的数据(Delta 格式,全量长周期数据),以及 ML 中用到的半结构化数据 - 数仓:主要存放一些需要快速读取的数据用于分析(AWS Redshift,只有近期详细数据和周期性汇总数据)2022-02-05
收起评论