一、核心逻辑
伪分布式模式是Hadoop在单台物理机上模拟多节点(NameNode, DataNode, ResourceManager, NodeManager等)运行的一种部署方式。虽然所有守护进程都在同一台机器上运行,但它们在逻辑上是独立的进程,相互之间通过配置的网络地址(如localhost)进行通信,模拟了一个完整分布式集群的架构和工作流程。此模式是学习Hadoop运行机制、进行应用开发和功能测试的理想环境,其核心逻辑在于通过修改配置文件,将Hadoop从单机"本地模式"切换为多守护进程协同工作的"分布式模式"。
二、环境准备原理
Hadoop运行于Java环境之上,其所有组件均由Java编写,因此必须首先安装并正确配置Java开发工具包(JDK)。环境准备的核心是建立稳定的软件运行基座:
-
Java环境 :安装指定版本的JDK(如JDK 11),并设置
JAVA_HOME环境变量,为Hadoop提供统一的Java运行时和编译环境。 -
主机映射 :在
/etc/hosts文件中配置主机名(如hadoop102)与IP地址(如127.0.0.1)的映射关系。这确保了集群进程间能够通过主机名正确寻址和通信,这是分布式系统网络通信的基础。 -
SSH免密登录 :Hadoop的启动脚本(如
start-dfs.sh,start-yarn.sh)需要通过SSH连接到各个节点以启动守护进程。配置SSH本地回环免密登录(ssh localhost),是为了避免每次启动时都需要手动输入密码,实现自动化集群管理。
三、核心配置原理
Hadoop的运作行为完全由一系列XML配置文件驱动。搭建伪分布式集群的本质就是修改这些核心配置文件,明确指定各个守护进程的运行角色、存储路径和网络地址。关键配置包括:
-
core-site.xml:配置集群的全局核心参数。
fs.defaultFS:定义Hadoop文件系统(HDFS)的默认访问URI(如hdfs://hadoop102:9000),指明NameNode所在的主机和RPC端口,这是所有客户端和DataNode访问文件系统的入口。
-
hdfs-site.xml:配置HDFS相关的参数。
-
dfs.replication:设置HDFS中数据块的副本数量。在伪分布式下,由于只有一台机器,此值通常设置为1。 -
dfs.namenode.name.dir和dfs.datanode.data.dir:分别指定NameNode的元数据存储目录和DataNode的实际数据块存储目录。将两者分开有助于元数据的管理和数据安全。
-
-
yarn-site.xml:配置YARN资源管理框架的参数。
-
yarn.resourcemanager.hostname:指定ResourceManager服务运行的主机。 -
yarn.nodemanager.aux-services:配置NodeManager的辅助服务,通常为mapreduce_shuffle,以便运行MapReduce程序。
-
-
mapred-site.xml:配置MapReduce计算框架的参数。
mapreduce.framework.name:指定MapReduce作业的运行框架,设置为yarn表示将任务提交给YARN进行资源调度和执行。
四、启动与验证原理
配置完成后,通过格式化与启动命令使集群进入运行状态,并通过一系列验证操作确认集群各组件工作正常。
-
格式化HDFS :执行
hdfs namenode -format命令。此操作并非磁盘格式化,而是在dfs.namenode.name.dir指定目录下初始化NameNode所需的持久化数据结构(如fsimage),创建空的命名空间。一个集群生命周期内通常只执行一次,重复格式化会导致原有数据丢失。 -
启动集群:
-
使用
start-dfs.sh脚本启动HDFS相关的守护进程(NameNode, DataNode, SecondaryNameNode)。 -
使用
start-yarn.sh脚本启动YARN相关的守护进程(ResourceManager, NodeManager)。
-
-
进程与Web UI验证 :通过
jps命令查看Java进程,确认NameNode, DataNode, ResourceManager, NodeManager等关键进程已存在。通过访问对应的Web管理界面(如NameNode的http://hadoop102:9870和 ResourceManager的http://hadoop102:8088),可以图形化地监控集群状态、存储情况和作业执行情况,这是验证集群服务是否正常对外提供能力的最直接方式。 -
HDFS操作验证:在HDFS上执行基本的文件系统操作,如创建目录、上传本地文件、列出目录内容等。这验证了从客户端到HDFS整个数据通路的完整性和功能性,是确认集群"可用"而非仅仅"在运行"的关键步骤。