【大数据技术详解】——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)。
相关推荐
zhixingheyi_tian4 小时前
KunPeng 之 BoostKit
big data
小跘an吻纸8 小时前
linux系统搭建hadoop环境
linux·运维·hadoop
源码之家10 小时前
计算机毕业设计:Python汽车销量智能分析与预测系统 Flask框架 scikit-learn 可视化 requests爬虫 AI 大模型(建议收藏)✅
人工智能·hadoop·python·算法·数据分析·flask·课程设计
极光代码工作室11 小时前
基于Spark的用户行为分析系统设计
大数据·hadoop·python·数据分析·数据可视化
chunyublog12 小时前
HBase 2.4.18 分布式集群搭建教程(适配 Hadoop 3.3.4 + ZooKeeper 3.5.6)
hadoop·分布式·hbase
ClouderaHadoop1 天前
漏洞扫描发现 Solr CVE-2017-12629 对 CDH 集群影响分析
hadoop·solr·lucene·cdh
Joy T1 天前
【大数据】离线数仓核心组件:Hive 架构解析与进阶操作指南
大数据·数据仓库·hive·hadoop·架构
jasnet_u1 天前
在Hadoop3.3.6上搭建Hive3.1.2
hive·hadoop
Francek Chen2 天前
【大数据存储与管理】分布式数据库HBase:06 HBase编程实践
大数据·数据库·hadoop·分布式·hbase
源码之家2 天前
计算机毕业设计:基于Python的二手车数据分析可视化系统 Flask框架 可视化 时间序列预测算法 逻辑回归 requests 爬虫 大数据(建议收藏)✅
大数据·hadoop·python·算法·数据分析·flask·课程设计