在Linux系统中部署Hadoop,核心流程包括准备Java运行环境、创建专用系统用户、下载并解压Hadoop发行包、修改基础配置文件以及启动验证。不同发行版命令略有差异,但整体思路一致。下面以Ubuntu 22.04为例详细说明。

一、准备Java环境与系统用户
Hadoop 3.x要求JDK 8或JDK 11,推荐使用OpenJDK。先更新软件源并安装JDK,安装完成后必须确认java与javac命令可用。很多启动失败案例都是因为只装了JRE而缺少编译器,或者环境变量未写入全局配置导致Hadoop进程读不到路径。
建议创建名为hadoop的专用用户,避免直接使用root运行分布式服务。这样既能隔离权限,也符合生产环境安全规范。同时将hadoop用户加入sudo组方便临时提权。下面是具体的命令操作:
# 安装OpenJDK 11 sudo apt update sudo apt install -y openjdk-11-jdk # 验证安装 java -version javac -version # 创建hadoop用户 sudo adduser hadoop sudo usermod -aG sudo hadoop # 切换到hadoop用户 su - hadoop
接着需要设置JAVA_HOME环境变量。Hadoop启动时通过JAVA_HOME定位Java命令,若未设置会在日志中抛出JAVA_HOME is not set报错。我们将变量写入用户级bashrc文件,确保每次登录自动生效。
# 查找JDK安装路径 readlink -f $(which java) # 通常输出类似 /usr/lib/jvm/java-11-openjdk-amd64/bin/java # JAVA_HOME应为 /usr/lib/jvm/java-11-openjdk-amd64 echo 'export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64' >> ~/.bashrc echo 'export PATH=$PATH:$JAVA_HOME/bin' >> ~/.bashrc source ~/.bashrc
二、下载与解压Hadoop
从Apache官方归档站点获取稳定版本二进制包。以Hadoop 3.3.6为例,使用wget直接拉取到本地。注意网络策略若限制外网,可提前下载后通过scp传入服务器。解压后建议将目录移至/opt或/usr/local下并软链,便于版本管理。
解压完成后进入目录查看结构,其中bin存放客户端命令,sbin存放服务启停脚本,etc/hadoop则是所有配置文件所在地。修改目录归属为hadoop用户,防止后续写日志时因权限不足失败。
cd /tmp wget https://ipipp.com/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz tar -xzf hadoop-3.3.6.tar.gz sudo mv hadoop-3.3.6 /opt/ sudo ln -s /opt/hadoop-3.3.6 /opt/hadoop sudo chown -R hadoop:hadoop /opt/hadoop-3.3.6
为方便使用,同样把Hadoop路径加入环境变量。这样在任意目录都能执行hdfs、yarn等命令,不需要输入绝对路径。配置方式与环境变量JAVA_HOME类似。
echo 'export HADOOP_HOME=/opt/hadoop' >> ~/.bashrc echo 'export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin' >> ~/.bashrc source ~/.bashrc
三、配置伪分布式模式
伪分布式是单机模拟多节点,HDFS和YARN均在本机以独立进程运行,适合开发测试。需要修改core-site.xml、hdfs-site.xml、mapred-site.xml和yarn-site.xml四个文件。先配置核心站点指向本地NameNode。
core-site.xml中fs.defaultFS决定默认文件系统地址,hadoop.tmp.dir指定临时数据根目录。务必使用真实存在的路径,且目录权限对hadoop用户可写,否则格式化时会报无法创建目录。
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/tmp/hadoop</value>
</property>
</configuration>
hdfs-site.xml设置副本数为1,因为伪分布式只有单节点,多余副本无法分配。mapred-site.xml指定作业调度框架为yarn,yarn-site.xml声明ResourceManager主机为localhost。以下为简化配置示例:
<!-- hdfs-site.xml -->
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
<!-- mapred-site.xml -->
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
<!-- yarn-site.xml -->
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>localhost</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
四、SSH免密与启动验证
Hadoop脚本通过SSH启动本地进程,必须配置localhost免密登录。生成密钥后将公钥写入authorized_keys,并严格设置权限为600,否则SSH会拒绝使用该文件。这一步常被忽略,导致启动脚本卡在输入密码。
完成上述准备后,先执行hdfs namenode -format初始化元数据,再使用start-dfs.sh和start-yarn.sh拉起服务。用jps命令检查进程,应包含NameNode、DataNode、ResourceManager、NodeManager等。最后通过浏览器访问HDFS的9870端口确认界面正常。
# 配置SSH免密 ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys # 格式化并启动 hdfs namenode -format start-dfs.sh start-yarn.sh # 查看进程 jps
若jps显示进程齐全但网页无法打开,先检查云服务器安全组或本地防火墙是否放通端口。伪分布式所有服务绑定在localhost,远程访问需修改配置中的监听地址或建立SSH隧道。整个安装过程重在环境干净与配置准确,按步骤操作基本可一次成功。
Hadooplinux_installJava_env修改时间:2026-08-07 15:39:35