【大数据技术详解】——HDFS技术(学习笔记)

HDFS 核心概念

HDFS(Hadoop Distributed File System)是 Hadoop 的核心组件之一,设计用于存储超大规模数据集,并运行在廉价硬件上。其核心特点包括:

  • 分布式存储:数据分散存储在集群的多个节点上。
  • 高容错性 :通过数据副本(默认 3 份)保障数据安全。
  • 流式访问:适合批处理场景,而非低延迟访问。

HDFS 架构

  • NameNode :主节点,管理文件系统的元数据(如文件目录树、块位置)。
  • DataNode:从节点,存储实际数据块并定期向 NameNode 汇报。
  • Secondary NameNode:辅助 NameNode 合并编辑日志,防止日志过大。

HDFS 文件读写流程

写入流程

  1. 客户端向 NameNode 发起写入请求,NameNode 检查权限并分配 DataNode 列表。
  2. 客户端将数据分块(默认 128MB)并写入第一个 DataNode,该节点进一步复制到其他节点。
  3. 写入完成后,NameNode 更新元数据。

读取流程

  1. 客户端向 NameNode 请求文件块位置信息。
  2. 客户端直接从最近的 DataNode 读取数据块。

元数据的定义

  • 元数据(Metadata)是描述数据的数据,用于提供关于其他数据的上下文、结构、特征或管理信息。它帮助用户理解、查找、管理和使用数据资源。

类似:数据块的大小,数据块存放的位置,文件类型,文件大小。

  • 适合顺序读写,不适合频繁修改或低延迟访问。

元数据的应用场景

  • 数据治理:确保数据质量、一致性和可追溯性。
  • 搜索引擎优化 :HTML中的<meta>标签(如descriptionkeywords)提升网页检索效率。
  • 科学研究:科研数据集的标准描述(如DOI标识符、FAIR原则)。

HDFS 常用命令

复制代码
# 查看文件列表  
hdfs dfs -ls /path  

# 上传文件  
hdfs dfs -put localfile /hdfs/path  

# 下载文件  
hdfs dfs -get /hdfs/path localfile  

# 删除文件  
hdfs dfs -rm /hdfs/path  

# 查看文件内容  
hdfs dfs -cat /hdfs/path  

HDFS 配置参数

关键配置文件为 hdfs-site.xml,常见参数:

复制代码
<property>  
  <name>dfs.replication</name>  
  <value>3</value> <!-- 副本数 -->  
</property>  
<property>  
  <name>dfs.blocksize</name>  
  <value>134217728</value> <!-- 块大小(字节) -->  
</property>  

HDFS 高可用(HA)

通过 Zookeeper 和共享存储(如 JournalNode)实现 NameNode 的主备切换,避免单点故障。

高可用模式(HA启用时)

通过配置高可用性,集群会部署两个NameNode:

  • Active NameNode:处理所有客户端请求和元数据操作。
  • Standby NameNode :实时同步Active NameNode的元数据,准备在故障时接管服务。

两者通过共享存储(如Quorum Journal Manager或NFS)保持元数据同步,并通过ZooKeeper实现自动故障转移。

关键注意事项

  • 物理服务器数量:两个NameNode通常部署在不同物理服务器上以避免单点故障。
  • 扩展性:HDFS不支持横向扩展多个NameNode(即不能超过两个),但可通过联邦模式(HDFS Federation)将命名空间分区到多个NameNode。

HDFS 副本计算距离公式

HDFS(Hadoop Distributed File System)通过副本机制确保数据的可靠性和容错性。副本的放置策略基于网络拓扑距离计算,以优化数据访问性能和网络带宽利用率。

网络拓扑距离计算

HDFS 使用树状网络拓扑模型,将节点分为多个层级(如数据中心、机架、节点)。距离计算公式如下:

  • 同一节点:距离为 0(即本地副本)。
  • 同一机架不同节点:距离为 2。
  • 不同机架:距离为 4。
  • 不同数据中心:距离为 6(通常由配置决定)。
副本放置策略

默认策略(3 副本)的放置规则:

  1. 第一个副本放在写入请求的客户端所在节点(若客户端不在集群内,则随机选择)。
  2. 第二个副本放在与第一个副本不同机架的随机节点。
  3. 第三个副本放在相同机架的不同节点。

HDFS 适用场景

  • 海量数据存储(如日志、ETL 中间结果)。

HDFS 不适合的场景

HDFS(Hadoop Distributed File System)是为大数据批处理设计的分布式文件系统,但在某些场景下表现不佳:

低延迟数据访问

HDFS 针对高吞吐量而非低延迟优化,不适合需要毫秒级响应的场景(如在线交易系统)。其设计基于顺序读写,随机访问性能较差。

大量小文件存储

NameNode 将文件元数据存储在内存中,单个小文件会占用与大型文件相同的元数据空间。存储大量小文件会导致内存压力,影响集群扩展性。

实时数据写入

HDFS 采用"一次写入多次读取"模型,不支持文件随机修改。仅允许追加写入,且实时同步写入效率低于传统文件系统。

多用户写入同一文件

HDFS 不支持并发写入同一文件,仅允许单写入者多读取者模式。需要频繁协作编辑的场景(如共享文档)不适用。

学习资源推荐

  • 官方文档:Apache HDFS
  • 实践工具:Hadoop 单机/集群环境搭建(如 Docker 或 Cloudera QuickStart VM)。
相关推荐
光电的一只菜鸡21 小时前
小白从零开始学agent(二)——如何高效编写 Prompt 与 Skill
hadoop·microsoft·prompt
ha_lydms4 天前
Hologres 简介
大数据·hadoop·阿里云·mapreduce·yarn·dataworks·hologres
Francek Chen7 天前
【大数据处理与分析】实验5:MapReduce初级编程实践
大数据·hadoop·分布式·mapreduce
开开心心就好9 天前
内存清理工具定时自动清理开机自启动
java·开发语言·elasticsearch·ocr·excel·音视频·big data
迅易科技12 天前
Power BI 新功能解读:重构 AI 时代的企业数据建设内核
微软·big data·powerbi
Zhu75812 天前
在k8s集群环境部署高可用的Apache Hadoop3.1.1定制版集群
hadoop·kubernetes
还有你Y13 天前
软件工程架构
hadoop·架构·软件工程
曾阿伦17 天前
Windows 下运行 Hadoop 并部署到 AWS EMR 指南
hadoop·windows·aws
极光代码工作室18 天前
基于Spark的日志监控与分析平台
大数据·hadoop·python·spark·数据可视化
真上帝的左手19 天前
19. 大数据-概念
大数据·big data