Hadoop HDFS 简介
Hadoop HDFS(Hadoop Distributed File System,Hadoop分布式文件系统)是Hadoop生态系统的核心组件之一,专门用于存储和管理大规模数据。它是一个分布式文件系统,可以在多台机器上存储超大数据集,同时提供高容错性和高吞吐量,适用于大数据处理场景。
HDFS 的核心概念
HDFS 采用主从架构,由以下几个关键组件组成:
1. 主节点
-
负责管理整个文件系统的元数据,比如:
目录结构,文件存储在哪些主节点上,副本信息 -
不直接存储数据,而是维护文件系统的命名空间。
2. 数据节点
-
负责存储实际的数据块。
-
运行在集群中的多个机器上,每个 DataNode 负责存储不同的数据块。
-
定期向 NameNode 发送心跳信号,汇报自己的存活状态。
3. 数据块
-
HDFS 将大文件拆分成多个块,默认大小是 128MB(可以配置)。
-
每个块存储在不同的数据块上,支持多副本机制(默认 3 副本)。
HDFS 关键特性
高容错性
-
通过副本机制确保数据安全,默认情况下,每个数据块存储 3 份副本,分别存储在不同的 DataNode 上。
-
NameNode 失败时可通过元数据恢复。
高吞吐量
-
适用于大文件存储和顺序读取,支持并行处理,适合大数据分析场景。
流式数据访问
-
设计上适用于一次写入,多次读取的模式,不适合频繁修改数据。
可扩展性
-
只需增加新的数据块,就能扩展存储能力。
HDFS 运行流程示例
文件存储
-
客户端向节点发送存储请求,节点解析请求并确定数据块存储位置。
-
文件被拆分成多个块,每个块按照副本因子(默认 3)存储在多个数据块上。
-
数据块确认存储成功,并向节点汇报。
文件读取
-
客户端向节点请求文件,节点返回块及其所在的数据块信息。
-
客户端直接从数据块读取数据,而不经过节点,减少瓶颈。
HDFS 适用场景
-
大规模数据存储(如 TB 级、PB 级数据)
-
日志分析、数据挖掘
-
大数据处理(如 Hadoop MapReduce、Spark)
-
机器学习、人工智能数据处理
Hadoop HDFS 搭建与使用教程
1. 安装 Hadoop 环境
(1)准备环境
-
操作系统:Linux(推荐 Ubuntu 或 CentOS),也可在 Windows 的 WSL2 或 Docker 运行
-
Java 环境:Hadoop 依赖 Java 运行,建议安装 OpenJDK 8 或 11
-
SSH 配置:Hadoop 需要 SSH 访问自己
(2)安装 Java
(3)下载并安装 Hadoop
2. 配置 HDFS
(1)修改 core-site.xml
vim $HADOOP_HOME/etc/hadoop/core-site.xml
修改或添加:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
(2)修改 hdfs-site.xml
vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml
添加:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value> <!-- 伪分布模式设置为1,集群模式可以设3 -->
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///usr/local/hadoop/data/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///usr/local/hadoop/data/datanode</value>
</property>
</configuration>
(3)格式化 HDFS
hdfs namenode -format
3. 启动 HDFS
(1)启动 NameNode 和 DataNode
start-dfs.sh
如果 start-dfs.sh
不存在,可以手动启动:
hadoop-daemon.sh start namenode
hadoop-daemon.sh start datanode
(2)检查 HDFS 运行状态
jps
应看到 NameNode、DataNode、SecondaryNameNode 进程。
(3)查看 Web 界面
HDFS 默认提供一个 Web UI,打开浏览器访问:
http://localhost:9870
可查看 HDFS 状态、存储情况等。