目录
- 
- [一. 配置静态网络](#一. 配置静态网络)
- [二. 配置主机名与IP地址映射](#二. 配置主机名与IP地址映射)
- [三. 配置SSH免密登录](#三. 配置SSH免密登录)
- [四. 配置Java和Hadoop环境](#四. 配置Java和Hadoop环境)
- [五. 配置Hadoop伪分布式](#五. 配置Hadoop伪分布式)
- [六. 启动与验证](#六. 启动与验证)
 
一. 配置静态网络
原因:Hadoop集群依赖稳定的网络通信,动态IP可能导致节点失联。静态IP确保节点始终通过固定地址通信。
操作步骤:
            
            
              bash
              
              
            
          
          # 修改网络配置文件
sudo vim /etc/network/interfaces
# 添加内容(根据实际网络修改):
auto eth0
iface eth0 inet static
address 192.168.238.150
netmask 255.255.255.0
gateway 192.168.238.2
# 断开网络
sudo systemctl stop networking
# 修改dns文件
sudo vim /etc/resolv.conf
# 添加内容(根据实际网络修改)
nameserver 192.168.238.2
# 启动网络
sudo systemctl start networking二. 配置主机名与IP地址映射
原因:通过主机名代替IP,提高配置可读性。
操作步骤:
            
            
              bash
              
              
            
          
          # 修改主机名
sudo hostnamectl set-hostname hadoop 
# 修改hosts文件
sudo vim /etc/hosts
# 添加映射(根据实际情况修改):
192.168.238.150 hadoop
# 重启生效
reboot三. 配置SSH免密登录
原因:Hadoop节点间需频繁通信,免密登录简化操作并支持自动化任务。
操作步骤:
            
            
              bash
              
              
            
          
          # 生成密钥对(一路回车)
ssh-keygen -t rsa
# 将公钥拷贝到本机
ssh-copy-id hadoop  # 本机
# 测试免密登录
ssh hadoop四. 配置Java和Hadoop环境
原因:Hadoop基于Java开发,依赖JVM运行;环境变量使在终端识别命令。
jdk8官方下载
hadoop3.4.1官方下载
操作步骤:
            
            
              bash
              
              
            
          
          # 分别解压jdk8和hadoop
tar -zxvf  
# 配置环境变量
vim ~/.zshrc
# 添加以下内容:
export JAVA_HOME=/soft/java1.8   # jdk8安装路径
export HADOOP_HOME=/soft/hadoop-3.4.1   # Hadoop安装路径
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# 生效配置
source ~/.zshrc五. 配置Hadoop伪分布式
关键配置文件修改:
            
            
              bash
              
              
            
          
          vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh
# 设置JAVA_HOME
export JAVA_HOME=/soft/java1.8    # jdk8安装路径- core-site.xml
            
            
              xml
              
              
            
          
          <!-- Hadoop核心配置文件 -->
<configuration>
  <!-- 定义Hadoop文件系统的默认URI -->
  <property>
    <!-- 
      NameNode的访问地址和端口:
      - 协议:hdfs:// 表示HDFS协议
      - hadoop: 主机名(需与/etc/hosts中的映射一致)
      - 9000: NameNode的默认RPC通信端口
    -->
    <name>fs.defaultFS</name>
    <value>hdfs://hadoop:9000</value>
  </property>
  <!-- 定义Hadoop临时存储目录 -->
  <property>
    <!-- 
      作用:
      - 存放NameNode、DataNode等组件的运行时数据
      - 必须预先创建目录并设置权限(建议755)
      注意:
      - 路径中的 /soft/hadoop-3.4.1 需与实际安装路径一致
      - 如果目录不存在会导致Hadoop启动失败
    -->
    <name>hadoop.tmp.dir</name>
    <value>/soft/hadoop-3.4.1/data/hadoop_tmp</value>
  </property>
</configuration>- hdfs-site.xml
            
            
              xml
              
              
            
          
          <!-- HDFS分布式文件系统配置文件 -->
<configuration>
  <!-- 定义HDFS文件块的副本数量 -->
  <property>
    <!-- 
      作用:
      - 控制HDFS中每个数据块的副本数(默认3)
      - 伪分布式环境下只能设置为1(单节点无法生成多副本)
      注意:
      - 生产环境中通常设置为3以保证数据冗余
    -->
    <name>dfs.replication</name>
    <value>1</value>
  </property>
  <!-- 定义NameNode元数据存储目录 -->
  <property>
    <!-- 
      作用:
      - 存储HDFS文件系统的元数据:
        * 文件系统命名空间(fsimage)
        * 编辑日志(edits)
      重要:
      - 必须预先创建目录并设置权限(建议755)
      - 该目录内容丢失会导致HDFS数据不可恢复
    -->
    <name>dfs.namenode.name.dir</name>
    <value>/soft/hadoop-3.4.1/data/hadoop_data/dfs/namenode</value>
  </property>
  <!-- 定义DataNode数据块存储目录 -->
  <property>
    <!-- 
      作用:
      - 存储实际的数据块内容
      - 每个DataNode可以有多个存储目录(用逗号分隔)
      注意:
      - 目录结构会自动生成(version子目录等)
      - 磁盘空间不足会导致DataNode异常
    -->
    <name>dfs.datanode.data.dir</name>
    <value>/soft/hadoop-3.4.1/data/hadoop_data/dfs/datanode</value>
  </property>
</configuration>- mapred-site.xml
            
            
              xml
              
              
            
          
          <!-- MapReduce任务调度与历史服务配置文件 -->
<configuration>
  <!-- 指定MapReduce运行框架 -->
  <property>
    <!-- 
      作用:
      - 设置MapReduce作业的运行时框架为YARN
      - 可选值:local(本地模式), classic(旧版MR1框架), yarn(YARN框架)
      注意:
      - Hadoop 3.x 必须设置为yarn才能使用资源调度
    -->
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
  </property>
  <!-- 配置MapReduce ApplicationMaster环境变量 -->
  <property>
    <!-- 
      作用:
      - 定义ApplicationMaster进程的环境变量
      - $HADOOP_HOME需要替换为实际路径(建议直接写绝对路径)
      示例:
      <value>HADOOP_MAPRED_HOME=/opt/hadoop</value>
    -->
    <name>yarn.app.mapreduce.am.env</name>
    <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
  </property>
  <!-- 配置Map任务环境变量 -->
  <property>
    <!-- 
      作用:
      - 定义所有Map任务执行时的环境变量
      - 确保Map任务能正确访问Hadoop库
    -->
    <name>mapreduce.map.env</name>
    <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
  </property>
  <!-- 配置Reduce任务环境变量 -->
  <property>
    <!-- 
      作用:
      - 定义所有Reduce任务执行时的环境变量
      - 与Map任务配置同理
    -->
    <name>mapreduce.reduce.env</name>
    <value>HADOOP_MAPRED_HOME=$HADOOP_HOME</value>
  </property>
  <!-- 历史服务器RPC地址 -->
  <property>
    <!-- 
      作用:
      - 历史服务器(JobHistory Server)的RPC通信地址
      - hadoop为主机名(需在/etc/hosts中配置解析)
      - 10020为默认RPC端口
      注意:
      - 需启动服务:mapred --daemon start historyserver
    -->
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop:10020</value>
  </property>
  <!-- 历史服务器Web界面地址 -->
  <property>
    <!-- 
      作用:
      - 历史服务器的HTTP访问地址
      - 默认端口19888
      访问方式:
      - http://hadoop:19888
    -->
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop:19888</value>
  </property>
  <!-- 历史服务器HTTPS地址 -->
  <property>
    <!-- 
      作用:
      - 历史服务器的HTTPS安全访问地址
      - 默认端口19890
      注意:
      - 需要配置SSL证书才能启用
    -->
    <name>mapreduce.jobhistory.webapp.https.address</name>
    <value>hadoop:19890</value>
  </property>
</configuration>- yarn-site.xml
            
            
              xml
              
              
            
          
          <!-- YARN NodeManager 辅助服务配置 -->
<configuration>
  <!-- 定义NodeManager需要启用的附加服务 -->
  <property>
    <!-- 
      关键作用:
      - 指定NodeManager支持的辅助服务类型
      - mapreduce_shuffle 是MapReduce作业的专用Shuffle服务
      技术细节:
      - Shuffle是MapReduce中将Map输出传递给Reduce的关键阶段
      - 该服务负责管理中间数据的排序、分组和传输
      配置要求:
      - 必须显式声明才能支持MapReduce作业
      - 值必须严格保持为 mapreduce_shuffle(区分大小写)
      关联影响:
      - 未正确配置会导致MapReduce作业卡在 reduce 0% 状态
    -->
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
  </property>
</configuration>更多详细的配置参考 hadoop doc
六. 启动与验证
- 格式化HDFS
            
            
              bash
              
              
            
          
          hdfs namenode -format  # 仅首次启动执行- 启动HDFS、YARN和JobHistory
            
            
              bash
              
              
            
          
          start-dfs.sh
start-yarn.sh
mapred --daemon start historyserver- 验证进程
            
            
              bash
              
              
            
          
          jps  
# 应包含以下进程:
# DataNode
# SecondaryNameNode
# NameNode
# Jps
# JobHistoryServer
# ResourceManager
# NodeManager- 运行WordCount测试
            
            
              bash
              
              
            
          
          # 创建输入目录
hdfs dfs -mkdir /input
hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /input
# 执行WordCount
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.4.1.jar
 wordcount /input /output
# 查看结果
hdfs dfs -cat /output/*- 网页验证
 用 kali linux本地火狐浏览器访问
- HDFS状态 :访问 http://hadoop:9870
- YARN状态 :访问 http://hadoop:8088
- JobHistory状态 :访问 http://hadoop:19888
完成! 至此,Hadoop伪分布式环境已配置并验证成功。