)
一、整体流程概览表格阶段核心目标关键操作环境准备配置基础依赖虚拟机网络 / 共享文件夹、JDK/Hadoop 安装、环境变量配置权限配置集群自动化启停SSH 免密登录配置集群配置伪分布式参数设置5 个核心配置文件修改、HDFS 格式化集群启动验证集群可用性启动集群、进程检查、HDFS 功能测试问题修复解决启动 / 运行报错环境变量持久化、root 用户启动权限配置二、详细步骤含代码 含义阶段 1基础环境配置1. 共享文件夹挂载解决重启后文件丢失bash运行# 临时挂载重启失效立即生效 vmhgfs-fuse .host:/vm_share /mnt/hgfs -o allow_other,nonempty # 永久挂载开机自动生效 echo vmhgfs-fuse .host:/vm_share /mnt/hgfs -o allow_other,nonempty /etc/rc.d/rc.local chmod x /etc/rc.d/rc.local含义将 Windows 共享文件夹vm_share挂载到 CentOS 的/mnt/hgfs目录实现跨系统文件共享allow_other允许所有用户访问nonempty允许挂载到非空目录。2. JDK/Hadoop 环境变量配置bash运行# 编辑/etc/profile永久生效 vi /etc/profile # 新增以下内容根据实际路径修改 export JAVA_HOME/usr/local/java/jdk1.8.0_471 export HADOOP_HOME/usr/local/hadoop/hadoop-3.3.5 export PATH$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin # 立即加载环境变量 source /etc/profile # 环境变量持久化解决SSH会话丢失问题 echo source /etc/profile /etc/bashrc含义JAVA_HOME/HADOOP_HOME指定 JDK 和 Hadoop 的安装根目录PATH将 JDK/Hadoop 的可执行命令加入系统全局路径任意目录可执行java/hadoop命令source /etc/profile让配置立即生效无需重启终端写入/etc/bashrc确保 SSH 新建会话也能加载环境变量。3. 环境验证bash运行# 验证JDK java -version # 验证Hadoop hadoop version含义检查 JDK/Hadoop 是否安装成功输出版本号即表示配置生效。阶段 2SSH 免密登录配置集群启停必备bash运行# 1. 生成SSH密钥无密码一路回车 ssh-keygen -t rsa -f ~/.ssh/id_rsa -N # 2. 公钥加入授权列表 cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys # 3. 修正权限SSH安全要求 chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh # 4. 自动信任localhost避免首次连接确认 ssh-keyscan localhost ~/.ssh/known_hosts # 5. 测试免密登录 ssh localhost含义ssh-keygen生成 RSA 密钥对-N 表示空密码无需手动输入authorized_keys存放信任的公钥SSH 登录时验证权限600/700SSH 要求授权文件 / 目录权限不能过松否则拒绝免密登录ssh localhost测试本机免密登录直接进入终端即成功。阶段 3Hadoop 核心配置文件修改一键配置脚本保存到共享文件夹hadoop_setup.shbash运行#!/bin/bash HADOOP_HOME/usr/local/hadoop/hadoop-3.3.5 CONF_DIR$HADOOP_HOME/etc/hadoop # 1. core-site.xml指定默认文件系统和临时目录 cat $CONF_DIR/core-site.xml EOF ?xml version1.0 encodingUTF-8? configuration property namefs.defaultFS/name valuehdfs://localhost:9000/value /property property namehadoop.tmp.dir/name value/usr/local/hadoop/tmp/value /property /configuration EOF # 2. hdfs-site.xmlHDFS副本数伪分布式设为1 cat $CONF_DIR/hdfs-site.xml EOF ?xml version1.0 encodingUTF-8? configuration property namedfs.replication/name value1/value /property property namedfs.permissions.enabled/name valuefalse/value /property /configuration EOF # 3. mapred-site.xml指定MapReduce运行在YARN上 cat $CONF_DIR/mapred-site.xml EOF ?xml version1.0 encodingUTF-8? configuration property namemapreduce.framework.name/name valueyarn/value /property property namemapreduce.application.classpath/name value$HADOOP_HOME/share/hadoop/mapreduce/*:$HADOOP_HOME/share/hadoop/mapreduce/lib/*/value /property /configuration EOF # 4. yarn-site.xmlYARN资源管理配置 cat $CONF_DIR/yarn-site.xml EOF ?xml version1.0 encodingUTF-8? configuration property nameyarn.resourcemanager.address/name valuelocalhost:8032/value /property property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property property nameyarn.nodemanager.env-whitelist/name valueJAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME/value /property /configuration EOF # 5. hadoop-env.sh指定JDK路径允许root启动 sed -i s#export JAVA_HOME.*#export JAVA_HOME/usr/local/java/jdk1.8.0_471#g $CONF_DIR/hadoop-env.sh cat $CONF_DIR/hadoop-env.sh EOF export HDFS_NAMENODE_USERroot export HDFS_DATANODE_USERroot export HDFS_SECONDARYNAMENODE_USERroot export YARN_RESOURCEMANAGER_USERroot export YARN_NODEMANAGER_USERroot EOF # 创建临时目录 mkdir -p /usr/local/hadoop/tmp echo ✅ Hadoop配置完成执行脚本bash运行# 清理Windows换行符添加执行权限执行 sed -i s/\r$// /mnt/hgfs/hadoop_setup.sh chmod x /mnt/hgfs/hadoop_setup.sh /mnt/hgfs/hadoop_setup.sh配置文件含义core-site.xmlfs.defaultFS指定 HDFS 的默认访问地址hadoop.tmp.dir是 Hadoop 的临时目录必须配置否则启动报错hdfs-site.xmldfs.replication1伪分布式只有 1 个副本dfs.permissions.enabledfalse关闭权限检查新手友好mapred-site.xml指定 MapReduce 基于 YARN 调度yarn-site.xml配置 YARN 的资源管理器地址和 Shuffle 服务hadoop-env.sh显式指定 JDK 路径声明 root 为运行用户解决 Hadoop 3.x 禁止 root 启动的问题。阶段 4HDFS 格式化 集群启动bash运行# 格式化HDFS仅首次执行 hdfs namenode -format # 启动集群 start-all.sh # 检查进程需看到5个核心进程 jps含义hdfs namenode -format初始化 HDFS 的元数据生成 NameNode 的存储目录仅首次启动执行start-all.sh一键启动 HDFSNameNode/DataNode和 YARNResourceManager/NodeManagerjps查看 Java 进程正常输出NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager。阶段 5集群功能验证bash运行# 1. 创建HDFS目录 hdfs dfs -mkdir /test # 2. 上传本地文件到HDFS hdfs dfs -put /etc/profile /test # 3. 查看HDFS文件 hdfs dfs -ls /test # 4. 查看文件内容 hdfs dfs -cat /test/profile # 5. 下载文件到本地 hdfs dfs -get /test/profile /root/含义验证 HDFS 的目录创建、文件上传、读取、下载功能全部执行成功即表示集群可用。阶段 6常见问题修复bash运行# 1. 解决JAVA_HOME丢失Hadoop启动脚本显式指定 echo export JAVA_HOME/usr/local/java/jdk1.8.0_471 $HADOOP_HOME/etc/hadoop/hadoop-env.sh # 2. 重启集群先停后启 stop-all.sh sleep 3 start-all.sh三、核心总结基础依赖先配置 JDK/Hadoop 环境变量挂载共享文件夹确保命令全局可用免密登录SSH 免密是集群自动化启停的前提必须配置且修正权限核心配置修改 5 个配置文件重点解决 JDK 路径和 root 启动权限问题启动验证格式化 HDFS 后启动集群通过jps检查进程通过 HDFS 操作验证功能持久化环境变量和共享文件夹挂载需配置开机自动生效避免重启失效。按照以上步骤执行可流畅完成伪分布式集群搭建若扩展为真实分布式集群只需将配置文件中的localhost替换为各节点 IP在多台机器同步配置并配置节点间免密登录即可。