linux下安装Hadoop的方法是什么

来源:图像处理网作者:乐少头衔:工程师
导读:本期聚焦于小伙伴创作的《linux下安装Hadoop的方法是什么》,敬请观看详情。把Hadoop跑在Linux上第一步就卡在环境依赖,不少人照着旧教程配完启动却报找不到JAVA_HOME。Hadoop本身基于Java开发,官方二进制包解压后并不能直接运行,必须先准备好符合版本的JDK并设置好全局环境变量。单机模式、伪分布式和完全分布式三种部署形态对目录权限、SSH互信的要求也各不相同。本文以Ubuntu环境为例,梳理从JDK安装、用户创建、Hadoop解压到配置文件修改的完整流程,并给出验证命令,帮你在半小时内搭好可运行的伪分布式集群,避开权限与端口冲突等常见坑。

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

linux下安装Hadoop的方法是什么

一、准备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

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。