大数据经典论文解读

大数据经典论文解读 / 从大数据论文入手,提升问题解决能力

徐文浩 bothub创始人
  • 课程目录
  • 课程介绍
  • 在线阅读:开篇词 | 读论文是成为优秀工程师的成年礼

    阅读论文就是去理解武功对应的“心法”,它可以让你不仅仅是只学会今时今日有用,而是能做到一辈子都受益。

  • 01 | 什么是大数据:从GFS到Dataflow,12年大数据生态演化图

    要想学好大数据,我们需要先正本清源,弄清楚大数据在技术上到底涵盖了些什么。所以今天这节课,我就从大数据技术的核心理念和历史脉络这两个角度,来带你理解下什么是大数据技术。

  • 02 | 学习方法:建立你的大数据知识网络

    一篇篇的大数据论文,并不是教科书里的一个章节或者一个知识点,而是对于一个重要的系统问题的解决方案。在读论文之前,先尝试自己去思考和解决对应的问题,有助于你更深刻地理解问题和解决方案的重点。

  • 03 | The Google File System (一): Master的三个身份

    GFS并不是一篇有着大量新的研究发现的理论性的论文。恰恰相反,整个GFS的架构,是通过非常重要的工程原则来设计的,也就是尽量简单、需要考虑实际的硬件情况,以及针对实际的应用场景进行设计。

  • 04 | The Google File System (二): 如何应对网络瓶颈?

    在“大数据”爆发之后,数据中心的大量数据传输变成了数据中心的服务器横向之间的传输,而这个也让工程师们开始重新基于需求,重新设计数据中心需要的硬件和网络拓扑。

  • 05 | The Google File System (三): 多写几次也没关系

    GFS的设计原则,就是简单、围绕硬件性能设计,以及在这两个前提下对于一致性的宽松要求。可以说,GFS不是一个“黑科技”系统,而是一个非常优秀的工程化系统。

  • 06 | MapReduce(一):源起Unix的设计思想

    当你仔细了解MapReduce的框架之后,你会发现MapReduce的设计哲学和Unix是一样的,叫做“Do one thing, and do it well”,也就是每个模块只做一件事情,但是把这件事情彻底做好。

  • 07 | MapReduce(二):不怕失败的计算框架

    和GFS一样,MapReduce的实现是比较简单的,就是一个典型的单master多worker组成的主从架构。在分布式系统容错上,MapReduce也采取了简单的重新运行、再来一次的方案。

  • 08 | Bigtable(一):错失百亿的Friendster

    所有的架构设计都不是闭门造车,而是来自于真实的场景和真实的需求。对于系统设计来说,除了业务需求和性能指标之外,有大量的隐性的需求同样重要甚至可能更加重要,Bigtable就是最好的一个例子。

  • 09 | Bigtable(二):不认识“主人”的分布式架构

    Bigtable是通过把分区信息直接做成了三层树状结构的Bigtable表,来让查询分区位置的请求分散到了整个Bigtable集群里,并且通过把查询的引导位置放在Chubby中,解决了和操作系统类似的“如何启动”问题。

  • 10 | Bigtable(三):SSTable存储引擎详解

    我们看到的Bigtable的数据模型,其实是一系列的内存+数据文件+日志文件组合下封装出来的一个逻辑视图。

  • 11 | 通过Thrift序列化:我们要预知未来才能向后兼容吗?

    我会带着你从最简单的CSV格式开始,根据需求一步步优化扩展,看看为什么我们需要Thrift里像TCompactProtocol这样的编码格式,然后我会带你来理解它是如何设计,做到可以跨语言、跨协议、可扩展的。

  • 12 | 分布式锁Chubby(一) :交易之前先签合同

    我们以为非常简单地同步复制Master,并不是理所当然的事情。

  • 13 | 分布式锁Chubby(二) :众口铄金的真相

    我们把GFS的Master和Backup Master之间的同步复制问题,当成了一个状态机日志复制问题,而解决这个问题的方案,就是Paxos这样的分布式共识算法。

  • 14 | 分布式锁Chubby(三) :移形换影保障高可用

    Google并没有非常僵化地在所有的分布式系统里面,都简单通过实现一遍Paxos算法,来解决单点故障问题,而是选择通过Chubby实现了一个粗粒度的锁。

  • 15 | Hive:来来去去的DSL,永生不死的SQL

    因为Hive只是作为一个底层计算引擎的“驱动”出现,让它可以去适配其他的计算引擎。这也是今天我们已经很少使用原始的MapReduce,而Hive还能够通过Hive on Spark这样使用更快的执行引擎的方式来保持旺盛生命力的原因

  • 16 | 从Dremel到Parquet(一):深入剖析列式存储

    MapReduce有着非常强的伸缩性,架起一个1000个节点的服务器毫无压力。可MapReduce的缺陷也很明显,那就是它处理数据的方式太简单粗暴,直接就是把所有数据都扫描一遍。

  • 17 | 从Dremel到Parquet(二):他山之石的MPP数据库

    Dremel本身也没有发明什么新算法、新架构,而是通过借鉴现有各类成熟的并行数据库、搜索引擎、MapReduce搭建起了一个漂亮的框架,把大部分人眼里的不可能变成了可能。

  • 18 | Spark:别忘了内存比磁盘快多少

    Spark的RDD,是在没有破坏MapReduce的易用性的前提下,支持了MapReduce可以支持的所有运算方式。并且,它通过尽可能利用内存,使得需要多个MapReduce的组合或者迭代的任务的执行速度大大加快了。

  • 19 | Megastore(一):全国各地都能写入的数据库

    Megastore并不是一个“透明”的分布式数据库,而是要你在充分了解它的特性之后,对于你自己的数据库表进行对应的适配性设计,才能发挥出它的这些有意思的特性。

  • 20 | Megastore(二):把Bigtable玩出花来

    Megastore与其说是一个数据库系统,不如说是对Bigtable的特性进行了合理封装后的一个数据应用层。

  • 21 | Megastore(三):让Paxos跨越“国界”

    Megastore并没有成为市场上流行的数据库。不过,Megastore本身充分利用Bigtable,思考应用层的数据模型和系统架构设计的关系,以及对于Paxos算法实现的优化,对我们学习分布式架构,有着很强的指导意义。

  • 22 | Spanner(一):“重写”Bigtable和Megastore

    相较于Megastore是在Bigtable上进行“缝缝补补”,Spanner作为一个全新设计的系统,没有背上过多沉重的包袱。

  • 23 | Spanner(二):时间的悖论

    Google采用了原子钟+GPS时钟,来缩短各个服务器的时钟差异问题。不过,时钟差异只能缩短,不会消失。但是时钟差异大大缩短之后,这个分布式事务的“可线性化”问题已经有工程上的解决办法了。

  • 24 | Spanner(三):严格串行化的分布式系统

    Spanner的论文是非常重要,对于分布式数据库系统也有很强的里程碑意义。它告诉全世界,一个强一致、高性能、全球分布式的数据库是完全可行的。

  • 25 | 从S4到Storm(一):当分布式遇上实时计算

    Yahoo通过S4系统,进行低延时的“实时”数据处理。整个系统的设计理念类似于MapReduce,开发人员只需要实现Processing Element的这样的业务处理逻辑,而不需要关心“分布式”是怎么运行的。

  • 26 | 从S4到Storm(二):位运算是个好东西

    在系统设计层面,Storm其实和我们之前看过的MapReduce/Bigtable之类的系统,有很多相似之处。可以说,太阳底下没有什么新鲜事儿。

  • 27 | Kafka(一):消息队列的新标准

    Kafka之所以在大数据领域,比Scribe这样的日志收集系统,以及传统的消息队列要好用的原因,在于这些系统对于业务需求的假设是不同的。

  • 28 | Kafka(二):从Lambda到Kappa,流批一体计算的起源

    一方面Kafka是如何随着Broker的增加和减少,协调上下游的Producer和Consumer去收发消息的。另一方面,我们会从整个大数据系统的全局视角来看,在有了Kafka和Storm这样的利器之后,大数据系统的整体架构该如何搭建。

  • 29 | Dataflow(一):正确性、容错和时间窗口

    我们并不希望自己在写Storm的Spout代码的时候,写上一大堆代码,来解决正好一次的数据处理、Spout中间状态的持久化,以及针对时间窗口的处理逻辑。因为这些问题,是流式数据处理的共性问题。

  • 30 | Dataflow(二):MillWheel,一个早期实现

    纵观整个MillWheel,我们的确可以说,无论是数据的正确性、系统的容错能力,还是数据处理的时间窗口,MillWheel都已经解决掉了,可以说殊为不易。即使是在2021年的今天,也不是所有的流式数据处理系统都能做到这一点

  • 31 | Dataflow(三):一个统一的编程模型

    Dataflow不是一篇介绍具体系统实现的论文,而是一篇更加高屋建瓴,从模型角度思考无边界的大数据处理应该如何抽象的论文。就像MapReduce一样,Dataflow是一个抽象的计算模型,而不是一个具体的系统实现。

  • 复习课(一)| The Google File System

    学习论文并不是背诵,重要的是得总结和思考。

  • 复习课(二)| MapReduce

    MapReduce主要有三个特点:第一,简单的编程模型;第二,丰富的表达能力;第三,能够有效利用分布式系统的资源。

  • 复习课(三)| Bigtable

    Bigtable最耀眼的能力,就在于它可以支撑每秒百万级别的随机读写。它主要是通过两个方法达成这个目标的,一个是把随机写变成顺序写;另一个是尽可能从内存中读。

  • 复习课(四)| Thrift

    当我们回看自己熟悉的工具,把它还原到当年研发的背景,以及大数据领域面临的挑战下观察时,我们其实可以获得新的启发。

  • 复习课(五)| Chubby

    我们可以把Chubby的服务端看成一个三层的系统。最底层,是一个Paxos协议实现的同步日志复制的系统;中间层,是一个简单的KV数据库;最上层,才是Chubby封装的锁服务。

  • 复习课(六)| Hive

    通过观察Hive的系统架构,我们可以发现,Hive并没有对MapReduce形成强依赖,所以我们今天可以看到Hive on Spark这样的项目。借助Spark,HiveQL能够执行得更快。

  • 复习课(七)| Dremel

    我们要认识到Dremel在数据分析中的作用,它能帮助分析师快速验证想法,得出大致结论。但是想要获得精确的结果,或者分析实时的流式数据,还是需要其他技术的支持。

  • 复习课(八)| Resilient Distributed Datasets

    RDD的全称是弹性分布式数据集,它允许开发人员在大规模集群上,以容错的方式执行内存计算。而Spark就是实现了RDD的分布式计算框架。

  • 复习课(九)| Megastore

    Megastore并不是一个高性能的产品,但是它做出了混合NoSQL数据库和传统RDBMS的示范,让人们感受到了分布式事务数据库,可以提供多么强大的特性。

  • 复习课(十)| Spanner

    Spanner作为一个超大规模的分布式系统,如何高效地支持外部一致性事务,就是我们需要关注的重点。

  • 加餐1 | 选择和努力同样重要:聊聊如何读论文和选论文

    想要读好论文,一定要做笔记。

  • 加餐2 | 设置你的学习“母题”:如何选择阅读材料?

    我建议你尽量去读经典的、引用数量高的论文。然后,随着技术变迁的脉络,逐渐往后读到新的论文。

  • 加餐3 | 我该使用什么样的大数据系统?

    在开始搭建大数据系统和团队的时候,你的核心决策原则,应该是围绕着TCO和ROI这样两个可量化的数字进行。技术先进性,也只是围绕这两个指标中思考的一个角度而已。

  • 32 | Raft(一):不会背叛的信使

    Raft的主要目标是找到一个容易理解的分布式共识算法。所以,它通过直接从“状态机复制”这个角度,来直接设计算法,而不是通过共识问题绕一圈,映射成一个状态机复制问题。

  • 33 | Raft(二):服务器增减的“自举”实现

    无论是成员变更、日志压实还是和客户端的交互,Raft的这些设计思路我们都可以在日常使用的其他系统中找到对应的思路和方法,这也是计算机工程的一大特点,也就是具体实现可能各不相同,但对应的思路和方法往往相通。

  • 34 | Borg(一):当电力成为成本瓶颈

    在整体架构上,Borg并没有什么出人意料的思路。不过在实践的工程上,能够管理1万台集群的服务器的确让人叹为观止。可惜Google并没有把Borg这样的系统开源出来,我们也就没有办法深入到代码层面去一探究竟了。

  • 35 | Borg(二):互不“信任”的调度系统

    Borg是一个非常面向实战的系统,而不只是局限于理论。这不仅是Borg系统的特性,也是我们之前看过的大量大数据系统的共性。

  • 36 | 从Omega到Kubernetes:哺育云原生的开源项目

    Kubernetes并不是一个调度器,而是被叫做容器“编排”系统。即使到今天,对于服务和服务之间的依赖,Kubernetes的方案离完美也还差得远。这也是为什么,Kubernetes本身作为一个系统仍然在快速进化的原因。

  • 用户故事 | 陈煌:唯有自强不息,方能屹立不倒

    世上无难事,只要肯登攀。祝我们都能跨过大数据领域的一座又一座大山,站在山顶一览众山小。

  • 用户故事 | 黄涛:水滴石穿、坚持不懈,必能有所精进

    大数据技术种类繁杂,涉及的知识多如牛毛,我们只有拿出水滴石穿的劲头,一步一个脚印,持续学习,稳扎稳打,不懈努力。同时,在学习一类新的技术时,仔细琢磨,直探本质,才能做到触类旁通,事半功倍。

  • 用户故事 | 许灵:不抛弃不放弃

    我们在学习的道路上也是一样的,我们要一直坚持学下去,趁年轻,趁热爱,趁一切都还来得及。

  • 用户故事 | 核桃:95后的技术成长之路

    在未来,大数据领域会有更加急速的发展与演变。而在这个时代到来之前,需要我们不断地对过去的技术溯本清源,这样才能更好地一步步脚踏实地发展和前进。

  • 37 | 当数据遇上AI,Twitter的数据挖掘实战(一)

    Twitter并不是靠嘴上说说“加强沟通”来解决沟通问题的,而是通过把原本需要沟通才能解决的问题,变成系统里的一部分。

  • 38 | 当数据遇上AI,Twitter的数据挖掘实战(二)

    在这篇论文里,Twitter一点儿都没有藏私,而是给出了大量具体的实践技巧,你完全可以用“抄作业”的方式,把里面的做法用到自己的系统里。

  • 39 | 十年一梦,一起来看Facebook的数据仓库变迁(一)

    Facebook面对各种具体问题的时候,解决方案本质上都是采用容错+分层+优化的三板斧。如果你也要基于Hadoop或者是今天的Spark去搭建一个大型的数据仓库,Facebook的这些经验其实是可以好好借鉴的。

  • 40 | 十年一梦,一起来看Facebook的数据仓库变迁(二)

    有时候,我们会沉醉于有趣先进的技术,却忘了这些系统需要被好好地使用起来,才能发挥出真正的价值。

  • 结束语 | 长风破浪会有时,直挂云帆济沧海

    行路难!行路难!多岐路,今安在?长风破浪会有时,直挂云帆济沧海。

59讲

你将获得

  • 10+篇必读经典论文精讲
  • 大数据系统底层知识学习路径
  • 10年大数据老兵的实战心法
  • 工业级数据系统迭代方案

讲师介绍


课程介绍

那么,今天我们去研读“大数据”领域的经典论文,可以说是一件投入产出比很高的事情。通过学习大数据相关的论文,我们会对计算机工程的各个领域都有更加深刻的认知,这不仅仅是对于“大数据工程师”这样的职位有用,对于做各类后端开发和系统开发的工程师来说,都会有很大的帮助。

但是我们应该怎么学呢?在网上随便一搜,虽然也能找到不少论文被人翻译成了中文,但是往往也只能告诉你“是什么”,却没有办法让你理解“为什么”。这些翻译或者文章,常常给出的是“Bigtable系统是一个稀疏的、分布式的排序好的Map”,却让你没有办法让你理解为什么Bigtable是这样设计的。

所以这次,我们邀请了极客时间《深入浅出计算机组成原理》课程的作者徐文浩老师,通过他十多年研读论文、使用各种开源框架解决大数据问题的经验,带你梳理整个大数据系统的发展脉络,为你分析在整个领域的系统不断往前迭代的过程中,所遇到的具体场景下的问题,还会深入解读其中重要的设计决策背后,能够联系到的计算机底层原理。

这样一来,通过课程内容知识的讲解,你就能够把论文和论文之间联系起来,把论文和具体技术场景联系起来,把论文和计算机原理的底层知识点联系起来。更进一步,你会真正理解Why,而不是只知道What。

课程模块设计

课程主体划分为以下5大模块。

  • 基础知识篇:从最经典的Google三驾马车GFS、MapReduce和Bigtable这三篇论文开始,帮你理解大数据系统面对的主要挑战,以及应对这些挑战的架构设计方法。进一步地,会带你一起来看大数据系统依赖的分布式锁Chubby、序列化和RPC方案Thrift,让你能够将架构设计和计算机结合到一起,掌握好计算机科学的底层原理。
  • 数据库篇:一方面来研读Hive、Dremel和Spark的相关论文,了解工程师们是怎么迭代改进MapReduce,从而满足海量数据下的高性能分析需求。另一方面,你还会了解Megastore和Spanner,从而明白如何在Bigtable的基础架构上,逐步添加Schema、跨行事务,直至完成了一个跨数据中心的分布式数据库。
  • 实时处理篇:结合Storm、Kafka以及Dataflow,你会了解到现代大数据的实时处理系统是怎么逐步迭代,做到流批一体,达成批量和实时数据处理的统一的。
  • 资源调度篇:通过解读Raft、Borg和Kubernetes的论文,你能够厘清如何尽可能在一个数据中心里,合理地压榨资源、调度系统。
  • 实战应用篇:学以致用,通过剖析Facebook数据仓库的逐步演进变化,以及Twitter如何使用大数据进行机器学习,你就能理解如何通过分析问题、理解架构,将所学到的大数据知识串联起来。这样你在未来面对新的问题时,也能够找到精巧的解决方案。

另外,在解读每篇论文的过程中,编辑还会带你一起来回顾课程内容,进一步巩固知识要点,帮助扩展大数据领域技术知识面,同时也会分享一些阅读论文的小技巧,让你不仅有所学、有所思,更让你有所用。


课程目录


特别放送

免费领取福利



限时活动推荐


订阅须知

随机推荐

屹嘉临YJL-4评测怎么样?不容错过的测评分享!

怡颗莓蓝莓适合入手吗?详细评测分享?

特仑苏牛奶乳品分享一下使用心得?老司机评测分享?

4DRC遥控车评测数据怎样?小白买前必看评测?

bc babycare婴童浴巾-浴衣入手怎么样?买前必看的产品评测!

博朗9617s好不好,推荐购入吗?评测报告分享?