大数据技术原理与应用作业十
1. 试述流数据的概念。
流数据,即数据以大量、快速、时变的流形式持续到达。
2. 试述流数据的特点。
流数据具有如下特征:
- 数据快速持续到达,潜在大小也许是无穷无尽的
- 数据来源众多,格式复杂
- 数据量大,但是不十分关注存储,一旦经过处理,要么被丢弃,要么被归档存储
- 注重数据的整体价值,不过分关注个别数据
- 数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序
3. 在流计算的理念中,数据的价值与时间具备怎样的关系?
数据的价值随着时间的流失而降低
4. 试述流计算的需求。
对于一个流计算系统来说,它应达到如下需求:
- 高性能:处理大数据的基本要求,如每秒处理几十万条数据
- 海量式:支持TB级甚至是PB级的数据规模
- 实时性:保证较低的延迟时间,达到秒级别,甚至是毫秒级别
- 分布式:支持大数据的基本架构,必须能够平滑扩展
- 易用性:能够快速进行开发和部署
- 可靠性:能可靠地处理流数据
5. 试述MapReduce框架为何不适合用于处理流数据。
Hadoop 设计的初衷是面向大规模数据的批量处理,在使用MapReduce处理大规模文件时,一个大文件会被分解成许多个块分发到不同的机器上,每台机器并行运行MapReduce任务,最后对结果进行汇总输出。有时候,完成一个任务甚至要经过多轮的迭代。很显然,这种批量任务处理方式在时间延迟方面是无法满足流计算的实时响应需求的。
6. 将基于MapReduce的批量处理转为小批量处理,每隔一个周期就启动一次MapReduce作业,通过这样的方式来处理流数据是否可行?为什么?
不可行。
- 切分成小的片段,虽然可以降低延迟,但是也增加了任务处理的附加开销,而且还要处理片段之间的依赖关系,因为一一个片段可能需要用到前一一个片段的计算结果。
- 需要对MapReduce进行改造以支持流式处理,Reduce 阶段的结果不能直接输出,而是保存在内存中。这种做法会大大增加MapReduce框架的复杂度,导致系统难以维护和扩展。
- 降低了用户程序的可伸缩性,因为用户必须要使用MapReduce接口来定义流式作业。
总之,流数据处理和批量数据处理是两种截然不同的数据处理模式,MapReduce是专门面向静态数据的批量处理的,内部各种实现机制都为批处理做了高度优化,不适合用于处理持续到达的动态数据。正所谓“鱼和熊掌不可兼”,想设计一个既适合流计算又适合批处理的通用平台,虽然想法很好,但是实际上是很难实现的。因此,当前业界诞生了许多专门的流数据实时计算系统来满足各自需求。
7. 列举几个常见的流计算框架。
目前有三类常见的流计算框架和平台:商业级的流计算平台、开源流计算框架、公司为支持自