大数据总结【第十章:流计算】

【单选题】

  1. 流计算秉承一个基本理念,即数据的价值随着时间的流逝而 (),如用户点击流。
    A、升高
    B、不变
    C、降低
    D、不确定
    我的答案:C
  2. Hadoop运行的是MapReduce任务,类似地,Storm运行的任务叫做()。
    A、Bolt
    B、Spout
    C、Tuple
    D、Topology
    我的答案:D
  3. 对于一个流计算系统来说,它应达到如下哪些需求
    A、可靠性
    B、海量式
    C、分布式
    D、高性能
    我的答案:ABCD
    4【多选题】数据采集系统的基本架构包括哪些部分
    A、Controller
    B、Store
    C、Agent
    D、Collector
    我的答案:BCD
    5【多选题】以下哪些是开源的流计算框架
    A、Facebook Puma
    B、Yahoo! S4
    C、Twitter Storm
    D、IBM InfoSphere Streams
    我的答案:BC
    6【多选题】Storm中的Stream Groupings有哪几种方式
    A、按照字段分组
    B、直接分组
    C、不分组
    D、全局分组
    我的答案:ABCD
    7【填空题】流计算处理过程一般包含三个阶段:(数据实时采集),数据实时计算和实时查询服务。
    8【填空题】Spark Streaming最主要的抽象是(DStream),中文全称是离散化数据流,表示连续不断的数据流。
    9【填空题】Storm的流数据单位是(Tuple),Spark Streaming的流数据单位是DStream,Samza的流数据单位是消息。
    10【判断题】Spark Streaming和Storm最大的区别在于:Spark Streaming无法实现毫秒级的流计算,而Storm可以实现毫秒级响应。(T)

数据类型:静态数据,流数据
针对不同类型数据的处理:批量计算,实时计算
流计算的特征:火车站候车室实例

流计算与hadoop

●Hadoop设计的初衷是面向大规模数据的批量处理,每台机器并行运行MapReduce任务,最后对结果进行汇总输出
●MapReduce是专门面向静态数据的批量处理的,内部各种实现机制都为批处理做了高度优化,不适合用于处理持续到达的动态数据
●可能会想到一种“变通”的方案来降低批处理的时间延迟–将 基于MapReduce的批量处理转为小批量处理,将输入数据切成小的片段,每隔一个周期就启动- -次MapReduce作业。但这种方式也无法有效处理流数据
-切分成小片段,可以降低延迟,但是也增加了附加开销,还要处理片段之间依赖关系
-需要改造MapReduce以支持流式处理
结论:鱼和熊掌不可兼得,Hadoop 擅长批处理,不适合流计算

开源流计算框架Storm

Storm简介

●Twitter Storm是-一个免费、开源的分布式实时计算系统,Storm 对于实时计算的意义类似于Hadoop对于批处理的意义,Storm 可以,简单、高效、可靠地处理流数据,并支持多种编程语言
●Storm框架可以方便地与数据库系统进行整合,从而开发出强大的实时计算系统
●Twitter是全球访问量最大的社交网站之一,Twitter 开发Storm流处理框架也是为了应对其不断增长的流数据实时处理需求
大数据总结【第十章:流计算】_第1张图片

Storm的特点

●Storm可用于许多领域中,如实时分析、在线机器学习、持续计算、远程RPC、数据提取加载转换等.
●Storm具有以下主要特点:

  • 整合性: Storm 可方便地与队列系统和数据库系统进行整合
  • 简易的API : Storm的API在使用上即简单又方便
  • 可扩展性: Storm的并行特性使其可以运行在分布式集群中
  • 容错性: Storm可自动进行故障节点的重启、任务的重新分配
  • 可靠的消息处理:Storm保证每个消息都能完整处理
  • 支持各种编程语言:Storm支持使用各种编程语言来定义任务
  • 快速部署: Storm可以快速进行部署和使用
  • 免费、开源:Storm是一款开源框架,可以免费使用

流计算处理流程的三个阶段

●流计算的处理流程一般包含 三个阶段:数据实时采集、数据实时计算、实时查询服务
大数据总结【第十章:流计算】_第2张图片

数据实时采集

●数据实时采集阶段通常采集多个数据源的海量数据,需要保证实时性、低延迟与稳定可靠
●以日志数据为例,由于分布式集群的广泛应用,数据分散存储在不同的机器上,因此需要实时汇总来自不同机器上的日志数据
●目前有许多互联网公司发布的开源分布式日志采集系统均可满足每秒数百MB的数据采集和传输需求,如:

  • Facebook的Scribe
  • LinkedIn 的Kafka
  • 淘宝的Time Tunnel
  • 基于Hadoop的Chukwa和Flume

数据采集系统的基本架构一-般有以下三个部分:

  • Agent:主动采集数据,并把数据推送到Collector部分
  • Collector :接收多个Agent的数据,并实现有序、可靠、高性能的转发
  • Store: 存储Collector转发过来的数据(对于流计算不存储数据
    大数据总结【第十章:流计算】_第3张图片

数据实时计算

●数据实时计算阶段对采集的数据进行实时的分析和计算,并反馈实时结果
●经流处理系统处理后的数据,可视情况进行存储,以便之后再进行分析计算。在时效性要求较高的场景中,处理之后的数据也可以直接丢弃
大数据总结【第十章:流计算】_第4张图片

实时查询服务

●实时查询服务:经由流计算框架得出的结果可供用户进行实时查询、展示或储存
●传统的数据处理流程,用户需要主动发出查询才能获得想要的结果。而在流处理流程中,实时查询服务可以不断更新结果,并将用户所需的结果实时推送给用户
●虽然通过对传统的数据处理系统进行定时查询,也可以实现不断地更新结果和结果推送,但通过这样的方式获取的结果,仍然是根据过去某一时刻的数据得到的结果,与实时结果有着本质的区别
●可见,流处理系统与传统的数据处理系统有如下不同:
- 流处理系统处理的是实时的数据,而传统的数据处理系统处理的是预先存储好的静态数据
- 用户通过流处理系统获取的是实时结果,而通过传统的数据处理系统,获取的是过去某- -时刻的结果
- 流处理系统无需用户主动发出查询,实时查询服务可以主动将实时结果推送给用户

Spark Streaming 与Storm的对比

●Spark Streaming和Storm最大的区别在于,Spark Streaming无法实现毫秒级的流计算,而Storm可以实现毫秒级响应
●Spark Streaming构建在Spark上,- 方面是因为Spark的低延迟执行引擎( 100ms+ )可以用于实时计算,另一方面,相比于Storm,RDD 数据集更容易做高效的容错处理
●Spark Streaming采用的小批量处理的方式使得它可以同时兼容批量和实时数据处理的逻辑和算法,因此,方便了一些需要历史数据和实时数据联合分析的特定应用场合

你可能感兴趣的:(大数据学习)