服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-08-17 简米科技 5,476 字 13 分钟阅读

分布式数据库Hadoop怎么搭建?,Hadoop环境搭建步骤

导读开篇定调搭建Hadoop环境没有想象中那么复杂,核心就三件事:装好JDK、配好SSH免密登录、改对五个XML配置文件,很多朋友卡在环境搭建这一步,八成是版本不匹配或者配置文件里多了个空格,下面直接按照生产环境的标准带你跑通整个流程,Hadoop环境搭建步骤:先搞清楚你的目标场景在动手之前,先问自己一个问题:你是……

开篇定调

搭建Hadoop环境没有想象中那么复杂,核心就三件事:装好JDK、配好SSH免密登录、改对五个XML配置文件。很多朋友卡在环境搭建这一步,八成是版本不匹配或者配置文件里多了个空格,下面直接按照生产环境的标准带你跑通整个流程。

Hadoop环境搭建步骤:先搞清楚你的目标场景

在动手之前,先问自己一个问题:你是要搭单机学习环境,还是准备做集群?这个决定了后面所有操作的复杂度。

学习场景与生产场景的差异

  • 单机模式:不需要修改任何配置文件,纯粹用来跑通MapReduce程序,适合第一次接触Hadoop。
  • 伪分布式模式:在一台机器上模拟分布式环境,NameNode、DataNode都在本机运行,这是大多数教程推荐的学习起点。
  • 完全分布式集群:至少三台机器,每台各司其职,这才是生产环境的标配。

组内不少朋友在问答区问“hadoop环境搭建步骤怎么选”,我的回答一直很直接:如果你目标是找工作或者生产部署,直接按完全分布式的思路来学,后面改伪分布只是删配置的问题。

操作系统与软件版本选型

这里有个常见误区:很多人纠结用CentOS还是Ubuntu,实际工作中两个系统都有人用,关键在于JDK版本和Hadoop版本的兼容性,Hadoop 3.x必须搭配JDK 8以上,推荐用JDK 8(Oracle或OpenJDK都行),这是经过大量生产环境验证的稳定组合。

  • Hadoop 3.3.x + JDK 8 + Ubuntu 20.04,这套组合资料最多,遇到问题好搜。
  • 如果你的机器内存只有4G,老老实实跑伪分布式,别硬撑集群,会卡到怀疑人生。

Hadoop安装配置详细步骤:从零到能跑WordCount

接下来说最核心的内容,我会按顺序拆开讲,每一步都有验证方法,你跟着做就能确认是否成功。

第一步:JDK安装与环境变量配置(hadoop环境变量配置)

JDK是Hadoop的运行基础,这一步出错后面全白搭。

# 解压JDK到指定目录
tar -zxvf jdk-8u202-linux-x64.tar.gz -C /usr/local/
# 重命名目录,方便后面配置环境变量
mv /usr/local/jdk1.8.0_202 /usr/local/java

打开/etc/profile文件,在末尾追加如下内容:

export JAVA_HOME=/usr/local/java
export PATH=$PATH:$JAVA_HOME/bin

配置完成后执行source /etc/profile让配置立即生效,验证Java版本:

java -version

看到版本号输出就说明JDK安装成功,这一步没什么技术含量,但做错的人不少最常见的问题是忘记执行

分布式数据库Hadoop怎么搭建?,Hadoop环境搭建步骤

source命令就直接去启动Hadoop,报“command not found”还一脸懵。

第二步:SSH免密登录配置

Hadoop集群的各个节点之间需要互相通信,每次都要输密码会崩溃,配置免密登录是必做步骤。

# 生成密钥对,一路回车即可
ssh-keygen -t rsa
# 将公钥追加到authorized_keys
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 验证免密登录
ssh localhost

如果直接登录成功不需要输密码,说明配置生效,集群环境中,需要将每台机器的公钥都添加到所有机器的authorized_keys里,这是很多新手在“hadoop集群配置”时踩坑最多的地方。

第三步:Hadoop下载与解压

建议去Apache官网下载稳定版本,国内镜像站点速度更快,以Hadoop 3.3.4为例:

tar -zxvf hadoop-3.3.4.tar.gz -C /usr/local/
mv /usr/local/hadoop-3.3.4 /usr/local/hadoop
# 修改Hadoop环境变量
vim /etc/profile

注意别和Java的环境变量混在一起了:

export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

执行source /etc/profile后,输入hadoop version验证,能看到Hadoop版本信息说明环境变量配置正确

第四步:修改核心配置文件

这一步是整个hadoop安装配置过程的重头戏,也是出错率最高的地方,需要修改$HADOOP_HOME/etc/hadoop/目录下的5个文件:

hadoop-env.sh:设置JAVA_HOME路径,必须写JDK的实际安装路径:

export JAVA_HOME=/usr/local/java

core-site.xml:定义文件系统的访问地址:

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
    <!-- 临时目录配置,如果不配,默认使用/tmp,系统重启会被清空 -->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/usr/local/hadoop/tmp</value>
    </property>
</configuration>

hdfs-site.xml:设置副本数和NameNode的元数据存放目录:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>/usr/local/hadoop/namenode_dir</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>/usr/local/hadoop/datanode_dir</value>
    </property>
</configuration>

分布式数据库Hadoop怎么搭建?,Hadoop环境搭建步骤

伪分布式模式副本数必须设为1,如果你的副本数大于可用DataNode节点数,会一直报“副本数异常”的错误,这个坑我见过的次数太多了。

mapred-site.xml:指定MapReduce框架使用YARN:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

yarn-site.xml:配置ResourceManager(hadoop配置yarn)和NodeManager:

<configuration>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

行业共识认为,这5个文件配置完毕,环境搭建工作已经完成了80%

Hadoop伪分布式搭建与启动验证

上面的配置就是标准的“hadoop伪分布式搭建”配置,如果你要搭完全分布式,只需要把fs.defaultFSlocalhost改成另一台机器的IP,加上slaves文件配置即可,下面我们把Hadoop跑起来。

格式化NameNode

首次启动前必须执行格式化操作,这一步会创建HDFS的元数据目录:

hdfs namenode -format

看到输出结尾有“SHUTDOWN_MSG”且没有ERROR,代表格式化成功。注意:这个命令只在第一次启动前执行,以后每次重启都不要格式化,否则你的数据全没了

启动全部服务

start-dfs.sh
start-yarn.sh

启动后确认所有Java进程都正常:

jps

正常情况下应该看到以下5个进程:NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager。缺少任何一个,说明对应的服务启动失败,需要查看日志排查

访问Web界面验证:

  • HDFS管理界面:http://localhost:9870(Hadoop 3.x的默认端口)
  • YARN管理界面:http://localhost:8088

常见启动失败场景

不少朋友在启动时遇到NameNode闪退,日志显示端口被占用或目录权限问题。

  • 端口占用:执行netstat -tlnp | grep 9000查看谁占用了端口,把冲突进程关掉。
  • 目录权限:确保/usr/local/hadoop目录的属主是当前用户,执行

    分布式数据库Hadoop怎么搭建?,Hadoop环境搭建步骤

    chown -R 用户名:用户名 /usr/local/hadoop

  • 内存不足:如果启动后进程频繁自杀,检查hadoop-env.shHADOOP_HEAPSIZE的设置,建议改小一些,部分云服务器默认给的内存有限,改太小或太大都可能威胁进程存活,避免填写非法的内存参数会导致JVM启动失败。

这些报错你大概率会碰到至少一个,日志文件在$HADOOP_HOME/logs/目录下,遇到问题先看日志,不要盲猜。

Hadoop的三种运行模式辨析

这里把话题拉高一点,你去面试或做技术选型时,一定会被问到“hadoop的三种运行模式”各自是什么场景,这里提前给你理清楚:

  • 本地模式(Local Mode):不需要修改配置,用本地文件系统模拟HDFS,主要用于本地开发调试MapReduce程序。
  • 伪分布式模式(Pseudo-Distributed Mode):在一台机器上模拟所有守护进程,适合资源有限的学习场景,本次搭建的就是这种模式。
  • 完全分布式模式(Fully-Distributed Mode):多个节点各自运行独立的守护进程,具备真正意义上的水平扩展能力。

三种模式在代码层面没有任何区别,区别只在于配置文件的参数和节点的物理数量,这也就回答了一个实际问题:伪分布环境跑通了的WordCount,直接提交到生产集群上同样能跑。

搭建Hadoop环境常见问题解答(Q&A)

问:搭建Hadoop环境,内存多大才够用?

答:伪分布式模式下,系统内存建议不低于4GB,NameNode和DataNode各自需要约1GB左右的JVM堆内存,再加上ResourceManager和NodeManager的开销,以及操作系统本身的占用,2GB内存跑起来会非常吃力,容易频繁内存溢出导致进程崩溃,完全分布式集群单机至少4GB起步,生产环境按业务量另行评估。

问:hadoop安装配置时,JDK版本选8还是11还是17?

答:Hadoop 3.3.x官方支持JDK 8和JDK 11,生产环境多数情况仍然使用JDK 8,因为生态兼容性最稳定,JDK 17属于新特性支持,没有经过大型生产集群的广泛验证,不建议用于生产环境部署。

问:重复执行hdfs namenode -format会导致什么后果?

答:会导致严重的元数据不一致问题,每次格式化都会生成一个全新的NameNode ID,而DataNode保存的集群ID不变,重启后NameNode无法正确匹配DataNode,通常会报“Incompatible clusterIDs”错误,名称节点格式化后DataNode旧数据将全部失效,唯一的补救措施是删除DataNode目录下的所有数据并重新格式化,这意味着数据全部丢失

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱