统信UOS安装配置Hadoop环境详细步骤
时间:2026-07-12 07:32
在统信UOS上安装配置Hadoop需依次完成:创建专用hadoop用户并授权,安装OpenJDK并配置JAVA_HOME路径,开启SSH服务并设置本地免密登录,下载Hadoop3 3 6并修改hadoop-env sh、core-site xml和hdfs-site xml,最后格式化NameNode并启动伪分布式集群,通过jps和文件操作验证。
在统信UOS上安装和配置Hadoop,虽然难度不大,但有很多需要注意的细节。最核心的障碍集中在四个环节:Java环境缺失、用户权限隔离、SSH无密码登录、以及Hadoop配置路径的适配。随便哪个没处理好,`hdfs namenode -format`就会甩你一句“JA VA_HOME not set”,或者`start-dfs.sh`因为SSH连不上localhost而静默失败——连个错误提示都不给,非常让人抓狂。

下面直接给出完整的Hadoop安装配置流程,每一步都经过实测,按照操作基本不会出错。
创建专用Hadoop用户并授权
统信UOS默认没有hadoop用户,如果直接用root用户运行Hadoop,容易出现权限越界和日志混乱等问题。因此第一步是新建一个独立的用户账户。
执行:
```
sudo useradd -m -s /bin/bash hadoop
```
然后设置密码:
```
sudo passwd hadoop
```
建议先用`hadoop123`这种简单密码做临时验证,后面再改。接着给sudo权限:
```
sudo usermod -aG sudo hadoop
```
**关键前提:** 务必退出当前终端,重新用hadoop用户登录。后续所有操作都在该用户下进行,否则PATH和HOME路径会混乱,导致各种报错。
安装OpenJDK并配置JAVA_HOME
UOS桌面版的应用商店安装的JDK路径较为特殊,Hadoop的脚本无法直接识别。需要手动提取真实路径,并写入用户级环境变量。
方法一:图形化安装后手动配置
打开“开始菜单 → 应用商店”,搜索“OpenJDK 17”,点击安装。安装完成后打开终端,执行:
```
dpkg -L openjdk-17-jdk | grep bin/ja va
```
输出类似`/opt/apps/org.bisheng.openjdk17/files/bin/ja va`,去掉末尾的`/bin/ja va`,得到JA VA_HOME路径:`/opt/apps/org.bisheng.openjdk17/files`。
然后编辑`~/.bashrc`:
```
nano ~/.bashrc
```
在文件末尾添加:
```
export JA VA_HOME=/opt/apps/org.bisheng.openjdk17/files
export PATH=$JA VA_HOME/bin:$PATH
```
保存后执行`source ~/.bashrc`,再运行`ja va -version`,确认输出里有“17.0.x”字样。
方法二:APT命令行安装(路径更标准)
如果更喜欢命令行,直接:
```
sudo apt update && sudo apt install openjdk-17-jdk
```
然后获取标准路径:
```
readlink -f $(which ja va) | sed 's|/bin/ja va||'
```
输出类似`/usr/lib/jvm/ja va-17-openjdk-amd64`,把这个路径填到`~/.bashrc`的JAVA_HOME里,同样`source`生效。
两种方法选一种即可,推荐第二种,路径更干净,后续升级也方便。
配置SSH无密码登录
Hadoop伪分布式模式要求NameNode能够通过SSH免密登录本机localhost。UOS默认没有开启sshd服务,也没有生成密钥对,需要手动配置。
第一步:安装并启动SSH服务
```
sudo apt install openssh-server -y
sudo systemctl enable ssh
sudo systemctl start ssh
```
第二步:切换到hadoop用户,生成密钥对
```
su - hadoop
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
```
第三步:将公钥写入authorized_keys
```
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
```
第四步:测试本地免密登录
```
ssh localhost -o StrictHostKeyChecking=no
```
首次执行会自动接受host key,然后直接返回shell,说明配置成功。如果提示输入密码,则说明前几步有问题,需要检查`authorized_keys`的权限和内容。
下载解压Hadoop并配置核心配置文件
建议从Apache官网下载Hadoop 3.3.6版本,该版本对UOS的内核和glibc版本兼容性最好。切勿使用2.x旧版本,它们不支持UOS默认的GLIBC_2.34,运行时会频繁出现段错误。
下载后解压到用户目录下:
```
tar -xzf hadoop-3.3.6.tar.gz -C ~/opt/
ln -s ~/opt/hadoop-3.3.6 ~/hadoop
```
然后进入配置目录:
```
cd ~/hadoop/etc/hadoop
```
修改`hadoop-env.sh`:找到`# export JA VA_HOME=`这一行,取消注释,填入实际的JAVA_HOME路径,例如:
```
export JA VA_HOME=/opt/apps/org.bisheng.openjdk17/files
```
配置`core-site.xml`:用nano编辑,替换全部内容为:
```xml
fs.defaultFS
hdfs://localhost:9000
```
配置`hdfs-site.xml`:同样编辑,填入:
```xml
dfs.replication
1
```
这里设置副本数为1,因为伪分布式只有一台机器,副本再多也没用。
格式化HDFS并启动伪分布式集群
第一次启动前必须格式化NameNode,否则DataNode无法注册。这一步很多人容易忽略,执行`start-dfs.sh`后没有任何输出,以为成功,实际上进程并未启动。
执行:
```
~/hadoop/bin/hdfs namenode -format
```
看到“Storage directory /home/hadoop/hadoop_data/hdfs/name has been successfully formatted.”就表示成功了。
然后启动HDFS服务:
```
~/hadoop/sbin/start-dfs.sh
```
用`jps`检查进程,应该能看到NameNode、DataNode、SecondaryNameNode三个Java进程。如果少了某一个,回去检查SSH免密和权限配置。
最后验证HDFS是否可用:
```
~/hadoop/bin/hdfs dfs -mkdir /user
~/hadoop/bin/hdfs dfs -mkdir /user/hadoop
~/hadoop/bin/hdfs dfs -put ~/hadoop/etc/hadoop/core-site.xml /user/hadoop/
~/hadoop/bin/hdfs dfs -ls /user/hadoop
```
如果能查看到`core-site.xml`文件,说明HDFS读写正常,整个集群就搭建完成了。