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 localhost和127.0.1.1 your-hostname
1.2 Java环境配置
Hadoop依赖Java运行环境,需安装OpenJDK 8或11:
# CentOS安装示例sudo yum install -y java-1.8.0-openjdk-devel# Ubuntu安装示例sudo apt update && sudo apt install -y openjdk-8-jdk
验证安装:
java -version# 应输出类似:openjdk version "1.8.0_312"
设置JAVA_HOME环境变量:
echo "export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))" >> ~/.bashrcsource ~/.bashrc
二、Hadoop安装与配置
2.1 下载与解压
从Apache官网下载稳定版Hadoop(如3.3.4):
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.4/hadoop-3.3.4.tar.gztar -xzvf hadoop-3.3.4.tar.gz -C /opt/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路径:
export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk # 根据实际路径调整export HADOOP_HOME=/opt/hadoopexport PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
2.2.2 core-site.xml
配置HDFS默认名称节点和临时目录:
<configuration><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property><property><name>hadoop.tmp.dir</name><value>/opt/hadoop/tmp</value></property></configuration>
2.2.3 hdfs-site.xml
设置副本数为1(单机模式无需多副本):
<configuration><property><name>dfs.replication</name><value>1</value></property></configuration>
2.2.4 mapred-site.xml(可选)
配置MapReduce框架为YARN:
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property></configuration>
2.2.5 yarn-site.xml(可选)
配置YARN资源管理器:
<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.resourcemanager.hostname</name><value>localhost</value></property></configuration>
三、启动与验证
3.1 格式化HDFS
首次启动前需格式化名称节点:
hdfs namenode -format# 输出中应看到"Storage directory ... has been successfully formatted"
3.2 启动服务
# 启动HDFSstart-dfs.sh# 启动YARN(如配置)start-yarn.sh
验证进程:
jps# 应看到NameNode、DataNode、SecondaryNameNode(HDFS)和ResourceManager、NodeManager(YARN)
3.3 测试HDFS功能
创建目录并上传文件:
hdfs dfs -mkdir /testhdfs dfs -put ~/.bashrc /test/hdfs dfs -ls /test
3.4 运行示例程序
# 创建输入目录hdfs dfs -mkdir -p /wordcount/inputhdfs dfs -put /opt/hadoop/etc/hadoop/*.xml /wordcount/input# 运行WordCount示例hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount /wordcount/input /wordcount/output# 查看结果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,增加堆内存:export HADOOP_HEAPSIZE=1024 # 单位MBexport HADOOP_NAMENODE_OPTS="-Xmx1024m"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/)调整日志级别:
log4j.logger.org.apache.hadoop=INFOlog4j.logger.org.apache.hadoop.hdfs=DEBUG
5.2 监控集成
通过Ganglia或Prometheus监控Hadoop指标:
- 启用JMX:在
hadoop-env.sh中添加:export HADOOP_JMX_OPTS="-Dcom.sun.management.jmxremote.port=8004 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"
- 配置Prometheus的JMX Exporter采集指标
5.3 伪分布式模式升级
如需从单机模式升级为伪分布式(模拟多节点):
- 修改
core-site.xml中的fs.defaultFS为真实IP - 在
workers文件中添加本地主机名 - 重新格式化并启动服务
六、总结与展望
Hadoop Linux单机部署是学习大数据技术的理想起点,通过本文的配置,开发者可在本地环境中完成:
- HDFS文件系统操作
- MapReduce程序开发
- YARN资源调度理解
- 集群基本管理实践
后续可扩展方向包括:
- 部署多节点Hadoop集群
- 集成HBase、Hive等组件
- 探索Spark on YARN运行模式
- 实践HDFS高可用(HA)配置
建议定期备份$HADOOP_HOME/etc/hadoop/下的配置文件,并关注Apache Hadoop官方文档获取最新版本特性。通过不断实践,开发者将逐步掌握大数据平台的核心技术体系。