十三、格式化 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

      来开放端口。

相关推荐
Dxy12393102164 小时前
别再让 ES 把你拖垮!5 个实战技巧让搜索性能提升 10 倍
大数据·elasticsearch·搜索引擎
2501_943695335 小时前
大专市场调查与统计分析专业,怎么辨别企业招聘的“画饼”岗位?
大数据
七夜zippoe5 小时前
CANN Runtime跨进程通信 共享设备上下文的IPC实现
大数据·cann
威胁猎人5 小时前
【黑产大数据】2025年全球电商业务欺诈风险研究报告
大数据
十月南城5 小时前
Hadoop基础认知——HDFS、YARN、MapReduce在现代体系中的位置与价值
hadoop·hdfs·mapreduce
L543414465 小时前
告别代码堆砌匠厂架构让你的系统吞吐量翻倍提升
大数据·人工智能·架构·自动化·rpa
证榜样呀5 小时前
2026 大专计算机专业必考证书推荐什么
大数据·前端
LLWZAI6 小时前
让朱雀AI检测无法判断的AI公众号文章,当创作者开始与算法「躲猫猫」
大数据·人工智能·深度学习
SickeyLee6 小时前
产品经理案例分析(五):电商产品后台设计:撑起前台体验的 “隐形支柱”
大数据
callJJ6 小时前
Spring AI 文本聊天模型完全指南:ChatModel 与 ChatClient
java·大数据·人工智能·spring·spring ai·聊天模型