
Hadoop 3.3.6 单机伪分布式部署Ubuntu 22.04 下 8 步完成环境搭建与验证在当今数据驱动的时代掌握大数据处理技术已成为开发者和数据工程师的必备技能。Hadoop作为Apache基金会下的开源分布式计算框架以其高可靠性、高扩展性和高效性成为处理海量数据的首选工具。本文将带您完成Hadoop 3.3.6在Ubuntu 22.04系统上的单机伪分布式环境搭建这种部署方式既保留了分布式系统的特性又简化了学习成本非常适合开发测试和个人学习。1. 环境准备与系统配置在开始安装Hadoop之前我们需要确保系统环境满足基本要求。Ubuntu 22.04 LTS作为最新的长期支持版本提供了稳定的基础环境。首先更新系统软件包并安装必要的工具sudo apt update sudo apt upgrade -y sudo apt install -y ssh vim openjdk-8-jdkJava环境是Hadoop运行的基础我们选择OpenJDK 8作为Java运行时。验证Java安装是否成功java -version您应该看到类似如下的输出openjdk version 1.8.0_362 OpenJDK Runtime Environment (build 1.8.0_362-8u362-ga-0ubuntu1~22.04-b09) OpenJDK 64-Bit Server VM (build 25.362-b09, mixed mode)接下来我们需要配置SSH免密登录这是Hadoop各组件间通信的基础。执行以下命令生成SSH密钥并配置授权ssh-keygen -t rsa -P -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys测试SSH免密登录是否配置成功ssh localhost如果不需要输入密码即可登录说明配置正确。最后我们创建一个专用用户来运行Hadoop服务可选但推荐sudo adduser hadoop sudo usermod -aG sudo hadoop2. Hadoop 3.3.6安装与基础配置现在我们可以开始安装Hadoop 3.3.6。首先从Apache官网下载最新稳定版wget https://archive.apache.org/dist/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz解压安装包到/usr/local目录并设置权限sudo tar -xzf hadoop-3.3.6.tar.gz -C /usr/local sudo mv /usr/local/hadoop-3.3.6 /usr/local/hadoop sudo chown -R hadoop:hadoop /usr/local/hadoop配置Hadoop环境变量编辑~/.bashrc文件添加以下内容export HADOOP_HOME/usr/local/hadoop export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin export HADOOP_OPTS-Djava.library.path$HADOOP_HOME/lib/native使环境变量生效source ~/.bashrc验证Hadoop安装是否成功hadoop version您应该看到Hadoop 3.3.6的版本信息输出。至此Hadoop的基本安装已经完成接下来我们需要进行伪分布式模式的配置。3. 核心配置文件修改Hadoop的伪分布式模式需要修改几个核心配置文件。这些文件位于$HADOOP_HOME/etc/hadoop目录下。首先配置hadoop-env.sh设置JAVA_HOMEecho export JAVA_HOME$(readlink -f /usr/bin/java | sed s:bin/java::) $HADOOP_HOME/etc/hadoop/hadoop-env.shcore-site.xml是Hadoop的核心配置文件我们需要指定文件系统URI和临时目录configuration property namefs.defaultFS/name valuehdfs://localhost:9000/value /property property namehadoop.tmp.dir/name value/usr/local/hadoop/tmp/value /property /configurationhdfs-site.xml配置HDFS相关参数。在伪分布式模式下我们设置副本数为1configuration property namedfs.replication/name value1/value /property property namedfs.namenode.name.dir/name valuefile://${hadoop.tmp.dir}/dfs/name/value /property property namedfs.datanode.data.dir/name valuefile://${hadoop.tmp.dir}/dfs/data/value /property /configurationmapred-site.xml配置MapReduce框架使用YARNconfiguration property namemapreduce.framework.name/name valueyarn/value /property /configurationyarn-site.xml配置YARN资源管理器configuration property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property property nameyarn.nodemanager.env-whitelist/name valueJAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME/value /property /configuration4. HDFS初始化与启动配置文件修改完成后我们需要初始化HDFS文件系统。这一步会创建NameNode所需的元数据存储结构hdfs namenode -format成功格式化后您应该看到Storage directory /usr/local/hadoop/tmp/dfs/name has been successfully formatted的提示。启动HDFS服务start-dfs.sh启动YARN资源管理器start-yarn.sh验证服务是否正常启动jps您应该看到至少有以下进程NameNode DataNode SecondaryNameNode ResourceManager NodeManager5. Web UI访问与验证Hadoop提供了方便的Web界面来监控集群状态。您可以通过以下URL访问NameNode Web UI: http://localhost:9870ResourceManager Web UI: http://localhost:8088在NameNode的Web界面中您可以查看HDFS的文件系统状态、存储使用情况等。ResourceManager的Web界面则展示了YARN的资源分配情况和运行中的应用程序。通过命令行验证HDFS是否正常工作hdfs dfs -mkdir /input hdfs dfs -put $HADOOP_HOME/etc/hadoop/*.xml /input hdfs dfs -ls /input这些命令将在HDFS上创建一个input目录并将配置文件上传到该目录中。6. 运行MapReduce示例程序Hadoop自带了一些示例程序我们可以运行一个简单的wordcount来验证整个系统hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output这个命令会对/input目录下的所有文件进行词频统计结果输出到/output目录。查看结果hdfs dfs -cat /output/*您将看到各个单词及其出现次数的统计结果。这证明Hadoop的MapReduce功能正常工作。7. 配置优化与调优为了让Hadoop在单机环境下运行得更高效我们可以进行一些优化配置内存配置调整 在$HADOOP_HOME/etc/hadoop/yarn-site.xml中添加property nameyarn.nodemanager.resource.memory-mb/name value2048/value /property property nameyarn.scheduler.maximum-allocation-mb/name value2048/value /property property nameyarn.app.mapreduce.am.resource.mb/name value1024/value /property在$HADOOP_HOME/etc/hadoop/mapred-site.xml中添加property namemapreduce.map.memory.mb/name value512/value /property property namemapreduce.reduce.memory.mb/name value1024/value /propertyHDFS块大小调整可选 在hdfs-site.xml中修改property namedfs.blocksize/name value64m/value /property8. 常见问题排查在部署过程中可能会遇到一些问题以下是常见问题及解决方法问题1启动HDFS时出现Unable to load native-hadoop library警告这是非关键警告不影响功能。如需解决可以安装native库sudo apt install libhadoop3.3.0 libhdfs3.3.0问题2Java堆空间不足调整Hadoop的堆内存设置在hadoop-env.sh中添加export HADOOP_HEAPSIZE_MAX1024m问题3Web UI无法访问检查防火墙设置确保端口9870和8088是开放的sudo ufw allow 9870/tcp sudo ufw allow 8088/tcp问题4DataNode无法启动可能是由于多次格式化NameNode导致。解决方案rm -rf /usr/local/hadoop/tmp/dfs/data hdfs namenode -format start-dfs.sh通过以上步骤您已经成功在Ubuntu 22.04上搭建了Hadoop 3.3.6的伪分布式环境。这种配置虽然运行在单机上但模拟了完整的Hadoop分布式环境非常适合学习Hadoop的核心概念和开发测试MapReduce程序。