Hadoop Linux 单机部署全攻略:从环境配置到集群模拟

一、Hadoop单机部署的核心价值与适用场景

Hadoop作为分布式存储与计算框架,其单机部署模式在开发测试、教学演示及轻量级数据处理场景中具有显著优势。相较于集群部署,单机模式无需多节点协调,能够以极低的硬件成本模拟Hadoop核心功能,尤其适合以下场景:

  1. 本地开发验证:开发者可在个人电脑上快速验证MapReduce程序逻辑,避免因集群环境差异导致的调试困难。
  2. 教学实验:高校或培训机构可通过单机部署演示HDFS文件操作、MapReduce计算流程等核心概念。
  3. 轻量级数据处理:处理GB级以下数据时,单机模式可避免集群资源闲置造成的浪费。

需注意,单机模式无法体现Hadoop的分布式优势(如容错性、横向扩展性),生产环境仍需采用集群部署。

二、环境准备:硬件与软件要求

1. 硬件配置建议

  • 内存:至少8GB(建议16GB),需为Hadoop进程预留4GB以上内存。
  • 磁盘:SSD优先,空间不少于50GB(含操作系统、Hadoop及测试数据)。
  • CPU:4核以上处理器,支持多线程任务执行。

2. 软件依赖清单

软件名称 版本要求 安装方式
Linux系统 Ubuntu 20.04+ 推荐使用LTS版本
Java JDK 1.8或11 sudo apt install openjdk-11-jdk
SSH服务 OpenSSH sudo apt install openssh-server
Hadoop 3.3.4(最新稳定版) 官方二进制包或源码编译

3. 网络配置要点

  • 确保主机名解析正确:编辑/etc/hosts文件,添加127.0.0.1 localhost及本机IP与主机名映射。
  • 关闭防火墙(测试环境):sudo ufw disable(生产环境需配置规则)。
  • 验证SSH免密登录:ssh localhost应无需密码直接连接。

三、Hadoop安装与配置详解

1. 下载与解压

  1. wget https://downloads.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gz
  2. tar -xzvf hadoop-3.3.4.tar.gz -C /opt/
  3. sudo ln -s /opt/hadoop-3.3.4 /opt/hadoop # 创建软链接

2. 核心配置文件修改

(1)hadoop-env.sh:设置JAVA_HOME

  1. export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
  2. export HADOOP_HOME=/opt/hadoop
  3. export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

(2)core-site.xml:配置HDFS默认路径

  1. <configuration>
  2. <property>
  3. <name>fs.defaultFS</name>
  4. <value>hdfs://localhost:9000</value>
  5. </property>
  6. <property>
  7. <name>hadoop.tmp.dir</name>
  8. <value>/opt/hadoop/tmp</value>
  9. </property>
  10. </configuration>

(3)hdfs-site.xml:设置副本数为1(单机模式)

  1. <configuration>
  2. <property>
  3. <name>dfs.replication</name>
  4. <value>1</value>
  5. </property>
  6. </configuration>

(4)mapred-site.xml:指定MapReduce运行模式

  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <value>local</value> # 单机模式使用local,集群模式改为yarn
  5. </property>
  6. </configuration>

3. 格式化HDFS文件系统

  1. hdfs namenode -format
  2. # 输出中需确认"Storage directory ... has been successfully formatted"

四、启动与验证流程

1. 启动Hadoop服务

  1. # 启动HDFS(NameNode + DataNode)
  2. $HADOOP_HOME/sbin/start-dfs.sh
  3. # 启动YARN(可选,单机模式通常不需要)
  4. $HADOOP_HOME/sbin/start-yarn.sh
  5. # 验证进程状态
  6. jps
  7. # 应看到NameNode、DataNode、SecondaryNameNode(HDFS)及ResourceManager、NodeManager(YARN)

2. 基础功能测试

(1)HDFS文件操作

  1. # 创建目录
  2. hdfs dfs -mkdir /test
  3. # 上传文件
  4. echo "Hello Hadoop" > test.txt
  5. hdfs dfs -put test.txt /test/
  6. # 查看文件
  7. hdfs dfs -cat /test/test.txt

(2)MapReduce示例运行

  1. # 下载示例jar包
  2. wget https://downloads.apache.org/hadoop/common/hadoop-3.3.4/hadoop-examples-3.3.4.jar
  3. # 运行wordcount程序
  4. hadoop jar hadoop-examples-3.3.4.jar wordcount /test/test.txt /test/output
  5. # 查看结果
  6. hdfs dfs -cat /test/output/part-r-00000

五、常见问题与解决方案

1. 端口冲突问题

  • 现象:启动时报Address already in use错误。
  • 解决
    • 检查core-site.xml中的端口(默认9000)是否被占用。
    • 修改端口后需重新格式化HDFS:hdfs namenode -format

2. 权限不足错误

  • 现象Permission denied访问HDFS目录。
  • 解决
    • 修改HDFS权限:hdfs dfs -chmod -R 777 /(测试环境临时方案)。
    • 生产环境建议配置HDFS权限组(hdfs-site.xml中设置dfs.permissionsfalse或配置用户组)。

3. 内存溢出问题

  • 现象:MapReduce任务失败,日志显示OutOfMemoryError
  • 解决
    • 修改mapred-site.xml增加内存:
      1. <property>
      2. <name>mapreduce.map.memory.mb</name>
      3. <value>1024</value>
      4. </property>
      5. <property>
      6. <name>mapreduce.reduce.memory.mb</name>
      7. <value>2048</value>
      8. </property>

六、性能优化建议

  1. JVM参数调优

    • 编辑hadoop-env.sh,增加:
      1. export HADOOP_HEAPSIZE=2048 # NameNode/DataNode堆内存(MB)
      2. export HADOOP_DATANODE_OPTS="-Xms1024m -Xmx1024m"
  2. I/O性能优化

    • 使用SSD存储HDFS数据目录。
    • 调整块大小(dfs.blocksize,默认128MB)以适应数据特征。
  3. 日志管理

    • 配置log4j.properties限制日志级别(如INFO→WARN)。
    • 定期清理$HADOOP_HOME/logs目录。

七、扩展应用:从单机到伪分布式

单机模式可轻松升级为伪分布式(单节点模拟集群):

  1. 修改mapred-site.xml
    1. <property>
    2. <name>mapreduce.framework.name</name>
    3. <value>yarn</value>
    4. </property>
  2. 启动YARN服务:
    1. $HADOOP_HOME/sbin/start-yarn.sh
  3. 验证ResourceManager Web UI(默认端口8088)。

通过本文的详细指导,开发者可在Linux环境下快速完成Hadoop单机部署,并掌握基础调试与优化技能。建议结合官方文档(Hadoop Release 3.3.4)进一步深入学习。