大规模数据处理实战
蔡元楠
硅谷资深工程师
41608 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
大规模数据处理实战
15
15
1.0x
00:00/00:00
登录|注册

02 | MapReduce后谁主沉浮:怎样设计下一代数据处理技术?

设计一套基本的数据监控能力
统一的编程API
统一的数据结构表示
数据处理描述语言和运算引擎的前后端分离协议
弹性的劳动力分配机制
自动发现重复数据处理流程并进行合并
用有向图进行高度抽象
数据集和数据变换描述复杂的数据处理流程
有向无环图(DAG)抽象表达
问题:维护成本高;时间性能不足
架构层面提供异常处理和数据监控的能力
统一批处理和流处理的编程模型
数据处理描述语言与运行引擎解耦合
自动进行性能优化
技术抽象让多步骤数据处理变得易于维护
成为Google内部的数据处理新宠
2008年诞生在Google西雅图研发中心
MapReduce作为数据处理的默认标准的时代
改进设计的想法
现有数据处理技术的问题
设想下一代大规模数据处理技术
FlumeJava
2014年之前的大数据历史
思考题
MapReduce后谁主沉浮:怎样设计下一代数据处理技术?

该思维导图由 AI 生成,仅供参考

你好,我是蔡元楠。
在上一讲中,我们介绍了 2014 年之前的大数据历史,也就是 MapReduce 作为数据处理的默认标准的时代。重点探讨了 MapReduce 面对日益复杂的业务逻辑时表现出的不足之处,那就是:1. 维护成本高;2. 时间性能不足。
同时,我们也提到了 2008 年诞生在 Google 西雅图研发中心的 FlumeJava,它成为了 Google 内部的数据处理新宠。
那么,为什么是它扛起了继任 MapReduce 的大旗呢?
要知道,在包括 Google 在内的硅谷一线大厂,对于内部技术选择是非常严格的,一个能成为默认方案的技术至少满足以下条件:
经受了众多产品线,超大规模数据量例如亿级用户的考验;
自发地被众多内部开发者采用,简单易用而受开发者欢迎;
能通过内部领域内专家的评审;
比上一代技术仅仅提高 10% 是不够的,必须要有显著的比如 70% 的提高,才能够说服整个公司付出技术迁移的高昂代价。就看看从 Python 2.7 到 Python 3 的升级花了多少年了,就知道在大厂迁移技术是异常艰难的。
今天这一讲,我不展开讲任何具体技术。
我想先和你一起设想一下,假如我和你站在 2008 年的春夏之交,在已经清楚了 MapReduce 的现有问题的情况下,我们会怎么设计下一代大规模数据处理技术,带领下一个十年的技术革新呢?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

大数据处理技术正迎来新的发展时代。本文讨论了MapReduce的不足之处,并提出了设计下一代大规模数据处理技术的思路。首先,通过使用有向无环图(DAG)来抽象表达多步骤数据处理,解决了维护协调多个步骤的数据处理问题。其次,自动进行性能优化是关键,通过自动发现和合并重复的数据处理流程,以及弹性的计算资源分配,提高了数据处理任务的效率。另外,将数据处理的描述语言与运行引擎解耦合开来,实现前后端分离,以及统一批处理和流处理的编程模型,使得开发者只需学习一套API,无论是批处理还是流处理,都能够应对业务需求的变化。这些设计思路将有助于引领下一个十年的技术革新。 在大规模数据处理系统中,异常处理和数据监控是关键挑战。文章指出,在复杂的数据处理系统中,异常处理是一个巨大的挑战,而数据监控能力则至关重要。文章提出了设计一套基本的数据监控能力,对数据处理的每一步提供自动的监控平台,以便帮助用户快速找到可能出错的环节。 总的来说,本文提出了下一代大规模数据处理技术的设计思路,并强调了异常处理和数据监控的重要性。这些思路将对未来的大数据处理技术发展产生深远影响。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大规模数据处理实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(55)

  • 最新
  • 精选
  • mjl
    置顶
    Unify platform和批流统一已经是主要趋势了,而我个人目前只对spark、flink有一定的了解。对于spark来说,无疑是很优秀的一个引擎,包括它的all in one的组件栈,structured streaming出来后的批流api的统一,目前在做的continues Mode。而flink,的确因为阿里的运营,在国内火了。但也展现了它的独有优势,更加贴近dataflow model的思想。同时,基于社区以及阿里、华为小伙伴的努力,flink的table/sql 的api也得到的很大的增强,提供了流批统一的api。虽然底层然后需要分化为dataset和datastream以及runtime层的batchTask和StreamTask,但是现在也在rethink the stack,这个point在2019 SF 的大会也几乎吸引了所有人。但就现状而言,flink的确有着理念上的优势(流是批的超集),同时也有迅猛上升的趋势。

    作者回复: 谢谢你的留言!感觉活捉了一只技术大牛呢。 是的,Spark的话虽然原生Spark Streaming Model和Dataflow Model不一样,但是Cloudera Labs也有根据Dataflow Model的原理实现了Spark Dataflow使得Beam可以跑Spark runner。 而对于Flink来说的话,在0.10版本以后它的DataStream API就已经是根据Dataflow Model的思想来重写了。现在Flink也支持两套API,分别是DataStream版本的和Beam版本的。其实data Artisans一直都有和Google保持交流,希望未来两套Beam和Flink的API能达到统一。 最后赞一点批处理是流处理的子集,这个观点我在第一讲留言也提到过。 如果觉得有收获,欢迎分享给朋友!同时也欢迎你继续留言交流,一起学习进步!

    2019-04-19
    2
    60
  • fy
    虽然看的不是很懂,毕竟没搞过这方面的,但是每篇文章的知识点逻辑很清楚,学习中,这里尊称一句蔡老师,被老师的回复学者的留言给感动了。期待老师后面精彩的专栏

    作者回复: 谢谢肯定。期待你后面的留言。 也欢迎推荐给朋友!

    2019-04-20
    6
  • Milittle
    讲真,这个思路太清晰了。讲到有向图那里,还没看到tf那段,我脑子里第一蹦出来的就是深度学习里面的符号式计算图,可以在图编译的时候进行优化。然后在计算时可以加速运算,还有就是,这里的计算图用拓扑排序结合优先级队列来执行计算。 我还是个学生,有不对的地方请指教,没在真实场景中体验过,但是感觉这些都是通用的,学会了,处处可以用到。期待后续课程给更多的启发,谢谢(*°∀°)=3

    作者回复: 你理解的很多!期待你后面的分享

    2019-04-20
    6
  • 大王叫我来巡山
    经历了mapreduce到spark, 从最具欺骗性的wordcount开始到发现很多业务本身并不适合mapreduce编程模型,一直做日志处理,现在在政府某部门同时处理批处理任务和流处理任务,老师的课太及时了,感觉对我们的业务模型革新会产生很大的影响,前两篇没有涉及技术,已经感觉醍醐灌顶了。

    作者回复: 你说的对,WordCount就像helloworld,真实业务场景肯定会复杂很多。

    2019-04-19
    6
  • 文洲
    老师讲的很明白,有个疑问,现在都说flink是下一代实时流处理系统,这里按老师的对比来看,它还比不上spark,可否理解为flink主要还是专注实时流处理而spark有兼具批处理和流处理的优势

    作者回复: 并没有说flink比不上spark。。。这篇没有展开比较。只是带了一句话flink的流处理批处理api不一样。

    2019-04-19
    2
    5
  • wmg
    现在使用较多的是hive和sparkSql,这两种技术多使用的都是类似关系数据库的数据模型,对于一些复杂的对象必须要通过建立多张表来存储,查询时可能需要多张表进行join,由于担心join的性能损耗,一般又会设计成大宽表,但这样又会浪费存储空间,数据一致性也得不到约束。想问一下老师,有没有支持类似mongodb这样的文档型数据模型的大数据处理技术?

    作者回复: 数据的索引查询和这里的数据处理是两个话题。关于怎么提高数据系统的查询效率,我在考虑要不要开一个存储系统高性能索引专栏。 我不知道你的查询有多复杂,简单处理的话,可以先试试建一些常见查询路径的索引表。写的时候往两张表写或者再做一些专门的建索引的数据处理系统。

    2019-04-19
    4
  • monkeyking
    老师,啥叫dataflow?从字面上来看好像和dag差不多,不知道我理解的是否正确,还请老师指正

    作者回复: 谢谢你的提问!在留言区里的Dataflow指的是Google在2015发表的Dataflow Model数据处理模型。

    2019-04-20
    3
  • 来碗绿豆汤
    蔡老师好,看到您那么认真的回复读者问题,果断决定买了,跟着您一起学习。我们最近在打算重构一个项目,想听听您的建议。系统的输入是将近1TB的数据文件(好多个文件,不是一个大文件),内容就是一条条记录,描述了某个实体的某个属性。我们要做的就是把属于同一个实体的属性整合到一起,然后将数据按实体id排序输出,没100万个实体写一个文件。我现在的思路就是:第一步,把文件重新按照实体id切块,然后排序写成小文件,这一步可以是一个程序;第二步,对id属于某个范围内的(如1-100w)文件,归并排序,这一步一个程序;第三步,对排好序的文件按指定格式输出。因为以前没接触过大数据相关技术,所以现在是用java实现的demo版本,就像你课程里面所示,担心将来各个进程,线程之间,交互通信,异常处理,log处理,等一系列问题都需要自己维护会比较麻烦,想听听您的建议。

    作者回复: 这个是很典型的问题。后面学到了一些框架之后可以很方便用groupBy进行处理。

    2019-04-20
    3
  • Codelife
    我们是做车联网业务的,目前实时处理采用的storm,批处理采用的是MR,和您的文章中描述的一样,业务场景和算法中经常出现实时和批处理共存的情况,为了保证实时性,通常是定时执行MR任务计算出中间结果,再由storm任务调用,这样的坏处是MR任务并不及时,而且维护起来很麻烦,效果并不理想。希望能够从apache beam中学到东西

    作者回复: 谢谢你的留言!我在第十讲中所讲解到的Lambda Architecture应该会对你们的架构设计有所帮助。希望能在那时继续看到你的留言。

    2019-04-19
    2
    3
  • 小辉辉
    看完前三讲,让我对大数据又有一个更新的认识

    作者回复: 谢谢你的肯定!同时也欢迎你把专栏分享给朋友。

    2019-04-21
    2
收起评论
显示
设置
留言
55
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部