1. SparkStreaming第一次运行不丢失数据

kafka参数auto.offset.reset设置为earliest从最初的偏移量开始消费数据。

2. SparkStreaming精准一次性消费
  1. 导致非精准一次性消费的原因:
    - 偏移量写入,但消费数据时宕机(丢失数据)
    - 消费数据,但写入偏移量时宕机(重复消费数据)
  2. 解决:
    事务。将消费数据和偏移量写入绑定为原子性操作,一起成功或失败。
3. SparkStreaming控制每秒消费数据的速度

设置spark.streaming.kafka.maxRatePerPartition参数来控制每秒从kafka拉取的条数

4. SparkStreaming背压机制

spark.streaming.backpressure.enabled参数为true,此时SparkStreaming会动态消费kafka中的数据,spark.streaming.kafka.maxRatePerPartition为上限。一般会同时设置这两个参数。

5. SparkStreaming一个stage的耗时

SparkStreaming中stage的耗时时长由最慢的task决定。因此数据倾斜时某个task运行慢会导致整个SparkStreaming运行慢。

6. 关闭SparkStreaming

流失任务需要7*24小时运行,但有时需要升级需要主动停止程序,分布式程序又无法做到一个个杀死进程。因此可以通过设置spark.streaming.stopGracefullyOnShutdown为true来根据JVM关闭而关闭StreamingContext。

7. SparkStreaming默认分区个数

SparkStreaming默认分区个数与所对接的kafka分区个数一致。SparkStreaming中一般不会使用repartition算子增加分区,因为会涉及到shuffle操作。

8. SparkStreaming消费kafka中数据的两种方式
  1. Receiver方式
    - revicer从kafka中获取的数据都是存储在Spark Executor的内存中(如果数据量暴增,很容易发生OOM),然后Spark会启动job去处理这些数据。
    - 然而默认配置下,这种方式可能会因为底层的失败或宕机丢失数据。如果要启用高可用机制,就必须启用SparkStreaming的预写机制(WAL)。该机制会同步的将接收到的kafka的数据写入分布式文件系统。当出现意外时,可以通过预写日志进行恢复。
  2. Direct方式
    - 这种方式会周期性的查询kafka来获得每个topic+partition的最新的offset,从而定义每个batch的offset范围。当处理数据的job启动后,使用低阶consumer api来获取Kafka指定offset范围的数据。
    - 优点1:简化并行读取。若读取多个partition数据,不需要创建多个DStream然后对数据进行合并操作,Spark会创建和Kafka分区数一样多的RDD partition,然后并行从kafka中读取数据;
    - 优点2:高性能。在基于Reciver的方式中,保证零数据丢失的方式时开启WAL机制,这种机制性能不高,相当于存储了两份数据,kafka本身就有高可用机制,会默认对数据复制一次,而WAL又复制一份。而Direct不需要对数据进行备份,直接通过Kafka副本进行恢复。
    - 一次且仅一次的事务机制。
  3. 对比
    - receiver方式是kafka高阶API在zookeeper中保存offset,配合WAL可以保证数据零丢失,但是无法保证数据被处理一次,可也能两次。因为Spark和zookeeper可能不同步。
    - direct使用kafka低阶API,SparkStreaming自动追踪消费的offset,并保存在checkpoint中。Spark自己是同步的,因此可以保证数据消费一次且仅消费一次。因此在实际生产环节使用Direct
9. 简述SparkStreaming窗口函数的原理

窗口函数就是在原来的SparkStreaming计算批次大小的基础上再次进行封装,每次计算多个批次的数,同时还需要传递一个滑动步长的参数,用来设置当次计算任务完成后下一次从什么地方开始计算。需要注意的是,滑动步长必须是采集周期大小的整数倍。

SparkStreaming面试题相关推荐

  1. sparkstreaming监听hdfs目录如何终止_Spark笔试题:Spark Streaming 反压机制

    Spark Streaming 反压机制是1.5版本推出的特性,用来解决处理速度比摄入速度慢的情况,简单来讲就是做流量控制.当批处理时间(Batch Processing Time)大于批次间隔(Ba ...

  2. 2021年大数据Spark(四十二):SparkStreaming的Kafka快速回顾与整合说明

    目录 Kafka快速回顾 消息队列: 发布/订阅模式: Kafka 重要概念: 常用命令 整合说明 两种方式 两个版本API 在实际项目中,无论使用Storm还是SparkStreaming与Flin ...

  3. 大数据面试题及答案 100道 (2021最新版)

    大数据面试题及答案[最新版]大数据高级面试题大全(2021版),发现网上很多大数据面试题都没有答案,所以花了很长时间搜集,本套大数据面试题大全 最近由于要准备面试就开始提早看些面试.笔试题.以下是自己 ...

  4. sqoop数据倾斜_北京卓越讯通大数据岗位面试题分享

    北京卓越讯通面试题 学长1 1)笔试 (1)JAVA支持的数据类型有哪些?什么是自动拆装箱? (2)AtomicInteger和Volatile等线程安全操作的关键字的理解个使用 (3)创建线程有几种 ...

  5. 大数据面试题及答案 汇总版

    版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/albg_boy/article/det ...

  6. 超详细!一文告诉你 SparkStreaming 如何整合 Kafka !附代码可实践

    来源 | Alice菌 责编 | Carol 封图 |  CSDN 下载于视觉中国 相信很多小伙伴已经接触过 SparkStreaming 了,理论就不讲太多了,今天的内容主要是为大家带来的是 Spa ...

  7. 你不知道的BAT大数据面试题

          你不知道的BAT大数据面试题 1.kafka的message包括哪些信息 一个Kafka的Message由一个固定长度的header和一个变长的消息体body组成 header部分由一个字 ...

  8. 超详细!一文详解 SparkStreaming 如何整合 Kafka !附代码可实践

    来源 | Alice菌 责编 | Carol 封图 |  CSDN 下载于视觉中国 出品 | CSDN(ID:CSDNnews) 相信很多小伙伴已经接触过 SparkStreaming 了,理论就不讲 ...

  9. 2021年超全超详细的最新大数据开发面试题,附答案解析

    版本 时间 描述 V1.0 2020-12-18 创建 V1.2 2021-01-17 新增 spark 面试题 V1.3 2021-01-18 新增 kafka 面试题 V1.4 2021-01-2 ...

最新文章

  1. 适用于SharePoint 2013 的 CAML Desinger
  2. MySQL 目录结构信息
  3. jQuery 效果——显示隐藏/滑动/淡入淡出/自定义动画||事件切换——简洁版滑动下拉菜单
  4. jquery 手型 鼠标穿过时_专业电竞鼠标有什么独到之处?看完核技瑞你就知道了
  5. php 获取文件扩展名的方法,PHP获取文件扩展名的4种方法,_PHP教程
  6. Java元数据区的概念_java之元数据(metadata)-Go语言中文社区
  7. java 数组 equals_java中用equals比较两个内容相同的字符数组
  8. 为什么中国人穷得只剩房子
  9. Redis 存储SQL表格 方法
  10. php 7.4 Array and string offset access syntax with curly braces is deprecated
  11. [C#][共享网络] Netsh命令实现共享,并查询连接用户
  12. 2021L3HCTF luuuuua Writeup
  13. raid卷的作用_硬盘raid功能是什么意思,有何作用
  14. 京东线报-京东实时线报-高级京东线报接口
  15. 读《Web全栈工程师的自我修养》
  16. excel2latex表格竖线截断不连续不连贯问题一键解决
  17. iOS开发中使用代码控制横竖屏的切换
  18. 前端性能优化--测试工具
  19. 教师考核成绩评定c语言程序,C语言课设--教师评价系统
  20. Eureka-使用教程

热门文章

  1. java串口rxtx下载_WINDOWS环境下JAVA串口RXTX编程DEMO
  2. 一起来捉妖找不到服务器,一起来捉妖妖怪分布大全 所有妖灵不同地点位置详解...
  3. 双分支定向耦合器 HFSS仿真
  4. SAP ScriptForms 教程系列一
  5. 自动识别查找特定的串口号 比如设备管理器中Modem属性里的串口 按这个方法可以获取设备管理器任意信息。C++
  6. 【HTML教程(一)】HTML标签、模板和实例
  7. FTP上传文件报错200 PORT command successful. Consider using PASV. 553 Could not create file.
  8. 移动云,中国移动算力网络棋局中的关键一子
  9. 网约叫车出行小程序开发制作功能介绍
  10. linux内核裁剪的具体过程和选择