统信UOS Hadoop安装配置指南

作者:技术拾光时间:2026-07-12 08:58:17浏览:572

在统信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`时可能会提示“JAVA_HOME not set”,或者运行`start-dfs.sh`时因为SSH无法连接localhost而静默失败,连错误提示都没有,非常令人头疼。

统信UOS Hadoop安装配置指南

下面直接提供完整的操作流程,每一步都经过实际测试,按照步骤操作基本不会出现问题。

创建专用Hadoop用户并授权

统信UOS默认没有hadoop用户,如果直接使用root用户运行Hadoop,容易出现权限越界、日志混乱等问题。因此第一步需要创建一个独立的隔离账户。 执行以下命令: ``` sudo useradd -m -s /bin/bash hadoop ``` 然后设置密码: ``` sudo passwd hadoop ``` 建议先使用`hadoop123`这样的简单密码进行临时验证,后续再修改为更安全的密码。接着给hadoop用户添加sudo权限: ``` sudo usermod -aG sudo hadoop ``` **关键前提:** 必须退出当前终端,重新使用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`,去掉末尾的`/bin/java`,得到JAVA_HOME路径:`/opt/apps/org.bisheng.openjdk17/files`。 然后编辑`~/.bashrc`: ``` 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,说明配置成功。如果提示输入密码,则需要检查前面的步骤,确认`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 JAVA_HOME=`这一行,取消注释,填入实际的JAVA_HOME路径,例如: ``` export JAVA_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读写正常,整个集群搭建完成。