
简介这是一份专为大数据从业者量身打造的2023年高频面试题合集覆盖大数据开发、运维、云计算、数据治理及架构师等多岗位核心能力要求系统梳理Linux/Shell基础、Hadoop生态HDFS/MapReduce/YARN、Zookeeper协调机制、Flume数据采集、Kafka消息系统、Hive数仓、HBase列式存储、Sqoop数据迁移、Scala编程及Spark计算框架十大技术模块。资源为单个491KB的Word文档.docx内容结构清晰含11章详细目录每章聚焦一个技术栈涵盖端口配置、读写流程、Shuffle机制、RowKey设计、动态分区原理、血统Lineage容错、Kafka幂等与事务、Hive数据倾斜优化等笔试面试高频考点与实战经验。目前已有878人学习下载适合求职冲刺者快速查漏补缺、建立知识图谱也便于团队内部技术复盘与新人培养。1. 这不是题库是大数据岗位的「能力校准器」2023年最全面试题集为什么能覆盖开发/运维/架构/治理全角色你刷过几百道 Kafka 分区数怎么设、Hive 小文件怎么合并、Spark Shuffle 为什么慢——但面试官一句“你线上集群的 YARN ResourceManager 内存配了多少为什么不是默认值”就卡住你背熟了 MapReduce 的八步流程却说不清 Flume Agent 挂掉后那 3 秒内未 commit 的 event 是怎么被保障不丢的你写得出 Flink Watermark 的代码但被问到“你们用的是 ProcessingTime 还是 EventTime如果上游 Kafka 时间戳乱序超出了 watermark 允许范围下游窗口会怎么处理有没有实际 case”时手心开始冒汗。这不是知识盲区是生产环境里的决策链缺失。这份 2023 年史上最全的大数据面试题集本质是一份被一线团队反复验证过的「能力校准器」它不按教科书章节堆砌概念而是以真实岗位动线为轴——大数据开发要能写出可上线的 Spark SQL 和 Hive 调优脚本大数据运维必须清楚 HDFS Balancer 的触发阈值、ZK 集群脑裂的仲裁日志在哪查、Kafka 副本 ISR 收缩时如何人工干预云计算方向得说清 EMR 与自建 Hadoop 在安全组、EBS IO、Spot 实例容错上的差异数据治理岗则要能讲透 Atlas 血缘如何对接 Hive Metastore、Griffin 怎么定义“空值率超标”这个质量规则并联动告警。它把 14 个技术模块从 Linux Shell 到 JVM全部锚定在「你昨天刚改过的那个调度任务」「上周三凌晨三点报警的那个 Kafka Lag」里。没有一道题是纯理论每一道都藏着一个正在运行的集群、一张正在跑的数仓表、一次被回滚的发布。如果你正准备跳槽、转岗或晋升别把它当题库翻把它当一份带注释的 SRE Runbook Data Engineer Checklist Architect Decision Log 来读。它解决的不是“会不会”而是“敢不敢拍板”。2. 从 Linux Shell 到 Hadoop 集群底层能力决定你能不能真正接管生产环境2.1 Linux Shell 不是“会几个命令”而是“能否在凌晨两点定位磁盘打满的根因”面试中问df -h和du -sh *的区别绝不是考你记不记得参数。它在测试你是否具备系统级归因能力。真实场景是某天凌晨 2:17HDFS DataNode 报No space left on device但df -h显示/data目录只用了 78%。这时你第一反应是什么# 正确排查链必须一步到位 $ df -i # 查 inode 是否耗尽 —— 大量小文件场景下常见 $ lsof L1 | head -20 # 查被删除但句柄未释放的文件如 logrotate 后进程没 reload $ find /data -xdev -type f -size 1G -ls | sort -k7 -nr | head -5 # 找大文件排除误删日志提示lsof L1是血泪经验。曾有集群因 Flume FileChannel 的 checkpoint 文件被 rm -rf 但 agent 未重启导致磁盘空间无法释放df -h看似正常实际lsof显示 23GB 占用。这种问题不靠lsof光看df永远找不到根因。Shell 脚本能力更关键。比如你写的日志清理脚本#!/bin/bash # 错误示范硬编码路径无错误捕获无 dry-run 模式 rm -rf /var/log/hadoop/*2023-01* # 正确写法带校验、dry-run、日志记录 LOG_DIR/var/log/hadoop RETENTION_DAYS30 DRY_RUN${1:-false} # 第一个参数控制是否真删 if [ $DRY_RUN true ]; then echo [DRY RUN] Would delete logs older than $RETENTION_DAYS days in $LOG_DIR find $LOG_DIR -name *.log -mtime $RETENTION_DAYS -print | head -10 else echo [REAL RUN] Deleting logs older than $RETENTION_DAYS days... find $LOG_DIR -name *.log -mtime $RETENTION_DAYS -delete 2/dev/null echo Cleanup completed at $(date) /var/log/cleanup.log fi参数说明RETENTION_DAYS可配置避免硬编码DRY_RUN开关是运维底线任何批量操作必须先模拟2/dev/null屏蔽Permission denied等非致命错误但关键错误如目录不存在仍会报出日志记录到独立文件方便审计。2.2 Hadoop 配置不是“照着官网抄”而是“每个端口背后都有一个服务契约”Hadoop 端口号如 NameNode 的 8020、9870DataNode 的 9864不是数字是服务契约的具象化。比如面试问“为什么 YARN ResourceManager 的 Web UI 默认是 8088而历史服务器 JobHistory 是 19888”——答案不是“官网这么定的”而是8088是 ResourceManager 的 REST API 和 Web UI 端口所有客户端如 Spark、HiveServer2通过此端口提交 ApplicationMaster19888是 HistoryServer 独立进程的端口它不参与资源调度只提供已完成作业的 UI 查询因此需隔离端口避免冲突若你将 RM 端口改为8090则所有客户端配置yarn.resourcemanager.webapp.address必须同步更新否则 Spark 会报Connection refused。HDFS 读写流程的考察直指你对数据一致性边界的理解。例如现象客户端写入一个 2GB 文件hdfs dfs -ls已显示文件存在且大小正确但下游 Spark 任务读取时报ChecksumException。原因HDFS 写流程中Client 将数据块分片发给 Pipeline 中的 DataNode每个 DN 接收后计算校验和并写入.crc文件。若某个 DN 的磁盘损坏.crc文件写入失败但主流程未中断因 HDFS 默认dfs.client.write.packet.size64KB小包重试机制掩盖了问题。解决启用dfs.client.use.datanode.hostnametruedfs.client.block.write.replace-datanode-on-failure.policyNEVER强制 Client 校验每个 DN 的响应并在失败时立即抛异常而非静默降级。2.3 YARN 调度器选型CapacityScheduler 不是“默认就用”而是“必须懂队列权重怎么影响 SLA”YARN 默认调度器是 CapacityScheduler但它的核心不是“能跑任务”而是如何用队列配额保障多租户 SLA。比如某公司有三个业务线共用一个 YARN 集群队列名最小资源占比最大资源占比用户限制优先级default10%30%10低finance40%60%5高realtime30%50%3最高面试官问“如果 finance 队列当前只用了 20%realtime 突然提交大量 Flink 任务它能抢占 finance 的资源吗”答案是不能除非开启yarn.scheduler.capacity.root.finance.allow-preemptionfalse默认 false且yarn.scheduler.capacity.root.realtime.allow-preemptiontrue。CapacityScheduler 的抢占是单向的高优先级队列可向低优先级队列抢占但需显式开启allow-preemption且抢占阈值由yarn.scheduler.capacity.root.queue.minimum-user-limit-percent控制默认 100%即用户独占其队列配额。注意yarn.scheduler.capacity.root.queue.user-limit-factor参数常被误用。它不是“允许用户超用多少倍”而是“当队列内所有用户资源总和低于队列最小配额时单个用户最多可用的倍数”。例如 finance 队列最小配额 40%若只有 1 个用户user-limit-factor2意味着该用户最多可用 80%40%×2但不会突破 finance 队列的 60% 上限。2.4 Hadoop 宕机与数据倾斜运维和开发的分水岭就在这两道题里Hadoop 宕机排查不是“重启 NameNode”而是分层归因网络层ping namenode-hosttelnet namenode-host 8020确认端口可达进程层jps -l | grep NameNode若无输出查ps aux | grep java | grep NameNode看是否 OOM 被 kill日志层tail -100 /var/log/hadoop-hdfs/hadoop-hdfs-namenode-*.log重点搜FATAL、OutOfMemoryError、EditLog相关错误存储层ls -lh /path/to/namenode/current/edits*若 edits 文件过大1GB且长时间未滚动可能因dfs.namenode.checkpoint.period设置过大导致 Checkpoint 失败。数据倾斜的解决方案暴露你是否真写过生产代码。比如 Hive 中GROUP BY倾斜-- 错误直接 group by遇到 key‘null’ 占 80% 数据时卡死 SELECT user_id, COUNT(*) FROM logs GROUP BY user_id; -- 正确加盐 两阶段聚合必须写成两个 INSERT -- Step1: 对倾斜 key 加随机前缀 INSERT OVERWRITE TABLE logs_salt SELECT CASE WHEN user_id IS NULL THEN concat(salt_, cast(rand() * 10 as int)) ELSE user_id END as user_id, other_cols... FROM logs; -- Step2: 先按 salted_key 聚合再按原始 key 汇总 INSERT OVERWRITE TABLE result SELECT CASE WHEN user_id LIKE salt_% THEN NULL ELSE user_id END as user_id, SUM(cnt) as total_cnt FROM ( SELECT user_id, COUNT(*) as cnt FROM logs_salt GROUP BY user_id ) t GROUP BY CASE WHEN user_id LIKE salt_% THEN salt ELSE user_id END;关键参数rand() * 10的 10 是盐值分桶数需根据倾斜程度调整一般 5~20CASE WHEN必须严格匹配避免 NULL 被误判。2.5 避坑Hadoop 生产环境踩过的五个血泪坑现象HDFSbalancer执行后部分 DataNode 磁盘使用率反而升高。原因balancer默认只在dfs.datanode.du.reserved默认 0预留空间下工作若某 DN 磁盘已 95% 满balancer会拒绝接收新块但其他 DN 仍在向它发送复制块因 replication factor3必须满足副本数。解决调大dfs.datanode.du.reserved如设为10737418240即 10GB并设置dfs.balancer.movedWinWidth540000090分钟窗口避免频繁移动。现象YARN 集群中 ApplicationMaster 启动失败日志报Container launch failed for container_... : java.io.IOException: Cannot run program /bin/bash: error12, Cannot allocate memory。原因不是内存不足而是ulimit -u用户最大进程数超限。AM 启动时会 fork 多个子进程如 Spark Executor若ulimit -u设为 1024而 AM 需要 2000 进程则失败。解决在yarn-env.sh中添加export YARN_RESOURCEMANAGER_OPTS-XX:UseG1GC -Dulimit -u65535并在所有 NodeManager 节点执行echo * soft nproc 65535 /etc/security/limits.conf。现象Hive 动态分区插入时报org.apache.hadoop.hive.ql.metadata.HiveException: Unable to rename...。原因动态分区要求目标路径不存在但 HDFS 权限模型中/user/hive/warehouse/db.db/tbl/dt2023-01-01的父目录/user/hive/warehouse/db.db/tbl由 HiveServer2 用户创建而执行 INSERT 的用户无rwx权限。解决启用hive.warehouse.subdir.inherit.permstrueHive 3.0或统一用hive用户执行所有 DDL/DML。现象MapReduce 任务中 Reduce 阶段长期卡在 99%mapreduce.reduce.shuffle.parallelcopies调高后无效。原因Shuffle 阶段依赖 Map 端的http.port默认 13562若防火墙未开放此端口Reduce 无法拉取 Map 输出表现为“卡 99%”。解决检查mapred-site.xml中mapreduce.tasktracker.http.address端口是否在所有节点开放或改用mapreduce.shuffle.portYARN 模式下。现象Hadoop 2.7 集群升级到 3.3 后原有 Sqoop 导入脚本报java.lang.NoClassDefFoundError: org/apache/hadoop/mapred/JobConf。原因Hadoop 3.x 移除了mapred包Sqoop 1.4.x 默认依赖旧版 MR API。解决升级 Sqoop 至 1.4.7并在sqoop-env.sh中指定HADOOP_MAPRED_HOME$HADOOP_HOME/share/hadoop/mapreduce或改用--hadoop-home参数。3. Zookeeper、Flume、Kafka分布式协调、采集、消息的三重校验3.1 Zookeeper 选举机制不是“谁先启动谁当 Leader”而是“法定人数 Quorum 的实时博弈”ZK 的选举Leader Election本质是Zab 协议下的 Paxos 变种。面试问“ZK 集群 5 台挂掉 2 台还能写吗”答案不是“能”而是“只要存活节点数 ≥ ⌊n/2⌋1即 ≥3且它们之间网络互通就能完成 Leader 选举并提供写服务”。关键细节ZK 启动时每个 Server 进入LOOKING状态广播Vote(myid, zxid, epoch)收到其他节点投票后比较zxid事务 IDzxid大者胜出若zxid相同比myidID 大者胜当某节点收到≥ ⌊n/2⌋1个相同投票即成为 Leader注意quorum不是静态配置而是动态达成的。若 5 台中 2 台网络隔离形成 32 分区3 台分区可选出 Leader2 台分区永远无法达成多数派进入LOOKING循环。生产中常见陷阱tickTime20002秒太小导致网络抖动时频繁触发选举。建议设为6000并确保initLimit10即 60 秒内完成初始同步、syncLimit530 秒内完成心跳同步。3.2 Flume Channel 选择器FileChannel 不是“万能保险”而是“IO 与吞吐的权衡”Flume 的 Channel 是 Agent 的“缓冲心脏”。面试必问“为什么不用 MemoryChannel 而用 FileChannel”——答案直指可靠性边界MemoryChannel数据全在堆内存吞吐高10w events/sec但进程崩溃即丢失FileChannel数据落盘checkpointDirdataDirs可靠性高但 IO 成瓶颈尤其机械盘。FileChannel 优化实操# flume-conf.properties a1.channels.c1.type file a1.channels.c1.checkpointDir /var/flume/checkpoint a1.channels.c1.dataDirs /var/flume/data1,/var/flume/data2 # 多盘条带化 a1.channels.c1.capacity 1000000 # 提高容量减少溢出 a1.channels.c1.transactionCapacity 10000 # 事务大小匹配 Source 批次 a1.channels.c1.keep-alive 30 # 事务超时避免长阻塞血泪经验dataDirs必须挂载在不同物理磁盘如/dev/sdb,/dev/sdc若都指向同一 RAID 卷条带化失效。曾有集群因dataDirs配错FileChannel 写入延迟从 5ms 暴涨至 200ms。3.3 Kafka 副本与 ISR不是“副本数越多越稳”而是“ISR 收缩才是真正的雪崩起点”Kafka 的replication.factor3只是声明真正保障可用性的是 ISRIn-Sync Replicas列表。面试问“Kafka 挂掉一台 Broker会影响生产吗”——答案取决于 ISR若挂掉的是 Leader且 ISR 中还有 2 个 Follower则 Controller 会从 ISR 中选新 Leader生产无感知若挂掉的是唯一在 ISR 中的 Follower即 ISR[0,1]Broker 1 挂则 ISR 收缩为 [0]此时若 LeaderBroker 0也挂整个 Partition 不可用。ISR 收缩的临界参数replica.lag.time.max.ms30000默认 30 秒Follower 落后 Leader 超过 30 秒被踢出 ISRreplica.lag.max.messages4000Kafka 0.10.0已废弃现只看时间unclean.leader.election.enablefalse强烈建议禁止非 ISR 副本当选 Leader避免数据丢失。生产调优将replica.lag.time.max.ms从 30s 降至 10s配合监控kafka.server:typeReplicaManager,nameUnderReplicatedPartitions指标当该值 0 时立即告警。3.4 Kafka 数据积压不是“加消费者”而是“先定位是生产慢还是消费慢”Kafka Lag消费者落后生产者的 offset 差值是核心健康指标。面试问“Lag 达到 100w怎么处理”——标准动作链确认是生产侧还是消费侧问题# 查生产速率每秒写入多少条 kafka-run-class.sh kafka.tools.GetOffsetShell \ --bootstrap-server broker1:9092 \ --topic my_topic --time -1 --offsets 1 | awk -F : {sum$3} END {print sum} # 查消费速率每秒拉取多少条 kafka-consumer-groups.sh --bootstrap-server broker1:9092 \ --group my_group --describe | grep CURRENT-OFFSET\|LOG-END-OFFSET | tail -2若生产快、消费慢检查 Consumer 线程数max.poll.records太大导致单次处理超时检查 GC-XX:PrintGCDetailsFull GC 会导致poll()阻塞检查反压fetch.max.wait.ms500太小Consumer 频繁轮询增加 Broker 负载。若生产慢检查 Producerlinger.ms5默认 0设为 5~10ms 可批量攒批检查compression.typesnappy比 gzip 低 CPU适合实时场景。3.5 避坑Kafka 与 Flume 生产环境高频故障现象Flume Sink 到 Kafka 时日志报Failed to send events to Kafka: ... Not a valid version: 0。原因Flume Kafka Sink 使用的 Kafka Client 版本如 0.10.0与 Kafka Broker 版本如 2.8.0不兼容Not a valid version指协议版本协商失败。解决下载与 Broker 版本一致的kafka-clients-x.x.x.jar替换 Flumelib/下旧 jar并在flume-env.sh中添加FLUME_CLASSPATH/path/to/kafka-clients-2.8.0.jar。现象Kafka 消费者组__consumer_offsetsTopic 的 partition 0 一直under replicated。原因__consumer_offsets是 Kafka 自建 Topic其replication.factor由offsets.topic.replication.factor默认 3控制。若集群只有 2 台 Broker该 Topic 无法满足副本数始终 under replicated。解决启动时指定--config offsets.topic.replication.factor2或扩容 Broker 至 ≥3 台。现象Flume Agent 启动后Source 无数据流入tail -f /var/log/flume/flume.log无报错。原因execSource 的shell命令未加-n参数如tail -F /var/log/app.log导致tail进程在 Flume 启动时已退出Flume 认为 Source 结束。解决source.command tail -F -n 0 /var/log/app.log-n 0确保从头读取且持续监听。现象Kafka Producer 发送消息后Consumer 一直收不到kafka-console-consumer.sh也无输出。原因Producer 使用acks0不等待任何确认但 Broker 的min.insync.replicas2若 ISR 只有 1 个副本消息被写入但未满足 ISR 要求Producer 认为成功实际消息被丢弃。解决Producer 设acksallBroker 设min.insync.replicas1开发环境或确保 ISR 始终 ≥2生产环境。现象ZooKeeper 客户端连接超时org.apache.zookeeper.KeeperException$ConnectionLossException。原因ZK 客户端sessionTimeout3000030秒但网络抖动超过 30 秒Session 过期。客户端未实现Watcher重连逻辑。解决在客户端代码中实现Watcher的process(WatchedEvent event)方法当event.getState() KeeperState.Expired时重建ZooKeeper实例。4. Hive、HBase、Sqoop数据仓库、实时查询、跨源同步的工程落地4.1 Hive 动态分区不是“开个开关就行”而是“必须理解元数据锁与小文件爆炸的共生关系”hive.exec.dynamic.partitiontrue是入门配置但生产中必须搭配SET hive.exec.dynamic.partition.modenonstrict; -- 允许全动态分区不强制指定分区列 SET hive.exec.max.dynamic.partitions1000; -- 防止误操作炸库 SET hive.exec.max.dynamic.partitions.pernode100; -- 每个 reducer 最多建 100 个分区 SET hive.merge.mapfilestrue; -- 小文件自动合并 SET hive.merge.mapredfilestrue;动态分区底层原理Hive 在 Map 阶段不写 HDFS而是将(partition_value, row)发送给 ReduceReduce 按partition_value分组每个组写一个分区文件。若partition_value分布极不均如dt2023-01-01占 90% 数据则单个 Reduce 处理巨量数据OOM 或超时。血泪教训某次导入用户行为日志dt分区按天切但因数据延迟dt2023-01-01的数据在2023-01-05才补全导致该分区文件分散在 5 个不同任务中产生 5 个 200MB 小文件。后续SELECT * FROM tbl WHERE dt2023-01-01触发 5 个 MapTask而hive.input.formatorg.apache.hadoop.hive.ql.io.CombineHiveInputFormat无法合并跨任务小文件。解法对延迟数据用INSERT OVERWRITE TABLE ... PARTITION(dt2023-01-01)强制单任务写入或启用hive.optimize.sort.dynamic.partitiontrueHive 2.0让 Map 端预排序分区键。4.2 Hive 数据倾斜不只是“加盐”而是“分层路由 热点探测”的组合拳Hive 倾斜处理有三层策略层级场景方案关键参数SQL 层GROUP BY/JOIN倾斜加盐saltingrand() * NN5~20引擎层Tez/Spark 引擎启用hive.groupby.skewindatatrueTez或spark.sql.adaptive.enabledtrueSpark自动探测倾斜并拆分数据层维表关联热点构建“热点维表”“冷维表”LEFT JOIN后UNION ALLWHERE key IN (SELECT hot_key FROM hot_dim)实战案例用户画像表user_profile与订单表order_info关联user_id为热点VIP 用户下单频次极高-- Step1: 识别热点 user_id出现次数 1w CREATE TABLE hot_user AS SELECT user_id FROM order_info GROUP BY user_id HAVING COUNT(*) 10000; -- Step2: 分离热/冷数据 INSERT OVERWRITE TABLE join_result SELECT /* MAPJOIN(hot_dim) */ u.*, o.* FROM user_profile u LEFT JOIN ( SELECT * FROM hot_user ) hot_dim ON u.user_id hot_dim.user_id LEFT JOIN order_info o ON u.user_id o.user_id AND hot_dim.user_id IS NOT NULL -- 热数据走 MapJoin UNION ALL SELECT u.*, o.* FROM user_profile u LEFT JOIN order_info o ON u.user_id o.user_id WHERE u.user_id NOT IN (SELECT user_id FROM hot_user); -- 冷数据走普通 Join注意MAPJOIN要求小表hot_user能全量加载进内存hive.auto.convert.join.noconditionaltask.size默认 10MB需大于hot_user表大小。4.3 HBase RowKey 设计不是“MD5 拼接”而是“时间业务散列的三维约束”RowKey 是 HBase 的唯一索引设计失误等于废库。经典反模式MD5(user_id ts)—— 完全打散顺序导致 Scan 效率归零。正确设计公式[时间维度][业务维度][散列维度]时间维度用yyyyMMdd前缀非ts毫秒值避免热点如所有写请求集中到最新 Region业务维度如user_12345、order_67890保证同类数据物理相邻散列维度对业务 ID 取模如user_12345_00112345 % 100 1将单个用户数据分散到 100 个 RowKey。Phoenix 二级索引原理Phoenix 在 HBase 上构建全局索引表索引表的 RowKey 索引字段值 主表 RowKey。查询SELECT * FROM tbl WHERE statuspaid时Phoenix 先查索引表获取所有匹配的主表 RowKey再批量 Get 主表数据。代价每次UPSERT主表需同步写索引表写放大 2~3 倍。4.4 Sqoop 导入导出Null 存储一致性不是“配置开关”而是“Hive 与 RDBMS 的语义鸿沟”Sqoop 导入 MySQL 到 Hive 时MySQL 的NULL默认被转为 Hive 的\N字符串而非真正 NULL。这导致COUNT(*)与COUNT(col)结果不一致。根本解法在 Sqoop 命令中显式指定空值处理sqoop import \ --connect jdbc:mysql://mysql:3306/mydb \ --username root \ --table users \ --target-dir /user/hive/warehouse/users \ --fields-terminated-by \001 \ --null-string \\N \ # MySQL NULL 转 Hive NULL --null-non-string \\N \ # MySQL 空字符串也转 Hive NULL --hive-import \ --hive-table mydb.users数据导出一致性问题Sqoop 导出 Hive 到 MySQL 时若 Hive 表含ARRAYSTRINGSqoop 会将其序列化为[a,b]字符串但 MySQL 无 ARRAY 类型需提前在 Hive 中CONCAT_WS(,, col)转为字符串。4.5 避坑Hive/HBase/Sqoop 生产高频雷区现象Hive 查询报java.lang.OutOfMemoryError: Java heap space但EXPLAIN显示 MapReduce 任务资源充足。原因HiveServer2 的hive.heapsize默认 1024M不足EXPLAIN生成执行计划时在 HS2 进程内解析 AST大 SQL如 50 层嵌套子查询耗尽 HS2 堆内存。解决在hiveserver2-env.sh中设export HIVE_SERVER2_HEAPSIZE4096并重启 HS2。现象HBasescan操作超时org.apache.hadoop.hbase.client.RetriesExhaustedException。原因hbase.client.scanner.timeout.period60000默认 60秒太短Scan 涉及大量 RegionServer 交互网络抖动易超时。解决设为120000并启用setCaching(100)减少 RPC 次数。现象Sqoop 导入时MySQL 的TINYINT(1)字段在 Hive 中变成BOOLEAN但实际存的是0/1数字WHERE flagtrue查不到数据。原因Sqoop 的--map-column-hive未显式映射自动类型推断错误。解决--map-column-hive flagINT强制映射为 INT。现象Hive 分区表ALTER TABLE ... ADD PARTITION后MSCK REPAIR TABLE不识别新分区。原因MSCK REPAIR只扫描 HDFS 路径若分区路径为/dt2023-01-01/hr00但ADD PARTITION语句写的是PARTITION(dt2023-01-01, hr0)hr 少了前导零路径不匹配。解决确保ADD PARTITION的值与 HDFS 路径完全一致或用ALTER TABLE ... ADD PARTITION ... LOCATION显式指定路径。现象HBaseput大量数据后hbase hbck -repair本文还有配套的精品资源点击获取