【大数据技术详解】——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)。
相关推荐
坚持就完事了4 小时前
Hadoop实战初步学习
hadoop·学习
It's Q9 小时前
hive学习分区&&函数
hive·hadoop·学习
李白的天不白12 小时前
删除文件方法
big data
lifewange13 小时前
Hadoop 全套常用 Shell 命令完整版
大数据·hadoop·npm
lifewange14 小时前
Hadoop 完整入门详解
大数据·hadoop·分布式
菜鸟小码1 天前
Hive数据模型、架构、表类型与优化策略
hive·hadoop·架构
IT从业者张某某1 天前
基于Docker的hadoop容器安装hive并测试
hive·hadoop·docker
IT从业者张某某1 天前
基于Docker的hadoop容器安装zookeeper
hadoop·docker·zookeeper
菜鸟小码2 天前
深入理解 Hive 数据模型
数据仓库·hive·hadoop
菜鸟小码2 天前
Hive环境搭建与配置优化
数据仓库·hive·hadoop