《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)优点:

  1. 相比于 Storm,RDD 的更容易做高效的容错处理;
  2. 采用的小批量处理方式。使它可以同时兼容批量数据处理和实时数据处理的逻辑与算法,方便一些需要历史数据和实时数据联合分析的特定应用场合。

(2)缺点:

  1. 无法实现毫秒级的响应。因为其将流数据分解为一系列批处理作业,产生多个 Spark 作业,导致对每一段的数据处理需要经过 Spark 作业的流程,产生较大时间开销;

② Storm 的优缺点:

(1)优点:

  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 )。

posted @ 2024-05-16 21:43  100%Jacker_Channel  阅读(434)  评论(0)    收藏  举报