在统信uos中安装hadoop需解决java环境缺失、用户权限隔离、ssh无密登录及配置路径适配四大问题:新建hadoop用户并切换登录;手动配置java_home指向openjdk 17真实路径;启用ssh服务并配置localhost免密登录;下载hadoop 3.3.6,修改hadoop-env.sh、core-site.xml和hdfs-site.xml;执行hdfs namenode -format后start-dfs.sh启动集群,jps验证进程,hdfs dfs命令验证读写。

在统信UOS系统中安装并运行Hadoop,需先解决Java环境缺失、用户权限隔离、SSH无密登录及Hadoop配置路径适配四大核心问题,否则hdfs namenode -format会报错“JAVA_HOME not set”,start-dfs.sh将因SSH拒绝连接而静默失败。
创建专用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/java,输出类似/opt/apps/org.bisheng.openjdk17/files/bin/java;
提取JAVA_HOME路径:去掉末尾/bin/java,得到/opt/apps/org.bisheng.openjdk17/files;
执行nano ~/.bashrc,在文件末尾添加:
export JAVA_HOME=/opt/apps/org.bisheng.openjdk17/files
export PATH=$JAVA_HOME/bin:$PATH;
执行source ~/.bashrc生效,再运行java -version确认输出含“17.0.x”字样。
方法二(APT命令行安装,路径标准):
执行sudo apt update && sudo apt install openjdk-17-jdk;
运行readlink -f $(which java) | sed 's|/bin/java||',获取标准路径如/usr/lib/jvm/java-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即表示配置完成。
下载解压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 JAVA_HOME=这一行,取消注释并填入实际JAVA_HOME路径,例如:
export JAVA_HOME=/opt/apps/org.bisheng.openjdk17/files
配置core-site.xml:
用nano编辑该文件,替换全部内容为:
配置hdfs-site.xml:
同样用nano编辑,填入:
格式化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进程;
验证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写入正常。











