
1. Hadoop伪分布式环境搭建概述在Linux系统上搭建Hadoop伪分布式环境是学习大数据处理的经典入门实践。所谓伪分布式模式是指在一台机器上模拟完整的Hadoop集群运行环境所有守护进程都运行在单个节点上但配置方式与真正的分布式集群完全一致。这种模式既具备了分布式系统的特性验证能力又避免了多台机器配置的复杂性特别适合开发测试和学习使用。Hadoop 2.9.2是Apache Hadoop 2.x系列的最后一个稳定版本发布于2018年虽然现在已有更新的3.x版本但2.9.2仍然是许多企业生产环境中广泛使用的版本其稳定性和兼容性经过长期验证。选择这个版本进行学习既能掌握核心原理又能与实际工作环境良好衔接。2. 环境准备与前置条件2.1 硬件与系统要求建议使用至少4GB内存的机器进行安装因为Hadoop的各组件对内存有一定需求。磁盘空间建议预留20GB以上用于存储HDFS文件系统和运行日志。操作系统方面推荐使用Ubuntu 16.04/18.04 LTS或CentOS 7.x这些版本与Hadoop 2.9.2的兼容性最好。注意如果使用虚拟机安装请确保为虚拟机分配足够的资源。我曾尝试在2GB内存的虚拟机上运行经常遇到因内存不足导致的进程崩溃。2.2 必要软件安装在开始Hadoop安装前需要确保系统已安装以下软件Java JDK 1.8必须是Oracle JDK或OpenJDK 8SSH服务用于节点间通信rsync用于文件同步安装命令示例Ubuntusudo apt-get update sudo apt-get install -y openjdk-8-jdk ssh rsync验证Java安装java -version应该显示类似java version 1.8.0_201的输出。3. Hadoop安装与配置3.1 下载与解压首先从Apache官网下载Hadoop 2.9.2二进制包wget https://archive.apache.org/dist/hadoop/common/hadoop-2.9.2/hadoop-2.9.2.tar.gz tar -xzvf hadoop-2.9.2.tar.gz sudo mv hadoop-2.9.2 /usr/local/hadoop3.2 环境变量配置编辑~/.bashrc文件添加以下内容export HADOOP_HOME/usr/local/hadoop export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export JAVA_HOME$(readlink -f /usr/bin/java | sed s:bin/java::)使配置生效source ~/.bashrc3.3 核心配置文件修改Hadoop伪分布式模式需要配置以下几个关键文件etc/hadoop/core-site.xml:configuration property namefs.defaultFS/name valuehdfs://localhost:9000/value /property /configurationetc/hadoop/hdfs-site.xml:configuration property namedfs.replication/name value1/value /property property namedfs.namenode.name.dir/name valuefile:/usr/local/hadoop/data/namenode/value /property property namedfs.datanode.data.dir/name valuefile:/usr/local/hadoop/data/datanode/value /property /configurationetc/hadoop/mapred-site.xml:configuration property namemapreduce.framework.name/name valueyarn/value /property /configurationetc/hadoop/yarn-site.xml:configuration property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property /configuration4. SSH免密登录配置Hadoop脚本需要通过SSH管理各个守护进程因此需要配置本地免密登录ssh-keygen -t rsa -P -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 0600 ~/.ssh/authorized_keys测试SSH连接ssh localhost应该可以直接登录而不需要输入密码。5. 格式化HDFS并启动集群5.1 格式化NameNode首次启动前必须格式化HDFShdfs namenode -format警告格式化操作会清除所有HDFS数据仅应在首次安装时执行。在生产环境中要特别小心。5.2 启动HDFS和YARN启动HDFSstart-dfs.sh启动YARNstart-yarn.sh验证进程是否正常运行jps应该看到至少包含以下进程NameNodeDataNodeSecondaryNameNodeResourceManagerNodeManager6. 验证安装6.1 通过Web UI验证Hadoop提供了多个Web界面用于监控集群状态NameNode: http://localhost:50070ResourceManager: http://localhost:80886.2 运行测试作业运行一个简单的MapReduce作业验证整个系统hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.9.2.jar pi 10 100这个命令会计算π的近似值如果最后显示Estimated value of Pi is...则表示集群运行正常。7. 常见问题与解决方案7.1 端口冲突问题如果遇到端口已被占用的错误可能是系统中有其他服务占用了Hadoop需要的端口如50070、8088等。解决方案找出占用端口的进程sudo netstat -tulnp | grep 端口号停止相关服务或修改Hadoop配置文件使用其他端口7.2 内存不足问题在资源有限的机器上可能会遇到内存不足导致进程崩溃。可以尝试以下调整修改etc/hadoop/hadoop-env.sh中的HADOOP_HEAPSIZEexport HADOOP_HEAPSIZE512调整YARN内存配置etc/hadoop/yarn-site.xmlproperty nameyarn.nodemanager.resource.memory-mb/name value1024/value /property7.3 文件权限问题Hadoop对文件权限比较敏感如果遇到权限错误可以尝试sudo chown -R $USER:$USER /usr/local/hadoop sudo chmod -R 755 /usr/local/hadoop8. 日常使用与管理8.1 启停集群停止集群命令stop-yarn.sh stop-dfs.sh启动集群命令start-dfs.sh start-yarn.sh8.2 HDFS基本操作常用HDFS命令示例# 创建目录 hdfs dfs -mkdir /user hdfs dfs -mkdir /user/username # 上传文件 hdfs dfs -put localfile /user/username/destfile # 列出文件 hdfs dfs -ls /user/username # 查看文件内容 hdfs dfs -cat /user/username/file8.3 日志查看各组件日志位于NameNode: $HADOOP_HOME/logs/hadoop-$USER-namenode-*.logDataNode: $HADOOP_HOME/logs/hadoop-$USER-datanode-*.logResourceManager: $HADOOP_HOME/logs/yarn-$USER-resourcemanager-*.logNodeManager: $HADOOP_HOME/logs/yarn-$USER-nodemanager-*.log查看特定日志tail -f $HADOOP_HOME/logs/hadoop-$USER-namenode-*.log9. 性能优化建议虽然伪分布式主要用于学习和测试但适当的优化可以提高使用体验调整HDFS块大小etc/hadoop/hdfs-site.xmlproperty namedfs.blocksize/name value64m/value /property增加MapReduce任务并行度在提交作业时指定-D mapreduce.job.maps4 -D mapreduce.job.reduces2启用压缩etc/hadoop/mapred-site.xmlproperty namemapreduce.map.output.compress/name valuetrue/value /property property namemapreduce.output.fileoutputformat.compress/name valuetrue/value /property10. 安全注意事项不要将Hadoop集群暴露在公共网络特别是在使用默认配置的情况下。定期备份重要的HDFS数据伪分布式模式下数据存储在本地磁盘容易因系统问题丢失。为生产环境配置适当的认证和授权机制伪分布式模式默认没有启用安全功能。监控磁盘空间使用情况Hadoop不会自动清理旧的日志和临时文件。