
1) 【一句话结论】HDFS是Hadoop的分布式存储系统,核心职责是持久化存储大规模数据(通过多副本保证可靠性);YARN是资源调度框架,负责统一管理集群计算资源(CPU、内存等),为应用分配资源。运维中通过Ganglia/Prometheus等工具采集存储健康指标(如副本完整性、块损坏率)和资源利用率指标(如CPU、内存、磁盘I/O),实时监控确保算力稳定。
2) 【原理/概念讲解】HDFS(Hadoop Distributed File System)是Hadoop的分布式文件系统,采用主从架构:NameNode作为元数据管理节点,维护文件系统目录树和块位置信息;DataNode是数据存储节点,负责存储实际数据块,每个数据块默认有3个副本,分布在不同DataNode上,通过副本实现容错。类比:就像大型图书馆,NameNode是总目录(记录每本书的位置和副本),DataNode是各个书架(存储书籍副本),副本保证即使某个书架损坏,还能从其他书架借到书。
YARN(Yet Another Resource Negotiator)是资源调度框架,负责统一管理集群所有计算资源。核心组件:ResourceManager(全局资源管理器,负责资源分配和调度)、NodeManager(每个节点上的代理,监控节点资源使用情况并上报)、ApplicationMaster(每个应用的管理者,向ResourceManager申请资源,管理任务执行)。类比:就像大型工厂的调度中心,ResourceManager是总调度(分配机器资源),NodeManager是每个工位的监控(报告机器状态),ApplicationMaster是每个生产线的负责人(管理任务分配)。
3) 【对比与适用场景】
| 对比项 | HDFS(存储层) | YARN(资源调度层) |
|---|---|---|
| 核心职责 | 分布式数据存储与持久化 | 统一管理集群计算资源(CPU、内存等) |
| 架构 | NameNode(元数据)+多个DataNode(数据块) | ResourceManager(全局)+NodeManager(节点)+ApplicationMaster(应用) |
| 关键特性 | 数据分块(默认128MB/256MB),多副本(容错) | 资源抽象(容器,如vCPU、内存),按需分配 |
| 使用场景 | 存储大规模日志、数据集(如Hive表、HBase数据) | 运行MapReduce、Spark等计算任务,支持多应用共享资源 |
| 注意点 | 副本数量影响存储空间和读取性能,需平衡 | 资源分配策略(如Fair Scheduler、Capacity Scheduler)影响任务调度公平性 |
4) 【示例】
block_repair_rate(块修复率,高值表示损坏率高)、block_repair_time(修复耗时),或Prometheus查询hdfs_datanode_block_repair_rate指标。例如,Prometheus查询:
sum(rate(hdfs_datanode_block_repair_rate[5m])) > 0.1
若指标异常,触发告警。cpu_usage_percent(CPU使用率)、memory_usage_bytes(内存使用量)、disk_io_bytes(磁盘I/O速率),或Prometheus查询yarn_node_manager_cpu_usage_percent、yarn_node_manager_memory_usage_bytes等指标。例如,Prometheus查询:
avg by(node)(yarn_node_manager_cpu_usage_percent) > 80
若CPU利用率过高,触发告警,提示资源紧张。5) 【面试口播版答案】
“HDFS主要负责分布式存储,通过NameNode和DataNode架构,数据分块并多副本存储,保证数据可靠;YARN负责资源调度,统一管理集群CPU、内存等资源,为计算任务分配资源。运维中,我们用Ganglia或Prometheus采集指标:比如HDFS的块损坏率、副本修复情况,YARN的CPU、内存、磁盘I/O利用率。通过这些指标实时监控,确保存储健康和资源稳定。具体来说,比如监控DataNode的block_repair_rate,如果过高就检查数据损坏;监控NodeManager的CPU使用率,若超过80%就调整任务调度或扩容资源,保证算力集群稳定运行。”
6) 【追问清单】
7) 【常见坑/雷区】