首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >生产环境中的面试问题,实时链路中的Kafka数据发现某字段值错误,怎么办?

生产环境中的面试问题,实时链路中的Kafka数据发现某字段值错误,怎么办?

作者头像
王知无-import_bigdata
发布于 2023-11-14 10:51:25
发布于 2023-11-14 10:51:25
69725
举报

大家好呀,今天分享的是一个生产环境中遇到的问题。也是群友遇到的一个面试问题。

原问题是:

早晨8点之后发现kafka的record中某个字段的值出现了错误,现在已经10点了,需要对kafka进行数据订正,怎么样定位和解决这个问题,达到最快响应和最小影响。

这个问题是一个很「大」的问题,我们挑重点的说。

首先,我们在做数据开发的过程中涉及到一些基本要素:时效性保障、质量保障、稳定性保障,此外还有敏捷性、可管理性等其他要素。根据公司业务场景和重要性不同,重点也有所侧重。

时效性保障

时效性保障主要关注的几个方面:

  • Kafka延迟监控:Flink消费产生的lag、业务数据下发的延迟;
  • 在分层和时效延迟上做好平衡,保证链路的可复用的同时避免链路过程产生额外的时效问题;
  • 数据乱序;
  • 压测,应对流量高峰期,特别是大促场景下,提前做好资源保障、任务优化等措施;
  • 设置延时基线,通过优化程序代码、资源、解决倾斜与反压等问题,使其控制在基线内;
  • 指标监控,监控任务FailOver情况、CheckPoint指标、GC情况、作业反压等,出现异常告警。

数据质量保障

这是个老生常谈的话题了。我们在离线时代已经有了非常完善的数据质量监控体系。大家重点看加粗内容即可。

数据一致性监控
  1. 实时计算端到端的一致性。 常用手段就是通过输出幂等方式保障,这种方式要求输出使用存储介质支持重写,对于不支持幂等的存储,比较常用的就是DWD层的kafka, 可能会产生重复的数据,那么在下游使用的时候可以使用row_number()语法进行去重,保证相同的key不会被多次计算;
  2. 离线与实时的一致性,需要保证使用数据源一致、加工业务逻辑一致
数据完整性监控

保证数据从源头到数据加工再到前端数据展示,不能因为加工逻辑权限,存储异常,前端展现异常等原因导致数据丢失。例如:

  1. 数据源层出现背压时,导致数据源头(mq,Kafka)消息积压,积压严重时导致资源耗尽,进而导致数据丢失;
  2. 数据处理层数据加工未按照需求进行加工,导致目标有效数据丢失;
  3. 数据存储层的存储容量写满时,导致新数据无法继续写入导致数据丢失;
  4. 数据加工正确性、数据加工及时性、数据快速恢复性构成数据完整性
数据加工正确性监控

目标源数据按照业务需求加工成目标有效数据,目标有效数据根据不同维度不同指标计算成需要展示的不同指标数据。例如:

  1. 数据源层原始数据包含不同联盟的点击数据,那么数据处理层过滤掉不需要的联盟点击数据,并将目标联盟的点击数据根据媒体和创意信息补齐当前点击所属的账号、计划、单元;
  2. 业务层根据媒体,账号、计划、单元不同维度计算出对应的点击总量;
数据快速恢复性

数据在流转路径中因为异常导致流转中断,数据停止在某一个环节中,当异常解决,系统恢复正常时,停止的数据(停止的数据)需要快速恢复流转,并且这种恢复是正确的,不应该存在重复的消费和加工或者遗漏。例如:

  1. 数据处理层因为消费程序性能问题导致消息积压,性能问题解决后数据挤压问题逐步得到缓解直到恢复正常水平;
  2. 数据处理层因为消费程序bug导致程序崩溃,重启后数据消费正常;

稳定性保障

  • 任务压测

提前压测应对流量高峰期,特别是大促场景下,提前做好资源保障、任务优化等措施。

  • 任务分级

制定保障等级,从任务影响面大小、数据使用方来划分,一般情况公司层面优先于部门层面,外部使用优先于内部使用,高优先级任务需要优先/及时响应、必要情况下做双链路保障机制。

  • 做好指标监控

指标监控,监控任务failover情况、checkpoint指标、GC情况、作业反压等,出现异常告警。

  • 高可用HA

整个实时Pipeline链路都应该选取高可用组件,确保理论上整体高可用;在数据关键链路上支持数据备份和重放机制;在业务关键链路上支持双跑融合机制

  • 监控预警

集群设施层面,物理管道层面,数据逻辑层面的多方面监控预警能力

  • 自动运维

能够捕捉并存档缺失数据和处理异常,并具备定期自动重试机制修复问题数据

回到问题本身

再回答问题本身,我们可以从下面三个方面回答:

  1. 事前

本问题是从数据质量角度产生的问题,可以从数据质量监控的角度,有必要的数据质量监控和对应的报警;

  1. 事中

在问题发生后,要有正确的SOP流程处理数据异常。例如,通过公告、默认值、开关等方法,降低数据质量带来的舆情影响;

  1. 事后

要进行数据修复。是否需要进行数据回溯,或者通过离线回补等方式进行修复。

当然这只是一个思路,你能结合工作中的具体场景,举例说明就更好啦。

如果这个文章对你有帮助,不要忘记 「在看」 「点赞」 「收藏」 三连啊喂!

2022年全网首发|大数据专家级技能模型与学习指南(胜天半子篇)

互联网最坏的时代可能真的来了

我在B站读大学,大数据专业

我们在学习Flink的时候,到底在学习什么?

193篇文章暴揍Flink,这个合集你需要关注一下

Flink生产环境TOP难题与优化,阿里巴巴藏经阁YYDS

Flink CDC我吃定了耶稣也留不住他!| Flink CDC线上问题小盘点

我们在学习Spark的时候,到底在学习什么?

在所有Spark模块中,我愿称SparkSQL为最强!

硬刚Hive | 4万字基础调优面试小总结

数据治理方法论和实践小百科全书

标签体系下的用户画像建设小指南

4万字长文 | ClickHouse基础&实践&调优全视角解析

【面试&个人成长】2021年过半,社招和校招的经验之谈

大数据方向另一个十年开启 |《硬刚系列》第一版完结

我写过的关于成长/面试/职场进阶的文章

当我们在学习Hive的时候在学习什么?「硬刚Hive续集」

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据技术与架构 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
25 条评论
热度
最新
请问答题可选python 和 scala吗
请问答题可选python 和 scala吗
回复回复点赞举报
请问,cca175考试难吗?需要参加培训吗?
请问,cca175考试难吗?需要参加培训吗?
33点赞举报
个人感觉不难,就是常用的一些Spark的操作得掌握
个人感觉不难,就是常用的一些Spark的操作得掌握
回复回复点赞举报
自己刷模拟题就可以了,可以不用参加培训
自己刷模拟题就可以了,可以不用参加培训
回复回复点赞举报
查看全部3条回复
請問你是怎樣準備考試的?在哪裡可以找的考試相關的材料嗎?謝謝!
請問你是怎樣準備考試的?在哪裡可以找的考試相關的材料嗎?謝謝!
11点赞举报
我是刷模拟题的
我是刷模拟题的
回复回复点赞举报
感谢分享! 请问如果要求保存结果为某个delimiter的text file, 可以保存为csv格式吗?我的理解是csv也是某种text格式。 比如 df.write.format("csv").option("sep", "\t").save("\some\path").
感谢分享! 请问如果要求保存结果为某个delimiter的text file, 可以保存为csv格式吗?我的理解是csv也是某种text格式。 比如 df.write.format("csv").option("sep", "\t").save("\some\path").
11点赞举报
如果说明了要保存成csv那就保存成csv就可以了。如果说明是文本格式,那用saveText保存成文本文件就ok了。
如果说明了要保存成csv那就保存成csv就可以了。如果说明是文本格式,那用saveText保存成文本文件就ok了。
回复回复点赞举报
1、英文要求高么,怕看不懂题目,能用在线翻译吗?2、文本编辑器使用自己的还是它提供的?3、考试环境是一个系统的交互环境么还是写完答案直接提交?
1、英文要求高么,怕看不懂题目,能用在线翻译吗?2、文本编辑器使用自己的还是它提供的?3、考试环境是一个系统的交互环境么还是写完答案直接提交?
11点赞举报
考试题目的英语还是挺基础的。基础的英语水平要有。考试环境是一个CentOS系统,文本编辑器使用这个系统里面的文本编辑器即可。具体的信息你可以看这个CCA175的主页 https://www.cloudera.com/about/training/certification/cca-spark.html
考试题目的英语还是挺基础的。基础的英语水平要有。考试环境是一个CentOS系统,文本编辑器使用这个系统里面的文本编辑器即可。具体的信息你可以看这个CCA175的主页 https://www.cloudera.com/about/training/certification/cca-spark.html
回复回复点赞举报
请问可以使用自己电脑上的编辑器进行写代码,在复制去执行吗?能详细描述一下考试环境吗?
请问可以使用自己电脑上的编辑器进行写代码,在复制去执行吗?能详细描述一下考试环境吗?
44点赞举报
不可以,只能用提供的机器。考试环境就是一个远程的centOS的服务器,屏幕比较小,通过浏览器来访问的。
不可以,只能用提供的机器。考试环境就是一个远程的centOS的服务器,屏幕比较小,通过浏览器来访问的。
回复回复点赞举报
考试的时候需要开启摄像头?一般笔记本上的摄像头可以吗?
考试的时候需要开启摄像头?一般笔记本上的摄像头可以吗?
回复回复点赞举报
查看全部4条回复
请问试题是中文吗,报名网址能发我一下吗,找了半天没找到。
请问试题是中文吗,报名网址能发我一下吗,找了半天没找到。
77点赞举报
试题是英文的。
试题是英文的。
回复回复点赞举报
是在cloudera官网报的名吗
是在cloudera官网报的名吗
回复回复点赞举报
查看全部7条回复
感谢分享
感谢分享
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
2021年大数据Spark(三十二):SparkSQL的External DataSource
在SparkSQL模块,提供一套完成API接口,用于方便读写外部数据源的的数据(从Spark 1.4版本提供),框架本身内置外部数据源:
Lansonli
2021/10/09
2.9K0
第三天:SparkSQL
Spark SQL是Spark用来处理结构化数据的一个模块,它提供了2个编程抽象:DataFrame和DataSet,并且作为分布式SQL查询引擎的作用。 我们已经学习了Hive,它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduc的程序的复杂性,由于MapReduce这种计算模型执行效率比较慢。所有Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快!
sowhat1412
2020/11/05
14.5K0
第三天:SparkSQL
PySpark 读写 CSV 文件到 DataFrame
PySpark 在 DataFrameReader 上提供了csv("path")将 CSV 文件读入 PySpark DataFrame 并保存或写入 CSV 文件的功能dataframeObj.write.csv("path"),在本文中,云朵君将和大家一起学习如何将本地目录中的单个文件、多个文件、所有文件读入 DataFrame,应用一些转换,最后使用 PySpark 示例将 DataFrame 写回 CSV 文件。
数据STUDIO
2023/09/04
3.3K0
PySpark 读写 CSV 文件到 DataFrame
Sqoop工具模块之sqoop-import 原
    import工具从RDBMS向HDFS导入单独的表。表格中的每一行都表示为HDFS中的单独记录。记录可以存储为文本文件(每行一个记录),或以Avro或SequenceFiles的二进制表示形式存储。
云飞扬
2019/03/13
6.6K0
sqoop之旅3-数据导入
sqoop-import introduction 导入的主要语法是 $ sqoop import (generic-args) (import-args) $ sqoop-import (generic-args) (import-args) 命令格式为: $ sqoop import --connect \ (连接字符) --username \ (用户名) --password [-P |--password-file]\ (单个密码或用文件形式,文件权限一般为400) --query \ (查
皮大大
2021/03/02
1.1K0
基于 Spark 的数据分析实践
Spark是在借鉴了MapReduce之上发展而来的,继承了其分布式并行计算的优点并改进了MapReduce明显的缺陷。Spark主要包含了Spark Core、Spark SQL、Spark Streaming、MLLib和GraphX等组件。
yuanyi928
2019/06/19
2.1K0
基于 Spark 的数据分析实践
SparkSQL快速入门系列(6)
上一篇《SparkCore快速入门系列(5)》,下面给大家更新一篇SparkSQL入门级的讲解。
刘浩的BigDataPath
2021/04/13
2.7K0
SparkSQL快速入门系列(6)
Sqoop快速入门系列(3) | Sqoop常用命令及参数解析(建议收藏!!!)
  这里给大家列出来了一部分Sqoop操作时的常用参数,以供参考,需要深入学习的可以参看对应类的源代码。
不温卜火
2020/10/28
2.7K0
SparkSql学习笔记一
1.简介     Spark SQL是Spark用来处理结构化数据的一个模块,它提供了一个编程抽象叫做DataFrame并且作为分布式SQL查询引擎的作用。     为什么要学习Spark SQL?     我们已经学习了Hive,它是将Hive SQL转换成MapReduce然后提交到集群上执行,大大简化了编写MapReduce的程序的复杂性,由于MapReduce这种计算模型执行效率比较慢。所以Spark SQL的应运而生,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快!同时Spark SQL也支持从Hive中读取数据。 2.特点     *容易整合     *统一的数据访问方式     *兼容Hive     *标准的数据连接 3.基本概念     *DataFrame         DataFrame(表) = schema(表结构) + Data(表结构,RDD)             就是一个表 是SparkSql 对结构化数据的抽象             DataFrame表现形式就是RDD         DataFrame是组织成命名列的数据集。它在概念上等同于关系数据库中的表,但在底层具有更丰富的优化。DataFrames可以从各种来源构建,         DataFrame多了数据的结构信息,即schema。         RDD是分布式的Java对象的集合。DataFrame是分布式的Row对象的集合。         DataFrame除了提供了比RDD更丰富的算子以外,更重要的特点是提升执行效率、减少数据读取以及执行计划的优化     *Datasets         Dataset是数据的分布式集合。Dataset是在Spark 1.6中添加的一个新接口,是DataFrame之上更高一级的抽象。它提供了RDD的优点(强类型化,使用强大的lambda函数的能力)以及Spark SQL优化后的执行引擎的优点。一个Dataset 可以从JVM对象构造,然后使用函数转换(map, flatMap,filter等)去操作。 Dataset API 支持Scala和Java。 Python不支持Dataset API。 4.创建表 DataFrame     方式一 使用case class 定义表         val df = studentRDD.toDF     方式二 使用SparkSession直接生成表         val df = session.createDataFrame(RowRDD,scheme)     方式三 直接读取一个带格式的文件(json文件)         spark.read.json("") 5.视图(虚表)     普通视图         df.createOrReplaceTempView("emp")             只对当前对话有作用     全局视图         df.createGlobalTempView("empG")             在全局(不同会话)有效             前缀:global_temp 6.操作表:     两种语言:SQL,DSL      spark.sql("select * from t ").show     df.select("name").show 
曼路
2018/10/18
9970
Spark入门指南:从基础概念到实践应用全解析
在这个数据驱动的时代,信息的处理和分析变得越来越重要。而在众多的大数据处理框架中,「Apache Spark」以其独特的优势脱颖而出。
BookSea
2023/10/20
1.4K0
Spark入门指南:从基础概念到实践应用全解析
Sqoop工具模块之sqoop-import-all-tables
    import-all-tables工具将一组表从RDBMS导入到HDFS。来自每个表的数据存储在HDFS的单独目录中。
云飞扬
2019/03/13
1.7K0
大数据技术Spark学习
Spark SQL 是 Spark 用来处理结构化数据的一个模块,它提供了一个编程抽象叫做 DataFrame,并且作为分布式 SQL 查询引擎的作用。 我们已经学习了 Hive,它是将 Hive SQL 转换成 MapReduce 然后提交到集群上执行,大大简化了编写 MapReduce 的程序的复杂性,由于 MapReduce 这种计算模型执行效率比较慢。所以 Spark SQL 的应运而生,它是将 Spark SQL 转换成 RDD,然后提交到集群执行,执行效率非常快!
黑泽君
2019/05/10
6K0
大数据技术Spark学习
Sqoop——将关系数据库数据与hadoop数据进行转换的工具
Sqoop的输入输出/导入导出是相对于文件系统HDFS的, 因此HDFS的导入导出如图1,图2
时间静止不是简史
2020/07/24
1.5K0
Sqoop——将关系数据库数据与hadoop数据进行转换的工具
Note_Spark_Day08:Spark SQL(Dataset是什么、外部数据源、UDF定义和分布式SQL引擎)
​ Spark 框架从最初的数据结构RDD、到SparkSQL中针对结构化数据封装的数据结构DataFrame, 最终使用Dataset数据集进行封装,发展流程如下。
Maynor
2021/12/07
4.7K0
Note_Spark_Day08:Spark SQL(Dataset是什么、外部数据源、UDF定义和分布式SQL引擎)
Hive 入门
Hive 的底层执行引擎有 :MapReduce,Tez,Spark - Hive on MapReduce - Hive on Tez - Hive on spark
Meet相识
2018/09/12
8340
Hive 入门
使用 Spark | 手把手带你十步轻松拿下 Spark SQL 使用操作
在《20张图详解 Spark SQL 运行原理及数据抽象》的第 5 节“SparkSession”中,我们知道了 Spark SQL 就是基于 SparkSession 作为入口实现的。
数人之道
2022/03/28
10.3K0
使用 Spark | 手把手带你十步轻松拿下 Spark SQL 使用操作
Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN
本文介绍了基于Spark的SQL编程的常用概念和技术。首先介绍了Spark的基本概念和架构,然后详细讲解了Spark的数据类型和SQL函数,最后列举了一些Spark在实际应用中的例子。
片刻
2018/01/05
27.8K0
惊了!10万字的Spark全文!
Hello,大家好,这里是857技术社区,我是社区创始人之一,以后会持续给大家更新大数据各组件的合集内容,路过给个关注吧!!!
刘浩的BigDataPath
2022/11/30
1.7K0
Sqoop-1.4.4工具import和export使用详解
Sqoop可以在HDFS/Hive和关系型数据库之间进行数据的导入导出,其中主要使用了import和export这两个工具。这两个工具非常强大,提供了很多选项帮助我们完成数据的迁移和同步。比如,下面两个潜在的需求:
幽鸿
2020/04/02
1.4K0
sqoop命令参数参考说明及案例示例
3.全量导入(将数据从mysql导入到hive,hive表不存在,导入时自动创建hive表)
chimchim
2022/11/13
1.7K0
推荐阅读
相关推荐
2021年大数据Spark(三十二):SparkSQL的External DataSource
更多 >
交个朋友
加入[数据] 腾讯云技术交流站
获取数据实战干货 共享技术经验心得
加入数据技术工作实战群
获取实战干货 交流技术经验
加入[数据库] 腾讯云官方技术交流站
数据库问题秒解答 分享实践经验
换一批
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档