"HDFS进阶总结,包括HDFS概述、特点、角色、结构、NN与SNN工作机制、FSImage和EditLog解析、副本机制、读写流程、文件格式、NameNode故障处理、HDFS-HA和Yarn-HA工作机制及配置。"
1. HDFS概述
HDFS是Hadoop Distributed File System的简称,是一种分布式文件系统,设计目标是处理大规模的数据集。由于单个计算机无法容纳海量数据,HDFS通过将文件分布在多个计算节点上,实现了跨多台机器的数据存储和访问。HDFS遵循一次写入、多次读取的原则,并不支持文件的随机修改。
1.1 HDFS特点
- 高容错性:通过数据块的副本机制,保证了即使部分节点故障,数据也不会丢失。
- 分布式存储:能存储极大量的数据,支持横向扩展,提高整体存储能力。
- 兼容性强:支持多种数据类型,适应不同的应用场景。
- 成本低:利用廉价的硬件设备构建大规模存储系统。
1.2 HDFS缺点
- 低延迟读写性能不佳:HDFS不是为了处理小规模、频繁读写的任务而设计的。
- 不适合大量小文件:小文件会导致NameNode内存压力过大,因为每个文件的元数据都需要存储在NameNode内存中。
- 无法并发写入:文件只能由一个客户端写入,不支持多个客户端同时写入。
1.3 HDFS角色
- Client:用户接口,负责与HDFS交互,执行读写操作。
- NameNode:主节点,管理文件系统的命名空间和文件的元数据。
- DataNode:从节点,实际存储数据块的地方,负责数据的读写。
- Secondary NameNode:辅助NameNode,定期合并FSImage和EditLog,减轻NameNode的压力。
1.4 HDFS结构
HDFS将大文件分割成固定大小的数据块,并将这些数据块复制到多个DataNode上,通常每个数据块有三个副本。
1.5 NN与SNN工作机制
NameNode维护着整个文件系统的元数据,而Secondary NameNode主要负责周期性地将NameNode的元数据合并到一个新版本的FSImage中,减少NameNode的重启时间。
1.6 FSImage、EditLog解析
FSImage是文件系统的元数据镜像,EditLog记录所有对文件系统的更改操作。oiv工具用于查看fsimage文件,oev工具用于查看edits文件。
1.7 HDFS副本机制
HDFS通过在不同节点上存储数据块的副本,确保数据的可靠性。机架感知的副本策略可以提高读取效率和容错性。
1.8 HDFS读写流程
- 读文件:Client从NameNode获取文件数据块的位置,然后从DataNode读取数据。
- 写文件:Client将文件分割成数据块,将数据块写入DataNode,并向NameNode报告完成情况。
1.9 文件格式
HDFS中的文件由多个数据块组成,每个数据块可能分布在网络中的不同节点上。
1.10 NameNode故障处理
通过HDFS-HA(High Availability)实现NameNode的高可用,当主NameNode故障时,可以快速切换到备用NameNode。
1.11 HDFS-HA和Yarn-HA工作机制及配置
HDFS-HA和Yarn-HA都是为了提供服务的高可用性,通过配置多个NameNode或ResourceManager节点,实现故障时的无缝切换。
以上就是HDFS的进阶总结,涵盖了从基础概念到高级特性的各个方面,旨在帮助读者深入理解HDFS的工作原理和优化方法。