《Spark编程基础》(Scala版)第七章简答题答案(自制)
7 Spark Streaming
简答题
T1 请阐述静态数据和流数据的区别?
答:静态数据是可以看作是静止不动的,适合进行批量计算;流数据是指数据以大量、快速、时变的流形式持续到达的,适合进行实时计算。同时,流计算被处理后,只有部分进入数据库成为静态数据,其余部分则被丢弃。
T2 请阐述批量计算和实时计算的区别。🌱
答:批量计算是以"静态数据"为对象,可以在很充裕的时间内对海量数据进行批量处理,计算得到有价值的信息;实时计算需要在数据到达时立即处理,实时得到计算结果,只有部分最终会成为有效信息。
T3 对一个流计算而言,在功能设计上应该实现哪些需求?🌱
答:
① 高性能:这是处理大数据的基本要求,如每秒处理几十万条数据;
② 海量式:支持 TB 级甚至是 PB 级的数据规模;
③ 实时性:必须保证一个较低的延迟时间;
④ 分布式:支持大数据的基本架构,必须能够平滑扩展;
⑤ 易用性:能够快速进行开发和部署;
⑥ 可靠性:能可靠的处理流数据。
T4 请阐述典型的流计算框架有哪些?
答:可以分为三类:
① 商业级的流计算平台,如 IBM StreamBase;
② 开源流计算框架,如 Twitter Strom;
③ 公司为支持自身业务开发的流计算框架,如 DStream。
T5 请阐述流计算的基本处理流程。🌱
答:
① 数据实时采集:采集多个数据源的海量数据,需要保证实时性、低延迟与稳定可靠;
② 数据实时计算:对采集的数据进行实时地进行分析计算,并反馈实时结果;
③ 数据实时查询:不断更新结果,并将用户所需的结果实时推送给用户。
T6 请阐述数据采集系统各部分的组成及其功能。
答:通常有三个部分:
① Agent:主动采集数据,并将数据推送到 Colletcor 部分;
② Collector:接收多个 Agent 数据,并实现有序、可靠、高性能的转发;
③ Store:存储 Collector 转发过来的数据。
T7 请阐述实时计算的基本流程。❌
答:流处理系统接受数据采集系统不断发来的实时数据,实时地进行分析计算,并反馈实时结果;经流处理系统处理后的数据,可视情况存储,以便之后进行分析计算;在时效性较高的场景中,处理后的数据也可以直接丢弃。
T8 请阐述 Spark Streaming 设计的基本原理。
答:是将实时数据流以时间片为单位进行拆分,然后采用 Spark 引擎以类似批处理的方式处理每个时间片数据。
T9 请对 Spark Streaming 和 Storm 进行比较,它们各自有什么优缺点?
答:
① Spark Streaming 的优缺点:
(1)优点:
- 相比于 Storm,RDD 的更容易做高效的容错处理;
 - 采用的小批量处理方式。使它可以同时兼容批量数据处理和实时数据处理的逻辑与算法,方便一些需要历史数据和实时数据联合分析的特定应用场合。
 
(2)缺点:
- 无法实现毫秒级的响应。因为其将流数据分解为一系列批处理作业,产生多个 Spark 作业,导致对每一段的数据处理需要经过 Spark 作业的流程,产生较大时间开销;
 
② Storm 的优缺点:
(1)优点:
- 处理的数据单位为元组,只会产生极小的延迟。
 
(2)缺点:没有 Spark Streaming 上述优点。
这缺点又要重新说一遍,但不写这个格式又对不上题目要求。
T10 企业应用中的”Hadoop+Storm“结构是如何部署的。
答:Hadoop 和 Storm 框架部署在资源管理框架 YARN(或 Mesos) 之上,接受统一的资源管理和调度,并共享底层的数据存储;其中 Hadoop 负责对批量历史数据的实时查询和离线分析,而 Storm 负责对流数据的实时处理。
T11 请阐述 Spark Streaming 的工作机制。🌱
答:Spark Streaming 中的组件 Receiver 作为一个长期运行的任务(task)运行一个 Executor 上,每个 Receiver 会负责一个 Dstream 输入流,接受到数据源发来的数据后,会提交给 Spark Streaming 程序处理,处理后的结果既可以交给可视化组件进行可视化展示,也可以写入 HDFS 或者 HBase 中。
Receiver 收到数据源的数据,交给程序处理,结果可以可视化展示或者写入HDFS或者HBase。
T12 阐述 Spark Streaming 程序编写的基本步骤。🌱
答:
① 通过创建输入 DStream 来定义输入源。输入源会源源不断地产生数据,并将数据发送给 Spark Streaming,Receiver 收到数据后会交给用户自定义的 Spark Streaming 程序处理;
② 通过对 DStream 应用转换操作和输出操作来定义流计算;
③ 调用 StreamingContext 对象中的 start() 方法来开始接受数据和处理流程;
④ 通过调用 StreamingContext 对象的 awaitTermination() 方法来等待计算流计算进程结束或者调用 stop() 方法手动结束流计算进程。
定义输入源(DStream)->定义计算过程(DStream;转换 输出操作)->开始(StreamingContext;start())->结束(等待,awaitTermination() ;手动 stop())
T13 Spark Streaming 主要包括哪 3 种类型的基本数据源?
答:文件流、套接字流和 RDD 队列流。
T14 请阐述使用 Kafka 作为 Spark 数据源时,如何编写 Spark Streaming 应用程序。
答:
① 编写生产者(Producer)程序;
② 编写消费者(Consumer)程序;
③ 编写日志格式设置程序;
④ 编译打包程序;
⑤ 运行程序。
T15 请阐述 Dstream 有状态转换操作和无状态转换操作区别。
答:
① 无状态转换操作:不会记录历史状态信息,每次对新的批次数据进行处理时,只会记录当前批次数据的情况;
② 有状态转换操作:
(1)通过滑动窗口记录历史状态信息,每次对新的批次数据进行处理时,如果之前出现过且仍在窗口内,会将新的状态信息和历史状态信息结合记录;如果之前未出现过,则仅记录新的状态信息。
(2)支持跨批次操作( updateStateByKey )。

                
            
        
浙公网安备 33010602011771号