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

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

摘要

本文针对Hadoop在Linux系统下的单机部署需求,从环境准备、安装配置、验证测试到常见问题处理,提供完整的操作指南。内容涵盖Java环境配置、Hadoop安装包选择、核心配置文件修改、启动验证及故障排查,帮助开发者快速搭建本地Hadoop测试环境,降低大数据技术学习门槛。

一、环境准备:构建Hadoop运行基础

1.1 Linux系统选择与优化

Hadoop对Linux系统版本有明确要求,推荐使用CentOS 7/8或Ubuntu 20.04 LTS等长期支持版本。需确保系统为64位架构,内存建议不低于4GB(开发测试环境),磁盘空间预留20GB以上用于存储Hadoop数据。

系统优化步骤:

  • 关闭防火墙:systemctl stop firewalld(CentOS)或ufw disable(Ubuntu)
  • 禁用SELinux(CentOS):编辑/etc/selinux/config,设置SELINUX=disabled
  • 配置主机名解析:在/etc/hosts中添加127.0.0.1 localhost127.0.1.1 your-hostname

1.2 Java环境配置

Hadoop依赖Java运行环境,需安装OpenJDK 8或11:

  1. # CentOS安装示例
  2. sudo yum install -y java-1.8.0-openjdk-devel
  3. # Ubuntu安装示例
  4. sudo apt update && sudo apt install -y openjdk-8-jdk

验证安装:

  1. java -version
  2. # 应输出类似:openjdk version "1.8.0_312"

设置JAVA_HOME环境变量:

  1. echo "export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))" >> ~/.bashrc
  2. source ~/.bashrc

二、Hadoop安装与配置

2.1 下载与解压

从Apache官网下载稳定版Hadoop(如3.3.4):

  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.2 核心配置文件修改

2.2.1 hadoop-env.sh

编辑/opt/hadoop/etc/hadoop/hadoop-env.sh,设置Java路径:

  1. export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk # 根据实际路径调整
  2. export HADOOP_HOME=/opt/hadoop
  3. export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

2.2.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>

2.2.3 hdfs-site.xml

设置副本数为1(单机模式无需多副本):

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

2.2.4 mapred-site.xml(可选)

配置MapReduce框架为YARN:

  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <value>yarn</value>
  5. </property>
  6. </configuration>

2.2.5 yarn-site.xml(可选)

配置YARN资源管理器:

  1. <configuration>
  2. <property>
  3. <name>yarn.nodemanager.aux-services</name>
  4. <value>mapreduce_shuffle</value>
  5. </property>
  6. <property>
  7. <name>yarn.resourcemanager.hostname</name>
  8. <value>localhost</value>
  9. </property>
  10. </configuration>

三、启动与验证

3.1 格式化HDFS

首次启动前需格式化名称节点:

  1. hdfs namenode -format
  2. # 输出中应看到"Storage directory ... has been successfully formatted"

3.2 启动服务

  1. # 启动HDFS
  2. start-dfs.sh
  3. # 启动YARN(如配置)
  4. start-yarn.sh

验证进程:

  1. jps
  2. # 应看到NameNode、DataNode、SecondaryNameNode(HDFS)和ResourceManager、NodeManager(YARN)

3.3 测试HDFS功能

创建目录并上传文件:

  1. hdfs dfs -mkdir /test
  2. hdfs dfs -put ~/.bashrc /test/
  3. hdfs dfs -ls /test

3.4 运行示例程序

  1. # 创建输入目录
  2. hdfs dfs -mkdir -p /wordcount/input
  3. hdfs dfs -put /opt/hadoop/etc/hadoop/*.xml /wordcount/input
  4. # 运行WordCount示例
  5. hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount /wordcount/input /wordcount/output
  6. # 查看结果
  7. hdfs dfs -cat /wordcount/output/part-r-00000

四、常见问题与解决方案

4.1 端口冲突

错误示例:Address already in use
解决方案:

  • 检查9000(HDFS)、8088(YARN)等端口占用情况
  • 修改配置文件中的端口号或终止占用进程

4.2 权限不足

错误示例:Permission denied
解决方案:

  • 确保运行用户对Hadoop目录有读写权限
  • 修改hadoop.tmp.dir权限:chmod -R 755 /opt/hadoop/tmp

4.3 内存不足

错误示例:Java heap space
解决方案:

  • 编辑hadoop-env.sh,增加堆内存:
    1. export HADOOP_HEAPSIZE=1024 # 单位MB
    2. export HADOOP_NAMENODE_OPTS="-Xmx1024m"
    3. export HADOOP_DATANODE_OPTS="-Xmx1024m"

4.4 版本兼容性

问题表现:启动后服务异常退出
解决方案:

  • 确认Java版本与Hadoop版本兼容(Hadoop 3.x推荐Java 8/11)
  • 检查/opt/hadoop/logs/下的日志文件定位具体错误

五、高级配置建议

5.1 日志管理

配置log4j.properties(位于$HADOOP_HOME/etc/hadoop/)调整日志级别:

  1. log4j.logger.org.apache.hadoop=INFO
  2. log4j.logger.org.apache.hadoop.hdfs=DEBUG

5.2 监控集成

通过Ganglia或Prometheus监控Hadoop指标:

  1. 启用JMX:在hadoop-env.sh中添加:
    1. export HADOOP_JMX_OPTS="-Dcom.sun.management.jmxremote.port=8004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
  2. 配置Prometheus的JMX Exporter采集指标

5.3 伪分布式模式升级

如需从单机模式升级为伪分布式(模拟多节点):

  1. 修改core-site.xml中的fs.defaultFS为真实IP
  2. workers文件中添加本地主机名
  3. 重新格式化并启动服务

六、总结与展望

Hadoop Linux单机部署是学习大数据技术的理想起点,通过本文的配置,开发者可在本地环境中完成:

  • HDFS文件系统操作
  • MapReduce程序开发
  • YARN资源调度理解
  • 集群基本管理实践

后续可扩展方向包括:

  • 部署多节点Hadoop集群
  • 集成HBase、Hive等组件
  • 探索Spark on YARN运行模式
  • 实践HDFS高可用(HA)配置

建议定期备份$HADOOP_HOME/etc/hadoop/下的配置文件,并关注Apache Hadoop官方文档获取最新版本特性。通过不断实践,开发者将逐步掌握大数据平台的核心技术体系。