- 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个大数据处理/数据分析/分布式工具
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。