在kali linux中配置hadoop伪分布式

目录

    • [一. 配置静态网络](#一. 配置静态网络)
    • [二. 配置主机名与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伪分布式

关键配置文件修改

  1. hadoop-env.sh
bash 复制代码
vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh

# 设置JAVA_HOME
export JAVA_HOME=/soft/java1.8    # jdk8安装路径
  1. 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>
  1. 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>
  1. 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>
  1. 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


六. 启动与验证

  1. 格式化HDFS
bash 复制代码
hdfs namenode -format  # 仅首次启动执行
  1. 启动HDFS、YARN和JobHistory
bash 复制代码
start-dfs.sh
start-yarn.sh
mapred --daemon start historyserver
  1. 验证进程
bash 复制代码
jps  
# 应包含以下进程:
# DataNode
# SecondaryNameNode
# NameNode
# Jps
# JobHistoryServer
# ResourceManager
# NodeManager
  1. 运行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/*
  1. 网页验证
    用 kali linux本地火狐浏览器访问
  • HDFS状态 :访问 http://hadoop:9870
  • YARN状态 :访问 http://hadoop:8088
  • JobHistory状态 :访问 http://hadoop:19888

完成! 至此,Hadoop伪分布式环境已配置并验证成功。

相关推荐
倒霉男孩2 小时前
传统金融和分布式金融
分布式·金融
流烟默2 小时前
编写脚本在Linux下启动、停止SpringBoot工程
linux·spring boot·shell
IT 古月方源2 小时前
Linux 删除 /boot 后 恢复 (多种方法)
linux·运维·服务器
潇然四叶草2 小时前
rk3588 linux的rootfs.img挂载后通过chroot切换根目录安装应用提示空间不足
linux·rootfs·扩容·空间不足
Arbori_262153 小时前
linux 命令 mkdir
linux·运维·服务器
秃小弟3 小时前
在windows中编写的脚本,在linux上运行时报错linux $‘\r‘: command not found
linux·运维·服务器
左直拳3 小时前
C++程序从windows移植到linux后cmake脚本CMakeLists.txt的修改
linux·c++·windows·cmake·cmakelists·移植到linux
杜清卿3 小时前
hadoop集群配置-scp拓展使用
大数据·服务器·hadoop
别说我什么都不会4 小时前
OpenHarmony深度解读之分布式软总线:authmanager模块(4)/设备身份认证过程
分布式·嵌入式·harmonyos
所以经济危机就是没有新技术拉动增长了5 小时前
Android 和 Linux 之间关联和区别
android·linux·运维