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

      来开放端口。

相关推荐
码龄3年 审核中3 小时前
说说SSH的端口转发
大数据·运维·ssh
SeaTunnel4 小时前
(二)从分层架构到数据湖仓架构:数据仓库分层下的技术架构与举例
大数据·数据仓库·数据分析·数据同步
数据库安全4 小时前
牛品推荐|分类分级效能飞跃:美创智能数据安全分类分级平台
大数据·人工智能·分类
数据库安全5 小时前
《金融电子化》:构建金融韧性运行安全体系:从灾备管理到主动防御新范式
大数据·安全·金融
GG向前冲5 小时前
【大数据】Spark MLlib 机器学习流水线搭建
大数据·机器学习·spark-ml
我要升天!7 小时前
Git的原理与使用 -- 基础操作
大数据·服务器·git·elasticsearch
阿里云大数据AI技术7 小时前
云栖实录 | 实时计算 Flink 全新升级 - 全栈流处理平台助力实时智能
大数据·人工智能
鲜枣课堂8 小时前
重新安全定义,IMS算网融合加速企业专网AI+场景落地
大数据·人工智能·安全
阿里云大数据AI技术9 小时前
云栖实录 | 驰骋在数据洪流上:Flink+Hologres驱动零跑科技实时计算的应用与实践
大数据·flink
北邮-吴怀玉9 小时前
1.2.1.3 大数据方法论与实践指南-一种跨团队业务结算方式探索
大数据