1. 首页 > Hadoop教程 > 正文

大数据教程FG003-Hadoop HDFS部署与格式化实战

本文档风哥主要介绍Hadoop HDFS部署与格式化实战,包括HDFS架构原理、HDFS核心组件角色、HDFS核心特性、HDFS集群规划、HDFS配置文件说明、HDFS核心参数配置、Hadoop安装部署、HDFS格式化操作、HDFS服务启动、HDFS集群验证、HDFS功能测试、HDFS常见问题处理等内容,风哥教程参考Hadoop官方文档HDFS Commands、HdfsDesign等内容,适合大数据运维人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。

Part01-基础概念与理论知识

1.1 HDFS架构原理

HDFS(Hadoop Distributed File System)是Hadoop的核心组件,是一个分布式文件系统,设计用于在廉价硬件上运行,提供高吞吐量的数据访问。更多视频教程www.fgedu.net.cn

HDFS架构特点:

  • 主从架构:NameNode(主节点)和DataNode(从节点)
  • 块存储:文件被切分成块(默认128MB),分布存储在多个DataNode
  • 副本机制:每个块默认3个副本,提高数据可靠性
  • 心跳机制:DataNode定期向NameNode发送心跳
  • 机架感知:副本分布在不同机架,提高容错性

1.2 HDFS核心组件角色

HDFS核心组件角色:

组件 角色 功能
NameNode 主节点 管理文件系统命名空间、管理数据块映射、处理客户端请求
DataNode 从节点 存储数据块、执行读写操作、定期发送心跳
SecondaryNameNode 辅助节点 合并编辑日志和镜像文件、辅助NameNode
JournalNode 协调节点 存储编辑日志、用于NameNode HA
ZKFC 故障转移控制器 监控NameNode状态、执行故障转移

1.3 HDFS核心特性

HDFS核心特性:

  • 高容错性:自动检测和恢复故障节点
  • 高吞吐量:适合大规模数据集的访问
  • 大文件存储:适合存储大文件,不适合小文件
  • 顺序读写:适合顺序读写,不适合随机读写
  • 一次写入多次读取:文件写入后不支持修改
风哥提示:HDFS是Hadoop的核心存储组件,理解HDFS架构原理对于大数据运维至关重要。学习交流加群风哥微信: itpux-com

Part02-生产环境规划与建议

2.1 HDFS集群规划

HDFS集群规划需要考虑节点数量、硬件配置、存储容量等因素:

# HDFS集群规划(示例)

## 集群规模:10节点

## NameNode节点(2台)
nn1.fgedu.net.cn(192.168.1.10)
– CPU:16核
– 内存:128GB
– 磁盘:2TB RAID1
– 部署:NameNode、ZKFC、JournalNode

nn2.fgedu.net.cn(192.168.1.11)
– CPU:16核
– 内存:128GB
– 磁盘:2TB RAID1
– 部署:NameNode、ZKFC、JournalNode

## DataNode节点(6台)
dn1-dn6.fgedu.net.cn(192.168.1.12-17)
– CPU:16核
– 内存:64GB
– 磁盘:12块8TB(JBOD)
– 部署:DataNode

## ZooKeeper节点(3台)
zk1-zk3.fgedu.net.cn(192.168.1.18-20)
– CPU:8核
– 内存:16GB
– 磁盘:500GB
– 部署:ZooKeeper、JournalNode

2.2 HDFS配置文件说明

HDFS核心配置文件:

# HDFS配置文件说明

## core-site.xml
Hadoop核心配置文件,包括:
– fs.defaultFS:默认文件系统
– hadoop.tmp.dir:临时目录
– io.file.buffer.size:IO缓冲区大小

## hdfs-site.xml
HDFS配置文件,包括:
– dfs.replication:副本数
– dfs.namenode.name.dir:NameNode数据目录
– dfs.datanode.data.dir:DataNode数据目录
– dfs.blocksize:块大小
– dfs.namenode.handler.count:NameNode处理线程数

## hadoop-env.sh
Hadoop环境变量配置,包括:
– JAVA_HOME:JDK路径
– HADOOP_HEAPSIZE:堆内存大小
– HADOOP_LOG_DIR:日志目录

2.3 HDFS核心参数配置

HDFS核心参数配置建议:

# HDFS核心参数配置

## core-site.xml配置
fs.defaultFS
hdfs://mycluster
hadoop.tmp.dir
/bigdata/tmp/hadoop
io.file.buffer.size
131072
ha.zookeeper.quorum
zk1:2181,zk2:2181,zk3:2181

## hdfs-site.xml配置
dfs.replication
3
dfs.blocksize
134217728
dfs.namenode.name.dir
file:///bigdata/fgdata/namenode
dfs.datanode.data.dir
file:///bigdata/fgdata/datanode
dfs.namenode.handler.count
100
dfs.datanode.handler.count
10

生产环境建议:HDFS块大小建议设置为128MB或256MB,副本数建议设置为3,NameNode内存根据文件数量进行调整。学习交流加群风哥QQ113257174

Part03-生产环境项目实施方案

3.1 Hadoop安装部署

3.1.1 下载并解压Hadoop

# 下载Hadoop
cd /bigdata/app
wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.5/hadoop-3.3.5.tar.gz

# 解压Hadoop
tar -zxvf hadoop-3.3.5.tar.gz

# 创建软链接
ln -s hadoop-3.3.5 hadoop

# 设置权限
chown -R hadoop:hadoop hadoop-3.3.5
chown -R hadoop:hadoop hadoop

# 验证安装
ls -l hadoop

lrwxrwxrwx 1 hadoop hadoop 13 Apr 8 11:00 hadoop -> hadoop-3.3.5

3.1.2 配置Hadoop环境变量

# 配置环境变量
cat >> /etc/profile << 'EOF' export HADOOP_HOME=/bigdata/app/hadoop export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export HADOOP_YARN_HOME=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME EOF # 使环境变量生效 source /etc/profile # 验证环境变量 echo $HADOOP_HOME /bigdata/app/hadoop # 验证Hadoop版本 hadoop version Hadoop 3.3.5 Source code repository https://github.com/apache/hadoop.git -r a3b9c37a397ad4188041dd80621bdeefc46885f2 Compiled by stevel on 2023-03-15T14:56Z Compiled with protoc 3.7.1 From source with checksum 7b4fe90e1c6b9e7e6c6c6c6c6c6c6c6c This command was run using /bigdata/app/hadoop-3.3.5/share/hadoop/common/hadoop-common-3.3.5.jar

3.1.3 配置hadoop-env.sh

# 配置hadoop-env.sh
cat > $HADOOP_HOME/etc/hadoop/hadoop-env.sh << 'EOF' # Java环境 export JAVA_HOME=/bigdata/app/jdk1.8.0_281 # Hadoop环境 export HADOOP_HOME=/bigdata/app/hadoop export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop export HADOOP_LOG_DIR=/bigdata/logs/hadoop export HADOOP_PID_DIR=/bigdata/tmp/hadoop # NameNode内存 export HADOOP_NAMENODE_OPTS="-Xmx64g" # DataNode内存 export HADOOP_DATANODE_OPTS="-Xmx8g" # 其他参数 export HADOOP_HEAPSIZE_MAX=2048 export HADOOP_HEAPSIZE_MIN=1024 EOF # 创建日志目录 mkdir -p /bigdata/logs/hadoop mkdir -p /bigdata/tmp/hadoop chown -R hadoop:hadoop /bigdata/logs chown -R hadoop:hadoop /bigdata/tmp

3.2 HDFS格式化操作

3.2.1 配置HDFS配置文件

# 配置core-site.xml
cat > $HADOOP_HOME/etc/hadoop/core-site.xml << 'EOF'

fs.defaultFS
hdfs://nn1:9000
hadoop.tmp.dir
/bigdata/tmp/hadoop
io.file.buffer.size
131072

EOF

# 配置hdfs-site.xml
cat > $HADOOP_HOME/etc/hadoop/hdfs-site.xml << 'EOF'

dfs.replication
3
dfs.blocksize
134217728
dfs.namenode.name.dir
file:///bigdata/fgdata/namenode
dfs.datanode.data.dir
file:///bigdata/fgdata/datanode
dfs.namenode.http-address
nn1:9870
dfs.namenode.secondary.http-address
nn2:9868
dfs.permissions.enabled
true

EOF

3.2.2 格式化NameNode

# 切换到hadoop用户
su – hadoop

# 创建NameNode数据目录
mkdir -p /bigdata/fgdata/namenode
mkdir -p /bigdata/fgdata/datanode

# 格式化NameNode
hdfs namenode -format

WARNING: /bigdata/logs/hadoop does not exist. Creating.
2026-04-08 11:10:30,123 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = nn1.fgedu.net.cn/192.168.1.10
STARTUP_MSG: args = [-format]
STARTUP_MSG: version = 3.3.5
************************************************************/
2026-04-08 11:10:30,456 INFO namenode.NameNode: registered UNIX signal handlers for [TERM, HUP, INT]
2026-04-08 11:10:30,789 INFO namenode.NameNode: createNameNode [-format]
2026-04-08 11:10:31,012 INFO namenode.NameNode: Formatting using clusterid: CID-abc123-def456-ghi789
2026-04-08 11:10:31,234 INFO namenode.FSNamesystem: No KeyProvider found.
2026-04-08 11:10:31,456 INFO namenode.FSNamesystem: fsLock is fair: true
2026-04-08 11:10:31,678 INFO blockmanagement.DatanodeManager: dfs.block.invalidate.limit=1000
2026-04-08 11:10:31,890 INFO blockmanagement.DatanodeManager: dfs.namenode.datanode.registration.ip-hostname-check=true
2026-04-08 11:10:32,012 INFO blockmanagement.BlockManager: dfs.namenode.startup.delay.block.deletion.sec is set to 000:00:00:00.000
2026-04-08 11:10:32,234 INFO blockmanagement.BlockManager: The block deletion will start around 2026 Apr 08 11:10:32
2026-04-08 11:10:32,456 INFO util.GSet: Computing capacity for graph Blocks.
2026-04-08 11:10:32,678 INFO util.GSet: VM type = 64-bit
2026-04-08 11:10:32,890 INFO util.GSet: 2.0% max memory 1.8 GB = 36.6 MB
2026-04-08 11:10:33,012 INFO util.GSet: capacity = 2^22 = 4194304 entries
2026-04-08 11:10:33,234 INFO namenode.FSDirectory: ACLs enabled? false
2026-04-08 11:10:33,456 INFO namenode.FSDirectory: POSIX ACL inheritance enabled? true
2026-04-08 11:10:33,678 INFO namenode.FSDirectory: XAttrs enabled? true
2026-04-08 11:10:33,890 INFO namenode.NameNode: Caching file names occurring more than 10 times
2026-04-08 11:10:34,012 INFO snapshot.SnapshotManager: Loaded snapshot capture using 0ms.
2026-04-08 11:10:34,234 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at nn1.fgedu.net.cn/192.168.1.10
************************************************************/

# 验证格式化结果
ls -l /bigdata/fgdata/namenode/current/

total 16
-rw-r–r– 1 hadoop hadoop 1041 Apr 8 11:10 VERSION
-rw-r–r– 1 hadoop hadoop 249 Apr 8 11:10 seen_txid
-rw-r–r– 1 hadoop hadoop 323 Apr 8 11:10 fsimage_0000000000000000000
-rw-r–r– 1 hadoop hadoop 62 Apr 8 11:10 fsimage_0000000000000000000.md5

风哥提示:NameNode格式化只能执行一次,重复格式化会导致集群ID不一致,DataNode无法连接NameNode。更多学习教程公众号风哥教程itpux_com

3.3 HDFS服务启动

3.3.1 启动HDFS服务

# 启动NameNode
hdfs –daemon start namenode

# 查看NameNode进程
jps

12345 NameNode
12456 Jps

# 查看NameNode日志
tail -f /bigdata/logs/hadoop/hadoop-hadoop-namenode-nn1.log

2026-04-08 11:15:30,123 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = nn1.fgedu.net.cn/192.168.1.10
STARTUP_MSG: args = []
STARTUP_MSG: version = 3.3.5
************************************************************/
2026-04-08 11:15:30,456 INFO namenode.NameNode: registered UNIX signal handlers for [TERM, HUP, INT]
2026-04-08 11:15:30,789 INFO namenode.NameNode: createNameNode []
2026-04-08 11:15:31,012 INFO namenode.NameNode: NameNode RPC server is starting
2026-04-08 11:15:31,234 INFO namenode.NameNode: NameNode HTTP server is starting on port 9870
2026-04-08 11:15:31,456 INFO namenode.NameNode: NameNode HTTP server started on port 9870

# 启动DataNode(在所有DataNode节点执行)
hdfs –daemon start datanode

# 查看DataNode进程
jps

12345 DataNode
12456 Jps

# 启动SecondaryNameNode
hdfs –daemon start secondarynamenode

# 查看所有进程
jps

12345 NameNode
12456 SecondaryNameNode
12567 DataNode
12678 Jps

3.3.2 验证HDFS服务

# 查看HDFS安全模式状态
hdfs dfsadmin -safemode get

Safe mode is OFF

# 查看HDFS集群状态
hdfs dfsadmin -report

Configured Capacity: 576460752003072 (524 TB)
Present Capacity: 518826795417600 (471.7 TB)
DFS Remaining: 518826795417600 (471.7 TB)
DFS Used: 0 (0 B)
DFS Used%: 0.00%
Replicated Blocks:
Under replicated blocks: 0
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 0
Low redundancy blocks: 0
Pending deletion blocks: 0
Erasure Coded Block Groups:
Block groups with corrupt internal blocks: 0
Missing block groups: 0
Low redundancy block groups: 0
Pending deletion block groups: 0

————————————————-
Live datanodes (6):

Name: 192.168.1.12:9866 (dn1.fgedu.net.cn)
Hostname: dn1.fgedu.net.cn
Decommission Status : Normal
Configured Capacity: 96076792006784 (87.3 TB)
DFS Used: 0 (0 B)
Non DFS Used: 96076792006784 (87.3 TB)
DFS Remaining: 0 (0 B)
DFS Used%: 0.00%
DFS Remaining%: 0.00%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Wed Apr 08 11:20:30 CST 2026
Last Block Report: Wed Apr 08 11:20:30 CST 2026
Num of Blocks: 0

# 访问HDFS Web界面
# 浏览器访问:http://nn1:9870

Part04-生产案例与实战讲解

4.1 HDFS集群验证

4.1.1 创建测试目录

# 创建测试目录
hdfs dfs -mkdir -p /user/hadoop/test

# 查看目录
hdfs dfs -ls /

Found 1 items
drwxr-xr-x – hadoop supergroup 0 2026-04-08 11:25 /user

# 查看详细目录
hdfs dfs -ls -R /

drwxr-xr-x – hadoop supergroup 0 2026-04-08 11:25 /user
drwxr-xr-x – hadoop supergroup 0 2026-04-08 11:25 /user/hadoop
drwxr-xr-x – hadoop supergroup 0 2026-04-08 11:25 /user/hadoop/test

4.1.2 上传测试文件

# 创建测试文件
echo “Hello Hadoop” > /tmp/test.txt

# 上传文件到HDFS
hdfs dfs -put /tmp/test.txt /user/hadoop/test/

# 查看文件
hdfs dfs -ls /user/hadoop/test/

Found 1 items
-rw-r–r– 3 hadoop supergroup 13 2026-04-08 11:30 /user/hadoop/test/test.txt

# 查看文件内容
hdfs dfs -cat /user/hadoop/test/test.txt

Hello Hadoop

# 查看文件块信息
hdfs fsck /user/hadoop/test/test.txt -files -blocks -locations

Connecting to namenode via http (nn1:9870)…
FSCK started by hadoop (auth:SIMPLE) from /192.168.1.10 for path /user/hadoop/test/test.txt at Wed Apr 08 11:35:30 CST 2026
/user/hadoop/test/test.txt 13 bytes, 1 block(s): OK
0. BP-1234567890-192.168.1.10-1234567890123:blk_1073741825_1001 len=13 Live_repl=3 [DatanodeInfoWithStorage[192.168.1.12:9866,DS-1234567890,DISK], DatanodeInfoWithStorage[192.168.1.13:9866,DS-1234567891,DISK], DatanodeInfoWithStorage[192.168.1.14:9866,DS-1234567892,DISK]]

Status: HEALTHY
Number of data-nodes: 6
Number of racks: 1
Total blocks: 1
Avg block size: 13.00 B
Min block size: 13.00 B
Max block size: 13.00 B

FSCK ended at Wed Apr 08 11:35:30 CST 2026 in 2 milliseconds

4.2 HDFS功能测试

4.2.1 文件操作测试

# 创建目录
hdfs dfs -mkdir -p /fgedu/data

# 上传文件
hdfs dfs -put /etc/hosts /fgedu/data/

# 下载文件
hdfs dfs -get /fgedu/data/hosts /tmp/hosts_download

# 复制文件
hdfs dfs -cp /fgedu/data/hosts /fgedu/data/hosts_backup

# 移动文件
hdfs dfs -mv /fgedu/data/hosts_backup /fgedu/data/hosts_mv

# 删除文件
hdfs dfs -rm /fgedu/data/hosts_mv

Deleted /fgedu/data/hosts_mv

# 删除目录
hdfs dfs -rm -r /fgedu

Deleted /fgedu

# 查看文件统计信息
hdfs dfs -stat “%y %n” /user/hadoop/test/test.txt

2026-04-08 11:30:00 test.txt

# 查看文件大小
hdfs dfs -du -h /user/hadoop/test/

13 39 /user/hadoop/test/test.txt

4.2.2 权限管理测试

# 修改文件权限
hdfs dfs -chmod 755 /user/hadoop/test

# 修改文件所有者
hdfs dfs -chown root:root /user/hadoop/test/test.txt

# 查看权限
hdfs dfs -ls /user/hadoop/test/

Found 1 items
-rwxr-xr-x 3 root root 13 2026-04-08 11:30 /user/hadoop/test/test.txt

4.3 HDFS常见问题处理

4.3.1 NameNode无法启动

# 问题现象:NameNode无法启动
# 分析步骤:

# 1. 查看NameNode日志
tail -100 /bigdata/logs/hadoop/hadoop-hadoop-namenode-nn1.log

# 2. 检查端口占用
netstat -tulnp | grep 9000

tcp 0 0 0.0.0.0:9000 0.0.0.0:* LISTEN 12345/java

# 3. 检查NameNode数据目录
ls -l /bigdata/fgdata/namenode/current/

# 4. 检查配置文件
cat $HADOOP_HOME/etc/hadoop/core-site.xml
cat $HADOOP_HOME/etc/hadoop/hdfs-site.xml

# 5. 检查主机名解析
ping nn1

# 解决方案:
# – 检查配置文件是否正确
# – 检查端口是否被占用
# – 检查数据目录是否存在
# – 检查主机名解析是否正常

4.3.2 DataNode无法连接NameNode

# 问题现象:DataNode无法连接NameNode
# 分析步骤:

# 1. 查看DataNode日志
tail -100 /bigdata/logs/hadoop/hadoop-hadoop-datanode-dn1.log

# 2. 检查集群ID是否一致
cat /bigdata/fgdata/datanode/current/VERSION

# 3. 检查网络连接
telnet nn1 9000

# 4. 检查防火墙
systemctl status firewalld

# 解决方案:
# – 如果集群ID不一致,需要重新格式化或删除DataNode数据目录
# – 检查网络连接和防火墙配置
# – 确保NameNode正常运行

Part05-风哥经验总结与分享

5.1 HDFS部署最佳实践

HDFS部署最佳实践:

  • 高可用架构:生产环境必须配置NameNode HA
  • 数据目录分离:NameNode和DataNode数据目录分开存储
  • 日志分离:日志目录单独挂载,避免磁盘满影响服务
  • 定期备份:定期备份NameNode元数据
  • 监控告警:建立完善的监控告警体系

5.2 HDFS性能优化建议

HDFS性能优化建议:

# HDFS性能优化建议

## NameNode优化
– 增加NameNode内存
– 增加处理线程数
– 使用SSD存储元数据

## DataNode优化
– 增加DataNode数量
– 增加磁盘数量
– 使用JBOD模式
– 配置多数据目录

## 网络优化
– 使用万兆网络
– 配置网络绑定
– 优化网络参数

## 块大小优化
– 大文件:256MB或512MB
– 小文件:64MB或128MB
– 根据业务场景调整

5.3 HDFS部署检查清单

HDFS部署检查清单:

HDFS部署检查清单:

  • □ JDK已安装并配置环境变量
  • □ Hadoop已安装并配置环境变量
  • □ 配置文件已正确配置
  • □ NameNode已格式化
  • □ NameNode服务已启动
  • □ DataNode服务已启动
  • □ HDFS Web界面可访问
  • □ 文件上传下载正常
  • □ 副本分布正常
  • □ 监控告警已配置
风哥提示:HDFS部署是Hadoop集群的基础,必须确保每个步骤都正确执行,避免后期出现各种问题。from bigdata视频:www.itpux.com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息