Hadoop 3.x 伪分布式环境搭建与配置避坑指南

📅 2026/7/16 23:40:18
Hadoop 3.x 伪分布式环境搭建与配置避坑指南
1. Hadoop 3.x伪分布式环境搭建全流程刚接触Hadoop的小伙伴可能会被伪分布式这个概念吓到其实它就是个单机版的迷你集群。我用虚拟机实测搭建过二十多次总结出这套最适合新手的保姆级教程。和Hadoop 2.x相比3.x版本在端口配置、权限管理等方面有些小变化跟着我的步骤走保证你半小时内搞定。先看下我的实验环境CentOS 7.6 或 Ubuntu 20.04JDK 1.8必须Hadoop 3.3.4官网最新稳定版重要提示所有操作建议用root用户执行避免权限问题踩坑。生产环境请单独创建hadoop用户。2. 基础环境准备2.1 系统基础配置首先关闭防火墙和SELinux这两个是新手最容易栽跟头的地方# CentOS systemctl stop firewalld systemctl disable firewalld setenforce 0 sed -i s/SELINUXenforcing/SELINUXdisabled/g /etc/selinux/config # Ubuntu ufw disable接着配置主机名映射这是Hadoop节点通信的基础。假设我的主机名叫hadoop01hostnamectl set-hostname hadoop01 echo 127.0.0.1 hadoop01 /etc/hosts2.2 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 hadoop01 date # 不提示密码即成功3. JDK安装与配置Hadoop 3.x必须使用JDK8更高版本会有兼容性问题。这是我验证过的安装方法tar -zxvf jdk-8u341-linux-x64.tar.gz -C /opt配置环境变量/etc/profile末尾追加export JAVA_HOME/opt/jdk1.8.0_341 export PATH$PATH:$JAVA_HOME/bin生效并验证source /etc/profile java -version # 应显示java version 1.8.0_3414. Hadoop安装与核心配置4.1 解压与目录准备tar -zxvf hadoop-3.3.4.tar.gz -C /opt ln -s /opt/hadoop-3.3.4 /opt/hadoop mkdir -p /opt/hadoop/data/{tmp,dfs,name,dfs/data}4.2 关键配置文件修改1. hadoop-env.sh找到这行并修改export JAVA_HOME/opt/jdk1.8.0_3412. core-site.xmlconfiguration property namefs.defaultFS/name valuehdfs://hadoop01:9000/value /property property namehadoop.tmp.dir/name value/opt/hadoop/data/tmp/value /property /configuration3. hdfs-site.xmlconfiguration property namedfs.replication/name value1/value /property property namedfs.namenode.name.dir/name value/opt/hadoop/data/dfs/name/value /property property namedfs.datanode.data.dir/name value/opt/hadoop/data/dfs/data/value /property /configuration4. mapred-site.xmlconfiguration property namemapreduce.framework.name/name valueyarn/value /property /configuration5. yarn-site.xmlconfiguration property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property /configuration4.3 环境变量配置在/etc/profile追加export HADOOP_HOME/opt/hadoop export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin5. 启动与验证5.1 格式化NameNodehdfs namenode -format # 看到successfully formatted表示成功5.2 解决Hadoop 3.x权限问题这是3.x版本特有的坑需要修改启动脚本# 在start-dfs.sh和stop-dfs.sh开头添加 HDFS_NAMENODE_USERroot HDFS_DATANODE_USERroot HDFS_SECONDARYNAMENODE_USERroot # 在start-yarn.sh和stop-yarn.sh开头添加 YARN_RESOURCEMANAGER_USERroot YARN_NODEMANAGER_USERroot5.3 启动集群start-dfs.sh start-yarn.sh用jps命令检查进程2741 NameNode 2852 DataNode 3029 SecondaryNameNode 3151 ResourceManager 3265 NodeManager5.4 访问Web界面HDFS: http://hadoop01:9870YARN: http://hadoop01:80886. 常见问题排查问题1启动时报JAVA_HOME not set解决检查hadoop-env.sh中的JAVA_HOME路径必须是绝对路径问题2DataNode启动失败解决删除/opt/hadoop/data/dfs下的所有文件重新格式化NameNode问题3Web界面无法访问解决检查防火墙状态确保9870和8088端口开放问题4执行hdfs命令报权限拒绝解决在hdfs-site.xml中添加property namedfs.permissions/name valuefalse/value /property7. 初体验MapReduce我们来跑个经典的WordCount例子hdfs dfs -mkdir /input hdfs dfs -put /opt/hadoop/LICENSE.txt /input hadoop jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.4.jar wordcount /input /output hdfs dfs -cat /output/*如果看到单词统计结果恭喜你伪分布式环境搭建成功。记得下次实验前先删除旧的output目录hdfs dfs -rm -r /output这套环境我已经在CentOS和Ubuntu上反复验证过按照步骤来基本不会出错。如果遇到特殊情况建议查看/opt/hadoop/logs下的日志文件里面会有详细错误信息。