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

      来开放端口。

相关推荐
想ai抽2 小时前
吃透大数据算法-霍夫曼编码(Huffman Coding)
大数据·数据结构·算法
笨蛋少年派2 小时前
Hadoop简介
大数据·hadoop
Hello.Reader3 小时前
Flink 高级配置发行版剖析、Scala 版本、Table 依赖与 Hadoop 集成实战
hadoop·flink·scala
孟意昶3 小时前
Spark专题-第三部分:性能监控与实战优化(3)-数据倾斜优化
大数据·分布式·sql·spark
Lansonli3 小时前
大数据Spark(六十六):Transformation转换算子sample、sortBy和sortByKey
大数据·分布式·spark
武子康3 小时前
大数据-117 - Flink JDBC Sink 详细解析:MySQL 实时写入、批处理优化与最佳实践 写出Kafka
大数据·后端·flink
数据小子21412 小时前
【自记】MaxCompute中的冒烟测试
大数据·maxcompute
未来之窗软件服务14 小时前
万象EXCEL开发(九)excel 高级混合查询 ——东方仙盟金丹期
大数据·excel·仙盟创梦ide·东方仙盟·万象excel
文火冰糖的硅基工坊15 小时前
[人工智能-综述-21]:学习人工智能的路径
大数据·人工智能·学习·系统架构·制造