Hadoop三大组件之HDFS(一)

1. HDFS的架构

HDFS(Hadoop Distributed File System)采用主从架构,由一个NameNode(主节点)和多个DataNode(从节点)组成。NameNode负责管理数据块映射信息(如文件名、文件目录、权限、块位置等)并配置副本策略,而DataNode负责存储实际的数据块。Secondary NameNode辅助NameNode进行元数据的检查点操作。

2. HDFS的读写流程

2.1 写流程

  1. 客户端向NameNode发起写请求,提供文件名和大小等信息。
  2. NameNode将文件划分为数据块,记录副本位置并返回给客户端。
  3. 客户端根据位置信息,将数据块发送给对应的DataNode。
  4. DataNode接收数据块后,将其存储到本地磁盘。
  5. 在写入时,DataNode先写入临时文件,完成后转为永久文件。
  6. DataNode定期向NameNode报告数据块信息。

2.2 读流程

  1. 客户端访问NameNode,查询元数据,获得数据块位置列表。
  2. 选择就近的DataNode服务器,建立输入流请求。
  3. DataNode向输入流中写数据,以packet校验。
  4. 关闭输入流。

3. HDFS的优缺点

3.1 优点

  • 高容错:数据块复制存储,节点故障时自动恢复。
  • 高吞吐:并行处理数据块,高效读写和批处理。
  • 适合大文件:将大文件分块存储,适合大规模数据处理。

3.2 缺点

  • 延迟高:不适合低延迟数据访问。
  • 小文件存储不高效:浪费存储空间和元数据开销。

使用场景:大规模数据存储和计算、日志分析。

4. HDFS默认存储块大小

HDFS默认块大小为128MB(2.3版本后),基于最佳传输损耗理论。较大文件块减少寻址时间,提高传输效率。

5. HDFS的心跳机制

DataNode每隔3秒向NameNode发送心跳信号,报告状态和存储信息。如10分钟未收到心跳信号,NameNode认为节点不可用,并重新分配数据块副本。

6. HDFS的负载均衡

HDFS的负载均衡机制确保数据在DataNode上的分布均匀。当DataNode存储利用率过高时,系统自动将数据迁移至空闲的DataNode。通过手动命令或配置参数调整负载均衡策略。

7. Secondary NameNode

Secondary NameNode辅助NameNode进行元数据的检查点操作。定期从NameNode获取fsimage和edits文件,合并生成新的fsimage文件,发送回NameNode,以减小edits文件大小,防止NameNode重启时加载过多日志。


相关推荐
drebander3 分钟前
MySQL 查询优化案例分享
数据库·mysql
初晴~19 分钟前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·
DolphinScheduler社区23 分钟前
作业帮基于 Apache DolphinScheduler 3_0_0 的缺陷修复与优化
大数据
盖世英雄酱5813624 分钟前
InnoDB 的页分裂和页合并
数据库·后端
SeaTunnel25 分钟前
京东科技基于 Apache SeaTunnel 复杂场景适配 #数据集成
大数据
喝醉酒的小白2 小时前
Elasticsearch 配置文件
大数据·elasticsearch·搜索引擎
一只敲代码的猪2 小时前
Llama 3 模型系列解析(一)
大数据·python·llama
YashanDB2 小时前
【YashanDB知识库】XMLAGG方法的兼容
数据库·yashandb·崖山数据库
智慧化智能化数字化方案2 小时前
深入解读数据资产化实践指南(2024年)
大数据·人工智能·数据资产管理·数据资产入表·数据资产化实践指南
独行soc2 小时前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍11基于XML的SQL注入(XML-Based SQL Injection)
数据库·安全·web安全·漏洞挖掘·sql注入·hw·xml注入