十三、格式化 HDFS 文件系统、启动伪分布式集群

一、 格式化 HDFS 文件系统

Hadoop 生态中的文件系统 HDFS 类似一块磁盘,初次使用硬盘需要格式化,让存储空间明白该按什么方式组织存储数据。

格式化 HDFS,此操作仅需执行一次。

执行命令:

bash 复制代码
hdfs namenode -format

如图 3.23 所示,确认格式化结果。

bash 复制代码
2023-06-14 23:28:06,122 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.num.users = 10
2023-06-14 23:28:06,122 INFO metrics.TopMetrics: NNTop conf: dfs.namenode.top.windows.minute = 1,5,25
2023-06-14 23:28:06,124 INFO namenode.FSNamesystem: Retry cache on namenode is enabled
2023-06-14 23:28:06,124 INFO namenode.FSNamesystem: Retry cache will use 0.03 of total heap and retry cache entry expiry time is 600000 millis
2023-06-14 23:28:06,125 INFO util.GSet: Computing capacity for map NameNodeRetryCache
2023-06-14 23:28:06,125 INFO util.GSet: VM type       = 64-bit
2023-06-14 23:28:06,126 INFO util.GSet: 0.029999999329447746% max memory 495.5 MB = 142.6 KB
2023-06-14 23:28:06,126 INFO util.GSet: capacity      = 2^14 = 16384 entries
2023-06-14 23:28:06,149 INFO namenode.FSImage: Allocated new BlockPoolId: BP-624839550-127.0.0.1-1686754686141
说明格式化成功
2023-06-14 23:28:06,163 INFO common.Storage: Storage directory /opt/module/hadoop-3.2.1/tmp/dfs/name has been successfully formatted.
2023-06-14 23:28:06,180 INFO namenode.FSImageFormatProtobuf: Saving image file /opt/module/hadoop-3.2.1/tmp/dfs/name/current/fsimage.ckpt_0000000000000000000 using no compression
2023-06-14 23:28:06,242 INFO namenode.FSImageFormatProtobuf: Image file /opt/module/hadoop-3.2.1/tmp/dfs/name/current/fsimage.ckpt_0000000000000000000 of size 399 bytes saved in 3 seconds .
2023-06-14 23:28:06,251 INFO namenode.NNStorageRetentionManager: Going to retain 1 images with txid >= 0
2023-06-14 23:28:06,255 INFO namenode.FSImage: FSImageSaver clean checkpoint: txid=0 when me et shutdown.
2023-06-14 23:28:06,256 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/127.0.0.1
************************************************************/

图 3.23 格式化结果确认

二、启动伪分布式集群

(1)启动 Hadoop 集群

执行命令:

bash 复制代码
start-all.sh
(2)查看各节点的服务进程,确认集群启动是否成功

执行命令:

bash 复制代码
jps

如图 3.24 所示,可以查看到 NameNodeDataNodeResourceManagerSecondaryNameNodeNodeManager 五个服务进程则表示 Hadoop 启动正常。

bash 复制代码
[root@localhost ~]# jps
2708 NodeManager
2078 NameNode
2341 SecondaryNameNode
3130 Jps
2155 DataNode
2589 ResourceManager

图 3.24 Hadoop 进程

(3)确认安装部署成功

① 打开 Google 浏览器,输入地址

bash 复制代码
 http://192.168.128.130:9870

可以打开 HDFS 页面。

图 3.25 HDFS 管理页面

如图 3.25 所示,在 HDFS 主页中可以获得许多信息。

  • Overview:集群概述。介绍了集群的基本情况,包括版本、集群 ID、安全模式、数据节点文件系统的容量和使用率、数据存储的路径等基本信息。

  • Datanode:数据节点。包含了数据节点使用率柱状图、每个数据节点的磁盘使用率、运行中的节点、进入维护的节点列表、退役的节点列表等信息。

  • datanode-volume-failures:数据节点卷故障。

  • snapshot:快照。包含了快照摘要、快照目录列表、已创建的快照目录等信息。

  • startup-progress :启动进度。包含了集群启动时加载的 fsimageedits 信息。

  • Utilities:包含了集群 DFS 存储系统的可视化浏览、各个集群组件的日志等信息。

② 打开 Google 浏览器,输入地址 http://192.168.128.130:8088,可以打开 Yarn 页面。

图 3.26 YARN 管理页面

如图 3.26 所示,在 Yarn 主页中可以获得许多信息。

  • Active Nodes :表示 Yarn 集群管理的节点的个数,其实就是 NodeManager 的个数,我们集群有 1 个 NodeManager

  • Memory Total :表示 Yarn 集群管理的内存的总大小,这个内存总大小等于所有的 NodeManager 管理的内存之和。

  • Vcores Total :表示 Yarn 集群管理的 CPU 的虚拟核心的总数,这个大小等于所有的 NodeManager 管理的虚拟核心之和。

  • Scheduler Type:表示资源分配的类型。

  • Minimum Allocation :最小分配资源,即当一个任务向 Yarn 申请资源时,Yarn 至少会分配 <memory: 1024, vCores: 1> 这个资源给这个任务。分配的最小内存可以由 yarn-site.xml 配置文件中的 yarn.scheduler.minimum-allocation-mb(默认值是 1024MB)来控制,最小核心数可以由 yarn-site.xml 配置文件中的 yarn.scheduler.minimum-allocation-vcores(默认值是 1)来控制。

  • Maximum Allocation :最大分配资源,即当一个任务向 Yarn 申请资源时,Yarn 最多会分配 <memory: 1630, vCores: 2> 这个资源给这个任务。这个分配的最大内存由 yarn-site.xml 配置文件中的 yarn.scheduler.maximum-allocation-mb(默认值是 8192MB)来控制,最多核心数可以由 yarn-site.xml 配置文件中的 yarn.scheduler.maximum-allocation-vcores(默认值是 32)来控制,当然这两个值肯定不能比集群管理的资源还要多。

③ 还可以使用 netstat -ntpl 命令查看 ip 和端口地址是否正常 执行命令:

bash 复制代码
netstat -nltp

如图 3.27 所示,使用 netstat -ntpl 命令查看 ip 和端口地址。

bash 复制代码
[root@localhost ~]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:8030            0.0.0.0:*               LISTEN      2589/java
tcp        0      0 0.0.0.0:8031            0.0.0.0:*               LISTEN      2589/java
tcp        0      0 0.0.0.0:8032            0.0.0.0:*               LISTEN      2589/java
tcp        0      0 0.0.0.0:8033            0.0.0.0:*               LISTEN      2589/java
tcp        0      0 127.0.0.1:33739         0.0.0.0:*               LISTEN      2155/java
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      2087/java
tcp        0      0 0.0.0.0:8040            0.0.0.0:*               LISTEN      2708/java
tcp        0      0 0.0.0.0:8042            0.0.0.0:*               LISTEN      2708/java
tcp        0      0 0.0.0.0:9864            0.0.0.0:*               LISTEN      2155/java
tcp        0      0 0.0.0.0:9866            0.0.0.0:*               LISTEN      2155/java
tcp        0      0 0.0.0.0:9867            0.0.0.0:*               LISTEN      2155/java
tcp        0      0 0.0.0.0:9868            0.0.0.0:*               LISTEN      2155/java
tcp        0      0 0.0.0.0:34926           0.0.0.0:*               LISTEN      2341/java
tcp        0      0 0.0.0.0:9870            0.0.0.0:*               LISTEN      2087/java
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      887/sshd
tcp        0      0 0.0.0.0:9876            0.0.0.0:*               LISTEN      2087/java
tcp        0      0 127.0.0.1:8888          0.0.0.0:*               LISTEN      2589/master
tcp        0      0 0.0.0.0:13562           0.0.0.0:*               LISTEN      2708/java
tcp6       0      0 :::22                   :::*                    LISTEN      887/sshd
tcp6       0      0 ::1:125                 :::*                    LISTEN      7808/jsvc
tcp6       0      0 :::*                    :::*                    LISTEN      1897/master

图 3.27 开发端口一览

bash 复制代码
[root@localhost ~]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:8030            0.0.0.0:*               LISTEN      2589/java
tcp        0      0 0.0.0.0:8031            0.0.0.0:*               LISTEN      2589/java
tcp        0      0 0.0.0.0:8032            0.0.0.0:*               LISTEN      2589/java
tcp        0      0 0.0.0.0:8033            0.0.0.0:*               LISTEN      2589/java
tcp        0      0 127.0.0.1:33739         0.0.0.0:*               LISTEN      2155/java
tcp        0      0 127.0.0.1:9000          0.0.0.0:*               LISTEN      2087/java
tcp        0      0 0.0.0.0:8040            0.0.0.0:*               LISTEN      2708/java
tcp        0      0 0.0.0.0:8042            0.0.0.0:*               LISTEN      2708/java
tcp        0      0 0.0.0.0:9864            0.0.0.0:*               LISTEN      2155/java
tcp        0      0 0.0.0.0:9866            0.0.0.0:*               LISTEN      2155/java
tcp        0      0 0.0.0.0:9867            0.0.0.0:*               LISTEN      2155/java
tcp        0      0 0.0.0.0:9868            0.0.0.0:*               LISTEN      2155/java
tcp        0      0 0.0.0.0:34926           0.0.0.0:*               LISTEN      2341/java
tcp        0      0 0.0.0.0:9870            0.0.0.0:*               LISTEN      2087/java
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      887/sshd
tcp        0      0 0.0.0.0:9876            0.0.0.0:*               LISTEN      2087/java
tcp        0      0 127.0.0.1:8888          0.0.0.0:*               LISTEN      2589/master
tcp        0      0 0.0.0.0:13562           0.0.0.0:*               LISTEN      2708/java
tcp6       0      0 :::22                   :::*                    LISTEN      887/sshd
tcp6       0      0 ::1:125                 :::*                    LISTEN      7808/jsvc
tcp6       0      0 :::*                    :::*                    LISTEN      1897/master

三、报错问题处理

1、主机名映射到IP问题

从报错信息 Node1: ssh: Could not resolve hostname node1: Name or service not known 来看,这是因为系统无法解析主机名 Node1,导致在启动 NameNodeSecondaryNameNode 时出现问题 ,尽管你修改了 core-site.xml 中的 NameNode 地址,但这个主机名解析问题依然存在。以下是一些可能的原因及解决办法:

/etc/hosts 文件配置问题

/etc/hosts 文件用于将主机名映射到 IP 地址,Hadoop 启动时会依赖它来解析主机名。

bash 复制代码
vim /etc/hosts
  • 解决方法 :使用文本编辑器打开 /etc/hosts 文件(命令 vim /etc/hosts),确保文件中有一行包含你主机的 IP 地址和主机名的映射关系。例如,如果你的主机 IP 是 192.168.1.100,主机名是 Node1,那么文件中应该有这样一行:

    bash 复制代码
    192.168.128.130 Node1

    保存文件后,再尝试启动 HDFS

2、运行进程问题(停止进程、运行进程)

NameNode 正在以进程 ID 为 3671 的进程运行,要先停止它(才能执行格式化操作)。

解决办法

可以使用以下命令停止 NameNode 进程:

bash 复制代码
hdfs --daemon stop namenode

停止后,再执行 hdfs namenode -format 命令来格式化 NameNode。

执行 stop-all.sh 停止所有服务,再执行 start-all.sh 启动

bash 复制代码
stop-all.sh 
bash 复制代码
start-all.sh

3、网页无法打开,防火墙问题

检查防火墙设置

  • 若 Hadoop 服务器开启了防火墙,需确保9870端口在防火墙的允许访问规则内。

    • 对于 iptables 防火墙,可使用

      bash 复制代码
       ​​​​​​​iptables -A INPUT -p tcp --dport 9870 -j ACCEPT

      命令开放端口(需根据实际系统调整)。

    • 对于 firewalld 防火墙,可使用

      bash 复制代码
      firewall-cmd --zone=public --add-port=9870/tcp --permanent

      然后再使用

      bash 复制代码
      firewall-cmd --reload

      来开放端口。

相关推荐
黄焖鸡能干四碗1 小时前
网络安全建设实施方案(Word文件参考下载)
大数据·网络·人工智能·安全·web安全·制造
云境筑桃源哇2 小时前
马踏春风 为爱启航 | 瑞派宠物医院(南部新城旗舰店)盛大开业!打造宠物医疗新标杆!
大数据·宠物
xixixi777773 小时前
2026 年 03 月 20 日 AI+通信+安全行业日报(来更新啦)
大数据·人工智能·安全·ai·大模型·通信
F36_9_3 小时前
大数据治理平台选型避坑:2026 年 8 大主流系统实测
大数据·数据治理
成长之路5143 小时前
【实证分析】A股上市公司企业劳动力需求数据集(2000-2023年)
大数据
奔跑的呱呱牛4 小时前
GeoJSON 在大数据场景下为什么不够用?替代方案分析
java·大数据·servlet·gis·geojson
Lab_AI4 小时前
电池材料行业数据管理新突破:AI4S驱动的科学数据平台正在重塑电池材料开发范式
大数据·人工智能·ai4s·电池材料开发·电池材料研发·电池材料创新·ai材料研发
FindAI发现力量4 小时前
智能工牌:线下销售场景的数字化赋能解决方案
大数据·人工智能·销售管理·ai销售·ai销冠·销售智能体
故事和你914 小时前
sdut-python-实验四-python序列结构(21-27)
大数据·开发语言·数据结构·python·算法
念陌曦5 小时前
Flink总结
大数据·flink