【大数据技术详解】——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)。
相关推荐
晨曦5432101 天前
CentOS网络配置全解析:从ifconfig到实战
hadoop·虚拟机
Elieal1 天前
Tomcat面试
数据仓库·hive·hadoop
王的宝库2 天前
MapReduce / Hive / Pig :从底层批处理到 SQL/脚本落地
hive·hadoop·sql·mapreduce
升职佳兴2 天前
告别 nohup:Hive Metastore 交给 systemd 托管的完整步骤
数据仓库·hive·hadoop
IT从业者张某某2 天前
Docker部署Hadoop-01-Docker安装
hadoop·docker·eureka
IT从业者张某某2 天前
Docker部署Hadoop-04-把Hadoop容器导出导入并使用
java·hadoop·docker
升职佳兴2 天前
Hadoop 三节点集群环境变量工程化:从 /etc/profile 迁移到 /etc/profile.d/ 全过程记录
大数据·hadoop·分布式
IT从业者张某某2 天前
Docker部署Hadoop-05-配置Docker容器的命名卷和挂载卷
hadoop·docker·容器
网络工程小王3 天前
【大数据技术详解】——HIVE技术(学习笔记)
大数据·hive·hadoop