1. 整体架构
- Hadoop 三大核心:HDFS、YARN、MapReduce
- HDFS:分布式文件存储,存海量日志、原始数据
- YARN:资源调度与集群管理,负责分配内存 CPU、调度任务
- MapReduce:离线计算引擎,做分布式数据处理
2. HDFS 核心
- NameNode、DataNode 职责
- NameNode:管理元数据(文件目录、权限、块位置),接收客户端请求
- DataNode:实际存储数据块,定时向 NN 上报心跳与块信息
-
副本机制默认 3 副本;同节点不存多副本,同机架存一份,跨机架存副本,兼顾容错与网络开销。
-
元数据记录文件路径、大小、权限、数据块存放位置;存于 NameNode 本地磁盘 + 内存。
-
HDFS 适用场景适合:海量大文件、一次写入多次读取、离线冷数据;不适合:小文件过多、频繁修改、低延迟随机读写。
3. YARN 核心
- ResourceManager、NodeManager
- RM:全局资源调度、接收任务申请、分配资源
- NM:单个节点资源管理、启动容器、监控本地任务
- YARN 工作流程客户端提交任务 → RM 申请资源 → RM 分配节点 → NM 启动容器 → 运行 MR/Spark 任务 → 执行完毕释放资源。
4. 部署实操(你亲手搭过,直接背)
-
伪分布式 vs 完全分布式 伪分布式:所有进程在单台机器,适合学习测试;完全分布式:多台机器分部署 NN、DN、RM、NM,用于生产集群。
-
搭建伪分布式步骤配置免密登录 → 安装 JDK → 配置 Hadoop 核心配置文件 → 格式化 HDFS → 启动集群。
三、Hive 面试必背
-
Hive 是什么基于 Hadoop 的数据仓库工具,把 SQL 翻译成 MapReduce/Spark 任务,不用手写 MR,适合离线海量数据分析。
-
Hive 和 MySQL 区别
- Hive:面向海量离线数据、跑批任务、延迟高、不支持事务频繁增删改
- MySQL:面向业务联机交易、低延迟、支持实时增删改、数据量偏小
- 内部表 与 外部表
- 内部表:元数据和数据都由 Hive 管理,删表连数据一起删
- 外部表:仅管理元数据,删表只删元数据,原始数据保留 工作推荐用外部表,安全不丢原始数据。
-
分区表 按时间 / 地区等字段划分目录,物理上分文件夹存储;作用:缩小查询扫描范围、大幅提升查询效率;常用时间分区。
-
分桶表 按字段哈希打散分到不同文件;和分区区别:分区是目录级别 ,分桶是文件级别;适合抽样查询、大表关联优化。
-
Hive 常用函数聚合函数、时间函数、字符串函数、行转列、开窗函数、lateral view 炸裂函数。
-
建表关键字comment 字段注释;partitioned by 建分区表;row format 指定分隔符。
-
小文件问题产生原因:任务过多、分区过小、动态分区、数据倾斜;危害:占用 NameNode 元数据内存、查询效率低;解决:合并小文件、设置任务并行度、合理分区、参数合并。
-
Hive 简单优化分区过滤前置、避免全表扫描、大表小表 Map 端 join、合理设置并行度、合并小文件。
四、Linux & Shell 面试必背
-
常用命令分类目录:pwd、ls、cd、mkdir、rmdir文件:touch、cp、mv、rm -rf查看:cat、more、less、head、tail查找:grep、find进程:ps -ef、kill -9磁盘:df -h、du -sh权限:chmod、chown
-
grep 作用过滤文本关键字,工作常用于日志筛选报错、排查异常。
-
tail -f实时跟踪日志文件末尾,线上实时看程序运行日志、排查故障必备。
-
查看进程、过滤 Java 进程ps -ef 查看全量进程;搭配管道 grep java 过滤 Java 大数据进程。
-
chmod、chownchmod 修改文件读写执行权限;chown 修改文件所属用户和用户组。
-
管道 | 作用把前一个命令的输出,作为后一个命令的输入;例子:ps -ef | grep java、ls -l | less。
-
tar 打包解压-zcvf 打包压缩;-zxvf 解压;常用于日志、项目文件打包迁移。