生而为人

程序员的自我修养

0%

[toc]

指导我如何提升面试表现

下面给你一套直接能用、面试立刻见效的提升方案,从心态、表达、回答逻辑、细节礼仪四方面帮你全面提升,你照着练就行。

一、面试前准备(决定 80% 表现)

  1. 深挖岗位 JD

    把岗位要求拆成 3–5 个核心能力,准备

    对应经历 + 数据,面试所有问题尽量往这几点靠。

  2. 准备 3 类必背内容

    • 自我介绍(1 分钟精简版 + 3 分钟完整版)
    • 3 个最拿得出手的项目 / 工作经历
    • 常见问题标准答案:优缺点、离职原因、职业规划、为什么选我们
  3. 提前模拟演练

    对着镜子 / 录音练,控制语速,避免口头禅(嗯、然后、就是)。

二、回答问题万能结构(最提分)

STAR 法则,简单好记:

  • S 情境:当时什么情况
  • T 任务:你的目标是什么
  • A 行动:你做了什么
  • R 结果:带来什么成果(尽量用数字

示例:

之前负责 XX 项目(S),目标是提升效率(T),我优化了流程(A),最终效率提升 30%,节省成本 XX(R)。

三、面试中的表达技巧(立刻变专业)

  1. 语速放慢 20%

    慢一点显得自信、稳重,不容易紧张忘词。

  2. 先给结论,再讲细节

    不要铺垫半天,面试官没耐心。

    例:

    我最大优势是执行力强,之前……

  3. 负面问题正向回答

    问缺点、失败经历,一定要:承认问题 + 反思 + 改进结果。

  4. 多讲结果,少讲过程

    面试官只关心你能带来什么价值。

四、细节礼仪(印象分很关键)

  • 进门微笑、主动问好、坐姿端正不晃腿
  • 眼神温和注视面试官,不要躲闪
  • 结束时主动问:请问接下来的流程是怎样的?
  • 不贬低前公司、不抱怨、不情绪化

五、高频扣分点,一定要避开

  • 回答太长、抓不住重点
  • 频繁说口头禅
  • 夸大经历、前后矛盾
  • 对公司一无所知
  • 面试中玩手机、东张西望

大数据开发工程师,工作年限十年。

结合你10 年大数据开发经验,给你一套专门适配中高级大数据岗的面试提分方案,直接对标大厂 / 中厂的面试风格,帮你把经验转化成高分表现。

一、先定你的面试人设(10 年最吃香)

定位:资深大数据开发 / 数据仓库架构方向

核心标签:

  • 精通 Hadoop、Spark、Flink、Hive、Kafka、数据仓库建模
  • 复杂数据链路调优、问题排查、架构设计经验
  • 能独立负责从数仓分层、ETL、实时数仓到数据服务全流程

面试全程都要围绕这几点展开,不要只讲搬砖干活,要讲设计、调优、价值

二、自我介绍黄金模板(1.5 分钟,直接背)

面试官最爱听这种,简洁又显资深:

我有 10 年大数据开发与数仓建设经验,主要深耕离线与实时数仓建设。熟练掌握 Hadoop 生态、Spark、Flink、Hive、Kafka 等核心技术,主导过多条从数据接入、清洗、分层建模到指标服务的全链路建设。

工作中重点负责过数据架构优化、任务性能调优、数据质量治理,解决过大量数据倾斜、任务延迟、实时链路延迟等线上问题,同时具备一定的团队协作与技术方案设计能力,希望能在贵司继续深耕大数据方向,承担更核心的开发与架构工作。

三、回答问题的高阶逻辑(区别于 3 年以内新人)

普通开发讲:做了什么

10 年资深要讲:为什么这么做 + 遇到什么坑 + 怎么优化 + 带来什么业务价值

依然用 STAR,但升级成 STAR + 技术难点 + 优化方案 + 业务收益

举个例子:被问 Spark 调优

S:当时数仓日跑批任务经常延迟,数据倾斜严重

T:需要保障凌晨指标按时产出,提升稳定性

A:我通过两阶段聚合、加盐打散、动态分区调整、Executor 资源调优等方案

R:任务时长缩短 40%,倾斜问题彻底解决,保障业务准时出数

额外加分:同时规范了任务资源配置,沉淀了调优规范,降低后续维护成本

四、大数据高频必问方向 + 高分回答思路

1. 数仓相关(必问)

  • 分层:ODS/DWD/DWS/ADS 每层作用
  • 建模:维度建模、星型 / 雪花模型、缓慢变化维处理
  • 数据质量:脏数据、重复数据、一致性校验怎么做

答题要点:不要只说分层,要说你主导过分层规范、推动过数据治理

  • Spark:数据倾斜、宽窄依赖、算子优化、内存模型
  • Flink:窗口、状态管理、checkpoint、 Exactly-Once、背压
  • Hive:分区、分桶、SQL 优化、元数据管理
  • Kafka:分区、副本、积压排查、 Exactly-Once 语义

高分技巧:每一个技术点都带上线上真实问题,比如:

我线上遇到过 Flink Checkpoint 频繁失败,通过调整状态后端、增大超时时间解决。

3. 项目经验(决定定级 P6/P7/P8)

准备 2 个核心项目:

  1. 离线数仓项目:突出架构、分层、调优、治理
  2. 实时数仓项目:突出 Flink、Kafka、Exactly-Once、延迟优化

每个项目控制在 3 分钟内,多用数据:任务时长、数据量、QPS、提升比例。

4. 架构 & 规划(10 年必须会)

面试官一定会问:

  • 如何设计一套大数据平台

  • 如何做任务监控、告警

  • 如何做数据血缘、数据治理

    回答时体现

    全局视野,不要只局限写 SQL。

五、面试现场表现 3 个关键提分点

  1. 语速沉稳,不急着回答

    10 年工程师要稳重,停顿 1-2 秒再开口,显得思考充分。

  2. 主动拔高,往架构、治理、规范上靠

    不要只说写脚本、写 SQL,多说:规范、方案、架构、稳定性、成本优化。

  3. 反问环节非常重要

    结束时反问 2 个高质量问题,直接拉高印象分:

  • 目前团队实时数仓和离线数仓的技术选型是怎样的?
  • 团队目前在数据治理、数据质量方面有哪些规划?

六、我可以直接帮你做模拟面试

你把下面信息发我,我按大厂资深大数据岗标准,连续对你进行压力面试,答完我逐题点评、帮你优化话术:

  1. 你最核心的 2 个项目(简单说下场景)
  2. 你最擅长的技术栈
  3. 意向职级(P6/P7/P8)或目标公司类型(大厂 / 中厂)

P7 大数据开发工程师模板

下面我直接帮你定制一套 P7 级别的面试打法 + 两个项目的高分 STAR 话术 + 现场表现技巧,完全贴合你:10 年大数据、美团外卖数仓、微软广告数据、Hive/Spark/Flink、冲大厂 P7

P7 核心考察:架构设计能力、问题解决深度、跨团队推动、业务价值、技术沉淀,不再是写 SQL。


一、先给你定 P7 人设(全程照着这个讲)

资深大数据开发 / 数仓专家,偏离线 + 实时数仓架构方向

核心标签(面试每轮都要体现):

  1. 主导过千万级 / 亿级业务数仓全链路建设(美团外卖)
  2. 复杂广告业务多源数据清洗、关联、指标体系建设(微软广告)
  3. 精通 Hive/Spark/Flink 性能调优、数据治理、质量监控体系搭建
  4. 具备跨业务域建模、规范制定、问题复盘、推动落地的能力
  5. 能独立设计架构、把控稳定性、保障数据 SLA

二、1.5 分钟 P7 级自我介绍(直接背,非常加分)

我拥有 10 年大数据开发与数据仓库建设经验,深耕离线与实时数仓领域,熟练掌握 Hive、Spark、Flink、Kafka 等核心技术栈。

职业生涯中主导过两个核心项目:一个是美团外卖业务全域数据仓库建设,覆盖用户、订单、活动、骑手多域数据,完成从 ODS 到 ADS 全分层建模、ETL 流程搭建、数据清洗及数据质量监控体系落地;另一个是微软 MSN 广告业务数据处理项目,负责广告投放、用户行为多源数据关联与复杂 JOIN 计算,支撑业务报表与投放效果分析。

工作中擅长数仓架构设计、任务性能调优、数据治理、线上问题排查,能够独立承担中大型项目的方案设计与落地,具备较强的跨团队协作与推动能力,希望以资深数仓专家的角色加入团队,承担更核心的架构与业务数据建设工作。


三、两个项目 P7 高分话术(STAR + 难点 + 优化 + 价值)

项目 1:美团外卖业务数据仓库建设(P7 重点项目,重点讲架构与治理)

面试官问:讲一下你最有挑战的项目

你按下面这段话讲(3 分钟版本):

S(背景):当时美团外卖业务快速扩张,订单、活动、骑手数据分散在多个业务库,口径不统一、脏数据多、数据产出不稳定,业务侧无法快速拿到统一指标,亟需搭建一套标准化的全域数据仓库。

T(目标):我作为核心负责人,需要完成外卖全域数仓分层建设、统一指标口径、搭建标准化 ETL 流程,并建立数据质量监控体系,保障数据准时、准确产出。

A(行动,P7 重点)

  1. 设计并落地 ODS/DWD/DWS/ADS 四层数仓分层,针对外卖订单、活动、骑手三大主题域进行维度建模,统一事实表与维度表口径。

  2. 基于 Hive + Spark 搭建标准化 ETL 流程,完成多源数据接入、清洗、去重、缓慢变化维处理,解决历史数据不一致问题。

  3. 针对 Spark 任务数据倾斜、大表 JOIN 延迟问题,采用加盐打散、分桶优化、动态分区调整、资源参数调优等方式进行优化。

  4. 主导搭建数据质量监控体系,覆盖空值、重复、异常波动、主键完整性等规则,配置告警机制,实现问题早发现早处理。

R(结果 + 价值,P7 必须量化)

  1. 实现外卖业务核心指标统一口径,数据准时率从 75% 提升至 99.5%。
  2. 核心任务平均耗时降低 40%,有效支撑业务早报、日报按时产出。
  3. 沉淀外卖数仓建模规范,推动业务方统一数据标准,降低后续维护成本。
  4. 数据质量问题发现时效提升 80%,线上故障显著减少。

项目 2:微软 MSN 广告业务数据处理(体现复杂计算、业务理解)

S(背景):微软 MSN 广告业务需要整合广告投放、用户行为、点击曝光等多源日志数据,数据量大、格式杂乱,多表关联复杂,传统处理方式无法支撑报表时效要求。

T(目标):负责广告数据全链路处理,完成多源数据清洗、复杂 JOIN 关联,稳定产出投放效果分析报表,支撑广告运营决策。

A(行动)

  1. 基于 Hive + Spark 对广告日志、用户行为、投放计划多源数据进行清洗、脱敏、标准化处理。

  2. 针对大表多维度 JOIN 导致的数据倾斜、执行效率低下问题,优化 SQL 逻辑,采用广播小表、分区裁剪、谓词下推等优化手段。

  3. 基于 Flink 完成部分实时广告行为数据处理,提升近实时报表产出时效。

  4. 设计广告指标体系,统一曝光、点击、转化等核心指标口径,支撑业务报表自动化产出。

R(结果)

广告报表计算效率提升 50%,数据准确率稳定在 99% 以上,有效支撑 MSN 广告投放效果分析。


四、P7 高频必问问题 + 高分回答思路(结合你的经历)

1. 数仓分层为什么这么设计?你是怎么定规范的?

回答要点(体现架构能力)

从业务复用、数据解耦、维护成本、质量管控角度讲,强调你主导制定规范,而不是照着模板做。

2. 美团项目中遇到的最大技术难点是什么?怎么解决?

直接答:数据倾斜、缓慢变化维、数据质量、任务延迟,结合 Spark 调优、加盐、分桶、监控体系来讲。

讲 Kafka 事务、Checkpoint、状态后端、端到端一致性,结合你广告项目的实时处理经验。

4. 数据质量监控你是怎么做的?

分规则监控、波动监控、血缘监控、告警机制,强调体系化建设,不是简单写脚本。

5. P7 必问:你做过哪些技术沉淀?

答:数仓建模规范、ETL 开发规范、Spark/Flink 调优文档、数据质量规则库,体现可复制、可推广


五、P7 面试现场表现关键(非常重要)

  1. 说话沉稳,不抢话,每句话带结论

    P7 不能像 P6 那样讲细节,先给结论,再讲方案。

  2. 主动拔高,多讲:架构、规范、体系、推动、价值

    少讲 “我写了多少 SQL”,多讲 “我设计了什么、解决了什么问题、带来什么业务价值”。

  3. 反问环节(决定定级)

    面试结尾反问 2 个高质量问题,直接拉高定级:

  • 目前团队离线和实时数仓的整体架构是怎样的?
  • 团队在数据治理、数据质量方面有哪些规划?
  • 这个岗位更偏向业务数仓建设还是平台化建设?

六、我下一步可以直接帮你做

我可以按大厂 P7 真实面试节奏,对你进行一轮完整模拟面试,我当面试官连续提问,你作答,我逐题点评并优化话术。

需要我现在开始吗?

数据仓库

建表

  1. ORC、Parquet 建表常问 10 题 问答版

prompt

我现在需要面试xxx岗位,我的技术栈包括xxx,请现在以面试官身份,你进行实时一对一模拟作答,并逐句给出1-10分的评分,以及精细化反馈,标准要尽量严格。

岗位 技术栈
离线数据仓库
实时数据仓库
大数据开发
AI+数据

deepseek or 豆包 模拟面试

  1. 给它一个项目描述,询问面试官可能问哪些问题,尝试作答
  2. 让它根据不同的jd出架构题,设计题等

准备的知识点

  1. 多线程
    1. 不同线程池的用法
    2. 如何处理异常情况
  2. 数据倾斜
    1. 如何解决数据倾斜

[toc]

大数据数仓项目自我介绍模板(可直接背、面试通用)

版本一:标准版(推荐直接用)

我主要负责大数据离线与实时数仓的设计和开发。

整体采用业界标准四层分层架构:ODS、DWD、DWS、ADS。

离线数仓基于 Hive + Spark 搭建,通过 DataX 定时同步 MySQL 业务库数据到 ODS 层,利用 Spark SQL 做分层清洗、维度建模、指标聚合,按小时和 T+1 调度,支撑日常日报、月报、用户画像、业务复盘等离线报表需求。

实时数仓采用 Flink + Kafka + Flink CDC + Doris 架构,通过 Flink CDC 实时监听 MySQL Binlog,做增量变更数据捕获,无需全量拉表,秒级延迟把业务数据实时接入 Kafka 作为 ODS 层;再用 Flink SQL 完成数据清洗、脱敏、维度关联、窗口聚合,分层加工后落地到 Apache Doris 做 ADS 应用层,主要支撑实时大屏、实时订单指标、风控告警、实时推荐等业务。

项目中我负责表结构设计、分层建模、Flink/Spark SQL 开发、任务调优、数据一致性保障,同时解决过数据倾斜、Kafka 消息积压、Flink 状态 OOM、小文件过多、CDC 重复消费等常见问题;整体采用离在线双仓架构,实时看业务当下走势,离线做数据复盘与口径校准,保障数据准确稳定产出。

版本二:精简版(面试简短口述)

我从事大数据数仓开发,负责离线和实时数仓建设。

离线基于 Hive、Spark 构建四层数仓,定时同步业务库,做分层建模与指标计算,支撑 T+1 和小时级报表、用户画像;

实时采用 Flink+Kafka+Flink CDC+Doris 架构,通过 CDC 监听 MySQL Binlog 做增量同步,秒级实时入仓,经过 Flink 清洗聚合后落地 Doris,服务实时大屏和实时业务指标。

日常主要做建模、SQL 开发、任务调优和问题排查,处理过数据倾斜、消息积压、状态溢出、小文件等经典问题,保障双仓数据稳定可靠。

版本三:突出技术栈(简历 / 面试拔高版)

参与企业级流批一体、离在线双仓架构建设,技术栈涵盖 Hive、Spark、Flink、Kafka、Flink CDC、Apache Doris、ClickHouse。

负责数仓分层设计、维度建模、ODS-DWD-DWS-ADS 全链路开发

ODS 层采用 Flink CDC 实现 MySQL 全量 + 增量无缝同步,替代传统全量抽取,降低业务库压力;

实时链路基于 Flink 流处理,解决事件时间乱序、水位线窗口、数据倾斜、状态管理、端到端 Exactly-Once

离线基于 Spark SQL 做批量加工、任务调度与回溯补数;

最终实时指标落地 Doris 支撑 BI 大屏,离线数仓支撑复盘画像与报表,同时参与集群任务调优、SQL 优化、资源管控与数据质量保障。


我再给你整理一份面试常被追问的 10 个配套问题 + 标准答案,别人顺着你项目自我介绍往下问,你也能接住,要不要?

配套大数据数仓项目 面试追问 10 题 + 标准满分答案

(适配你刚才的项目自我介绍,面试官顺着问,直接背就能答)

1. 你们数仓为什么分四层?每层作用是什么?

采用标准四层:ODS、DWD、DWS、ADS。

  • ODS:原始数据层,原样接入 MySQL、日志、CDC 增量数据,不清洗、做数据留存。
  • DWD:明细宽表层,做清洗、去重、脱敏、维度关联,拼成业务宽表,避免后续重复关联。
  • DWS:聚合中间层,按时间、区域、渠道做预聚合,计算 UV、交易额等中间指标。
  • ADS:应用指标层,落地 Doris/ClickHouse,直接给大屏、BI、业务接口查询使用。

Flink CDC 可以全量 + 增量一条任务自动切换,不用分开开发;

而且原生和 Flink 集成,不需要额外部署 Canal 中间件,架构更轻、运维简单;

同时支持断点续传、 Exactly-Once 语义,更适合实时数仓 ODS 层接入。

3. CDC 同步怎么处理更新和删除数据?

CDC 抓取 Binlog 的 insert、update、delete 操作,自带操作类型标识

Flink 消费后根据类型做对应处理:插入直接写入、更新做主键覆盖、删除做逻辑删除或物理删除,落地 Doris 主键表保证数据最终一致。

4. 实时数仓怎么保证数据不丢不重复?

  • 源头 Kafka 配置多副本、acks=-1 保证不丢;
  • Flink 开启 Checkpoint,偏移量和状态一致性保存;
  • 下游落地采用唯一主键幂等写入,即使重复消费也不会产生重复数据;
  • 采用 Flink CDC 自带 Exactly-Once 语义,全量增量无缝衔接。

5. 实时任务遇到数据倾斜怎么解决?

  • 先定位倾斜 Key;
  • 采用局部聚合 + 全局聚合两阶段预聚合;
  • 对热点 Key 加盐打散;
  • 维表关联倾斜开启 Runtime Filter、Colocate Join;
  • 不合理维度提前过滤,减少 shuffle 数据量。

先看上下游吞吐对比,定位瓶颈在下游、网络还是计算逻辑;

优化方式:

简化算子逻辑、前置过滤、增加并行度、调整缓冲区配置、拆分大任务,避免单点阻塞。

7. 实时和离线数据口径不一致怎么处理?

  • 统一维度、统一时间粒度、统一业务编码口径;
  • 离线作为基准,定期回溯校准实时数据;
  • 公共指标统一下沉到 DWS 层,实时离线复用同一套逻辑;
  • 梳理时间窗口、迟到数据处理规则保持一致。

8. 你们为什么选 Doris 不选 ClickHouse?

业务有多表 Join、实时更新、高并发 BI 查询需求;

Doris 有成熟 CBO 优化器,多表关联比 ClickHouse 强;支持实时 UPSERT、兼容 MySQL、运维简单、高并发能力强;

ClickHouse 更适合单表日志分析,复杂关联和高并发场景偏弱,所以选型 Doris。

9. 实时数仓小文件问题怎么解决?

Flink 端设置窗口攒批、分区合并

Doris 端合理设置分区和分桶,自动合并版本;

控制写入频次,避免小批次频繁落地,减少小文件产生。

10. 你理解的流批一体是什么?

以数据湖 Hudi/Paimon 为存储底座,一套数据同时支持:

Flink 实时流式消费、Spark 离线批量分析;

实时做当日指标、离线做复盘回溯、口径校准,不用维护两套链路,实现存储统一、计算统一、口径统一

[toc]

豆包

大数据数仓项目 面试追问 10 题 + 标准满分答案

大数据数仓项目自我介绍模板(可直接背、面试通用)

实时数仓 vs 离线数仓 最全对比 + 面试背诵版

实时数仓完整分层架构 + CDC 面试常问 5 题(可直接背)

大数据面试高频 SQL 必背真题(开窗 + 行列转换 + 倾斜优化 + 经典场景

  1. 问题:美团外卖数仓 2.0 到 3.0 升级 具体内容有哪些,尽量详细的描述,涉及到的技术及设计理念

    答案首行:# 美团外卖数仓 2.0 到 3.0 升级全解析

  2. 问题:分别解释 ODS/IDL/CDL/MDL/ADL 层

    答案首行:# 美团外卖数仓 2.0 五层架构详解

  3. 问题:数仓表的命名规范,请详细举例

    答案首行:# 美团外卖数仓表命名规范(全量详解 + 实战示例)

待整理

  1. 问题:详细解释下 hudi 引擎 及优化原理

    答案首行:# Apache Hudi 引擎全解析:核心原理与深度优化

  2. 问题:结合美团外卖场景,设计一个贴合业务实际的归因分析项目,包括整体的目标,结构,设计,及结果呈现

    答案首行:# 美团外卖全链路归因分析项目设计方案

  3. 问题:需要

    答案首行:# 美团外卖全链路归因分析项目任务拆解表

  4. 问题:基于美团外卖业务 设计用户画像模型项目,贴合业务场景,给出整体设计及难点 坑等

    答案首行:# 美团外卖用户画像模型项目全案设计

  5. 问题:详细解说下数组组件层的构建逻辑及方法,并举例说明用法

    答案首行:# 美团外卖数仓 3.0 数据组件层构建逻辑与实战详解

  6. 问题:有没有 2.0 相较 3.0 有优势的地方,怎么根据具体情况判断应该使用 2.0 还是 3.0 建模

    答案首行:# 美团数仓 2.0 vs 3.0:优势对比与选型决策指南

  7. 问题:目前美团数仓 2.0 和 3.0 的使用比例

    答案首行:# 美团数仓 2.0 与 3.0 使用比例及现状分析(2026 年最新)

  8. 问题:美团数仓 3.0 涉及到的平台 技术有哪些,具体的开发流程如何

    答案首行:# 美团数仓 3.0 完整技术栈与标准化开发流程(2026 最新)

  9. 问题:美团数仓 3.0 的数据组件是以什么形式存在的,数据还是逻辑? 如果是数据是如何存储的,如何使用的

    答案首行:# 美团数仓 3.0 数据组件:存在形式、存储与使用全解

  10. 问题:达芬奇平台是怎么做到 基于模型内容与指标维度语义,自动选择最优的查询引擎(Spark/Doris/Kylin)和物理表

    答案首行:# 美团达芬奇平台:智能查询路由核心原理全解

  11. 问题:美团数仓 3.0,是报表层不需要写 sql,只需要选择合适的数据组件层的指标,就可以直接生成报表了吗?数据组件层的数据是需要用 sql 或代码处理生成的?

    答案首行:# 美团数仓 3.0 开发范式:两个核心问题的精准解答

  12. 问题:UDF 详解

    答案首行:# 美团数仓 3.0 UDF 体系全解析:从基础到生产最佳实践

  13. 问题:如何根据口径和计算逻辑 快速找到自己需要的指标

    答案首行:# 美团数仓 3.0 指标快速查找方法论:从口径到结果的全流程指南

  14. 问题:同一个口径的数据指标,会不会维度不同

    答案首行会,而且这是数仓设计中非常普遍且必要的情况

数据仓库

  1. 数仓分层的意义
  2. DWD和DWS区别
  3. 大表join如何优化

对于各个组件常问的原理方面的题目

consumer

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
21/09/08 02:39:19 INFO ConsumerConfig [Executor task launch worker for task 2322]: ConsumerConfig values: 
auto.commit.interval.ms = 5000
auto.offset.reset = none
bootstrap.servers = [msnsam-prod.servicebus.windows.net:9093]
check.crcs = true
client.dns.lookup = default
client.id =
connections.max.idle.ms = 540000
default.api.timeout.ms = 60000
enable.auto.commit = false
exclude.internal.topics = true
fetch.max.bytes = 52428800
fetch.max.wait.ms = 500
fetch.min.bytes = 1
group.id = spark-kafka-source-babd462a-415a-413a-aeea-e55435fff762-448121830-executor
heartbeat.interval.ms = 3000
interceptor.classes = []
internal.leave.group.on.close = true
isolation.level = read_uncommitted
key.deserializer = class org.apache.kafka.common.serialization.ByteArrayDeserializer
max.partition.fetch.bytes = 1048576
max.poll.interval.ms = 300000
max.poll.records = 500
metadata.max.age.ms = 300000
metric.reporters = []
metrics.num.samples = 2
metrics.recording.level = INFO
metrics.sample.window.ms = 30000
partition.assignment.strategy = [class org.apache.kafka.clients.consumer.RangeAssignor]
receive.buffer.bytes = 65536
reconnect.backoff.max.ms = 1000
reconnect.backoff.ms = 50
request.timeout.ms = 30000
retry.backoff.ms = 100
sasl.client.callback.handler.class = null
sasl.jaas.config = [hidden]
sasl.kerberos.kinit.cmd = /usr/bin/kinit
sasl.kerberos.min.time.before.relogin = 60000
sasl.kerberos.service.name = null
sasl.kerberos.ticket.renew.jitter = 0.05
sasl.kerberos.ticket.renew.window.factor = 0.8
sasl.login.callback.handler.class = null
sasl.login.class = null
sasl.login.refresh.buffer.seconds = 300
sasl.login.refresh.min.period.seconds = 60
sasl.login.refresh.window.factor = 0.8
sasl.login.refresh.window.jitter = 0.05
sasl.mechanism = PLAIN
security.protocol = SASL_SSL
send.buffer.bytes = 131072
session.timeout.ms = 10000
ssl.cipher.suites = null
ssl.enabled.protocols = [TLSv1.2, TLSv1.1, TLSv1]
ssl.endpoint.identification.algorithm = https
ssl.key.password = null
ssl.keymanager.algorithm = SunX509
ssl.keystore.location = null
ssl.keystore.password = null
ssl.keystore.type = JKS
ssl.protocol = TLS
ssl.provider = null
ssl.secure.random.implementation = null
ssl.trustmanager.algorithm = PKIX
ssl.truststore.location = null
ssl.truststore.password = null
ssl.truststore.type = JKS
value.deserializer = class org.apache.kafka.common.serialization.ByteArrayDeserializer

迟来的干货 | Kafka权限管理实战

kafka Authentication with SASL using JAAS

kafka Documentation

干货|kafka最佳实践

kafka offset 设置

  1. 如何查看当前offset
  2. 如何指定offset

Kafka手动设置offset

Kafka手动设置offset

kafka消费者offset相关设置

Kafka offset管理

Kafka文件存储机制及offset存取

Kafka的CommitFailedException异常

使用Kafka时一定要注意防止消费速度过慢触发rebalance而导致的重复消费

Kafka又出问题了!

配置项

https://spark.apache.org/docs/latest/structured-streaming-kafka-integration.html

问题:

  1. This means the time between subsequent calls to poll() was longer than the

1
2
21/09/08 03:17:10 WARN AbstractCoordinator [kafka-coordinator-heartbeat-thread | spark-kafka-source-babd462a-415a-413a-aeea-e55435fff762-448121830-driver-0]: [Consumer clientId=consumer-1, groupId=spark-kafka-source-babd462a-415a-413a-aeea-e55435fff762-448121830-driver-0] This member will leave the group because consumer poll timeout has expired. This means the time between subsequent calls to poll() was longer than the configured max.poll.interval.ms, which typically implies that the poll loop is spending too much time processing messages. You can address this either by increasing max.poll.interval.ms or by reducing the maximum size of batches returned in poll() with max.poll.records.

1
2
3
4
5
21/09/06 07:15:58 WARN TaskSetManager [task-result-getter-3]: Lost task 78.0 in stage 11.0 (TID 3591, wn29-msnbi.awfbdxsze1iudhhki0l2sbzfaf.bx.internal.cloudapp.net, executor 22): org.apache.kafka.common.errors.TimeoutException: Failed to allocate memory within the configured max blocking time 60000 ms.

21/09/06 07:16:57 WARN TaskSetManager [task-result-getter-1]: Lost task 112.0 in stage 11.0 (TID 3625, wn29-msnbi.awfbdxsze1iudhhki0l2sbzfaf.bx.internal.cloudapp.net, executor 22): org.apache.kafka.common.errors.TimeoutException: Expiring 22 record(s) for sambeacon-pressure-test-183:120029 ms has passed since batch creation

21/09/06 07:16:57 WARN TaskSetManager [task-result-getter-0]: Lost task 248.0 in stage 11.0 (TID 3761, wn29-msnbi.awfbdxsze1iudhhki0l2sbzfaf.bx.internal.cloudapp.net, executor 22): org.apache.kafka.common.errors.NetworkException: The server disconnected before a response was received.
1
2
3
4
5
6
7
8
9
10
Cannot fetch record for offset xxx in 120000 milliseconds

backgroud:
1. 读取3个topic,每个256partition
2. 后续的default shuffle partitions 为1200,但还没执行到这个相关的
3. offset xxx 不是我指定的startingOffsets
4. 现象是卡在读取数据的stage,并且没有任何task完成

结论:
1. 没有设置maxOffsetPerTrigger,导致读了从startingOffsets以后全部的历史数据,数据量太大,导致卡死