- 2014年之前,MapReduce是数据处理的默认标准,其主要缺点: 维护成本高 、 时间性能不足
- 2008年,FlumeJava诞生于Google西雅图研发中心,成为Google内部的数据处理新宠
- 假设在2008年,已知MapReduce的主要问题,应该如何设计下一代大规模数据处理技术?
让多步骤数据处理易于维护
- 维护协调多个步骤的数据处理在业务中非常常见,但复杂的数据处理在MapReduce中的维护成本很高
- 可以利用 有向无环图 (DAG,Directed Acyclic Graph)来抽象表达
- DAG能为多步骤的数据处理依赖关系,建立很好的模型
DAG
- 如果用MapReduce实现,图中的每个箭头都会是一个独立的Map或者Reduce
- 为了协调那么多的Map和Reduce,需要做很多检查,系统将不堪重负
- 如果采用DAG建模
- 每一个 节点 都可以被抽象表达成一种通用的 数据集
- 每一条 边 都可以被抽象表达成一种通用的 数据变换
- 可以用数据集和数据变换描述一个极为宏大复杂的数据处理流程,而不会迷失在依赖关系中
简单配置 + 性能自动优化
- MapReduce的配置过于复杂,以至于错误的配置最终导致数据处理任务的效率低下
- 得益于上一步使用DAG对数据处理进行了高度抽象,这也成为了自动化性能优化的一个突破口
- 理想情况下,计算引擎要能够自动发现红框中的两条数据处理流程是重复的,并进行合并处理
- 另一种自动的优化: 计算资源的自动弹性分配 ,在数据处理开始前,需要有一个自动优化的步骤和能力
解耦:数据描述 + 计算引擎
- 除了 DAG表达 需要 数据处理描述语言 和 计算引擎 协商一致外,其他的实现都是灵活可拓展的
- 例如,数据描述可以用 Python 描述,由业务团队使用,计算引擎用C++实现,可以由数据底层架构团队维护并且高度优化
- 例如,数据描述在本地写,计算引擎在云端执行
统一的编程模型:批处理 + 流处理
- 批处理处理的是 有界离散 的数据,而流处理处理的是 无界连续 的数据
- MapReduce的一个局限是它是为了批处理而设计的,不善于流处理
- 即便是后面的Apache Storm、Apache Flink也有类似的问题
- Apache Flink进行批处理时用的是DataSet,而进行流处理时用的是DataStream
- 真正的业务系统,批处理和流处理常常是 混合共生 的,或者 频繁变换 的
- 因此在设计数据处理框架时,需要有更高层级的数据抽象
- 不管批处理还是流处理,都用 统一的数据结构 表示,也需要 统一的编程API
- 即使业务需求改变,开发者也不需要频繁修改代码
以上所述就是小编给大家介绍的《大数据 -- 下一代数据处理技术》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Python数据处理(二):处理 Excel 数据
- R|数据处理|因子型数据
- Python数据抓取(1) —数据处理前的准备
- 大数据生态圈之流式数据处理框架选择
- 流式数据处理在百度数据工厂的应用与实践
- 5个大数据处理/数据分析/分布式工具
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Unix/Linux编程实践教程
Bruce Molay、杨宗源、黄海涛 / 杨宗源、黄海涛 / 清华大学出版社 / 2004-10-1 / 56.00元
操作系统是计算机最重要的系统软件。Unix操作系统历经了几十年,至今仍是主流的操作系统。本书通过解释Unix的工作原理,循序渐进地讲解实现Unix中系统命令的方法,让读者理解并逐步精通Unix系统编程,进而具有编制Unix应用程序的能力。书中采用启发式、举一反三、图示讲解等多种方法讲授,语言生动、结构合理、易于理解。每一章后均附有大量的习题和编程练习,以供参考。 本书适合作为高等院校计算机及......一起来看看 《Unix/Linux编程实践教程》 这本书的介绍吧!
HEX HSV 转换工具
HEX HSV 互换工具
HSV CMYK 转换工具
HSV CMYK互换工具