1.试述流数据的概念。
在时间分布和数量上无限的一系列动态数据集合体。
2.试述流数据的特点。
数据持续到达;数据来源众多;
数据量大,但是不十分关注存储;注重数据的整体价值,不过分关注个别数据;
数据顺序颠倒,或者不完整,系统无法控制将要处理的新到达的数据元素的顺序。
3.在流计算中的理念中,数据的价值与时间具备怎样的关系?
数据的价值随着时间的流逝而降低。
4.试述流计算的需求。
高性能、海量式、实时性、分布性、易用性、可靠性。
5.试述MapReduce框架为何不适合用于处理流数据。
完成一个任务甚至需要经过多轮的迭代,很显然不能满足在时间延迟方面的实时响应需求。
6.将基于MapReducee的批量处理转为小批量处理,每个一个周期就启动一次MapRedcue作业,通过这样的方式来处理流数据是否可行?为什么?
不可行。
切分成小的片段的同时也增加了任务处理的附加开销,还要处理片段之间的依赖关系;
Reduce阶段的结果不能直接输出,而是保存在内存中;
降低了用户程序的可伸缩性。
7.列举几个常见的流计算框架。
IBM InfoSphere Streams;IBM StreamBase;Twitter Storm;Yahoo;
Facebook Puma;DStream;Super Mario
8.试述流计算的一般处理流程。
数据实时采集、数据实时计算、实时查询服务。
9.试述流计算与传统的数据处理流程之间的主要区别。
传统数据处理的数据是旧的;查询传统数据处理的数据需要主动发出请求。
10.试述数据实时采集系统的一般组成部分。
Agent、Collector和Store。
11.试述流计算系统与传统的数据处理系统对所采集数据的处理方式有什么不同。
流处理系统处理的是实时的数据,而传统的数据处理系统处理的是预先存储好的静态数据;
用户通过流处理计算系统获取的是实时结果,而传统的数据处理系统获取的是过去某一时刻的结果。
12.试列举几个流计算的应用领域。
业务分析、实时交通。
13.流计算适用于具备怎样特点的场景?
适合于具备需要处理持续到达的流数据、对数据处理有较高实时性要求的场景。
14.试述流计算为业务分析待来了怎样的改变。
能在秒级别内得到实时的分析结果,有利于根据当前得到分析结果及时地作出决策。
15.除了实时分析和实时交通,试在列举一个适合采用流计算的应用场景,并描述流计算可带来怎样的改变。
以淘宝网“双11”的促销活动为例,商家会在淘宝网上投放相应的广告来吸引用户,同时商家会准备多个广告样式、文案,根据广告效果来作出调整,有了流计算,可以在秒级别内的实时计算分析结果作出相应调整。
16.试述Storm框架如何改变开发人员开发实时应用的方式。
以往除了要关注处理逻辑,还要为实时数据的 获取、传输、存储大伤脑筋,但是现在开发人员基于开源流处理框架Storm,可以快速搭建一套健壮、易用的实时流处理系统。
17.为什么说使用Storm流处理框架开发实时应用,其开发成本较低?
现在开发人员基于开源流处理框架Storm,可以快速搭建一套健壮、易用的实时流处理系统。配合Hadoop等平台,就可以低成本开发出实时产品。
18.试述Twitter采用的分层数据处理框架。
实时系统和 批处理系统组成的分层数据处理架构。
19.试列举几个Storm框架的主要特点。
整合性;简易的API;可扩展性;
容错性;可靠的消息处理;支持各种编程语言;
快速部署;免费、开源。
20.试列举几个Storm框架的应用领域。
实时分析、在线机器学习、持续计算、远程RPC等。
21.Storm的主要术语包括Streams、Spouts、Bolts、Topology和Stream Groupings,请分别描述这几个术语。
Streams:是一个无限的Tuple序列。
Spouts:Stream的源头抽象。
Bolts:Streams的状态转换过程。
Topology:Spouts和Bolts组成的网络。
Stream Groupings:用于告知Topology如何在两个组件间进行Tuple的传送。
22.试述Tuple的概念。
Tuple即元组,是元素的有序列表。
23.一个Topology由哪些组件组成?
Spouts和Bolts
24.不同的Bolts之间如何传输Tuple?
通过Grouping()系列方法定义了Tuple的发送方式。
25.试列举几种Stream Grouping的方式。
ShuffleGropuing;FieldsGrouping;AllGrouping;GlobalGrouping;NonGrouping;DirectGrouping。
26.试述MapReduce Job和Storm Topology的区别与联系。
在Haoop上运行的是MapReduce作业,而在Storm上运行的是“Topology”。但两者的任务大不相同,其中主要的不同是一个MapReduce作业最终会完成计算并结束运行,而一个Topology将持续处理信息。
27.Storm集群中的Master节点和Worker节点各自运行什么后台进程?这些进程又分别负责什么工作?
Nimbus:负责在集群范围内分发代码、为Worker分配任务和检测障碍。
Supervisor:负责监听分配给它所在机器的工作。
28.试述Zookeeper在Storm框架中作用。
负责Nimbus和多个Supervisor之间的所有协调工作。
29.Nimbus进程或Supervisor进程都是快速失败和无状态的,这样的设计有什么优点?
一旦重启,两个进程借助Zookeeper将状态信息存放在Zookeeper中或本地磁盘中进行恢复并继续工作。使Storm很稳定。
30.Nimbus进程或Supervisor进程意外终止后,重启时能否恢复到终止之前的状态?为什么?
两个进程借助Zookeeper将状态信息存放在Zookeeper中或本地磁盘中进行恢复并继续工作。使Storm很稳定。
31.试述Storm框架的工作流程。
客户端提交Topology到Storm集群中;
Nimbus将分配给Supervisor的任务写入Zookeeper;
Supervisor从Zookeeper中获取所分配的任务,并启动Worker进程;
Worker进程执行具体的任务。
32.试述Storm框架实现单词统计的一般流程。
从Spout中发送Stream;
用于分割单词的Bolts将接受的句子分解为独立的单词,将单词作为Tuple的字段名发送出去;
用于计数的Bolts接受表示单词的Tuple,并对其进行统计;
输出每个单词以及单词出现过的次数。
33.试述采用MapReduce框架进行单词统计与采用Storm框架进行单词统计有什么区别。
MapReduce使用的是Map和Reduce的抽象,而Storm使用的是Spout和Bolts的抽象。
34.Storm框架中的单词统计Topology定义如下,其中定义了两个Bolt,试述两个Bolts各自完成的功能,以及中间结果如何在两个Bolts之间传输。
第一个Bolt用于单词的分割,该Bolt中的任务随机接收Spout发送的句子,并从接收的句子中提取出单词;
第二个Bolt接收第一个Bolt发送的Tuple进行处理,即统计分割厚的单词出现的次数;
每个Bolt使用了Groupings()系列定义了Tuple的发送方式。
35.在Storm的单词统计实例中,为何需要使用fieldsGrouping()方法保证相同单词发送到同一个任务上进行处理?
通过fieldsGrouping()方法,在“word”上具有相同字段值的所有Tuple将发送到同一个任务中进行统计,从而保证了统计的准确性。
@font-face { font-family: 宋体;}@font-face { font-family: 宋体;}@font-face { font-family: "@宋体";}@font-face { font-family: Calibri;}@font-face { font-family: SimSun;}@font-face { font-family: "Noto Sans CJK SC";}@font-face { font-family: "@Noto Sans CJK SC";}@font-face { font-family: "@SimSun";}p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0 0 0; text-align: justify; font-size: 14px; font-family: Calibri; }p.cjk, li.cjk, div.cjk { margin: 0 0 0; font-size: 16px; font-family: "Noto Sans CJK SC"; }.MsoChpDefault { font-size: 13px; }div.WordSection1 { }

