温习Hadoop安装部署

admin 2026-03-27 13:40:14 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文档记录了使用Docker部署Hadoop一主三从集群的实战笔记。内容详述了从镜像加载、容器顺序启动以防IP冲突,到Java与SSH无密码登录配置的全过程。重点介绍了Hadoop核心配置文件的修改与节点同步方法,提供了集群初始化、启动及验证的具体命令。文末总结了核心架构与常见易错点,为大数据环境搭建提供了清晰可操作的技术指南。 综合评分: 80 文章分类: 实战经验


cover_image

温习Hadoop安装部署

原创

MicroPest MicroPest

MicroPest

2026年3月21日 13:32 安徽

最近,在开发几个齐头并进的平台,象千手观音,有点忙。

今天,有个同学来问关于hadoop的事情,我也借机学习了一下,作个笔记记录。

场景:4台机器组成一个集群,一主三从,分别为master、slave1、slave2、slave3,docker容器化部署。

一、Hadoop安装部署

(一)启动Docker容器

1.加载镜像

实验使用的Docker镜像保存在/cg/images/hadoop_node.tar.gz文件中,执行如下命令加载该镜像:

docker&nbsp;load&nbsp;<&nbsp;/cg/images/hadoop_node.tar.gz

2.启动实验容器

执行如下4条命令,启动4个名称分别为master、slave1、slave2、slave3的docker容器用于实验:

(1)docker run&nbsp;--name master&nbsp;--privileged&nbsp;--ulimit nofile=65535:65535--hostname master&nbsp;--ip&nbsp;172.18.0.2--add-host=slave1:172.18.0.3--add-host=slave2:172.18.0.4--add-host=slave3:172.18.0.5-itd&nbsp;-v&nbsp;/cgsrc:/cgsrc:ro&nbsp;-v&nbsp;/headless/course/:/course hadoop_node&nbsp;/service_start.sh

(2)docker run&nbsp;--name slave1&nbsp;--privileged&nbsp;--ulimit nofile=65535:65535--hostname slave1&nbsp;--ip&nbsp;172.18.0.3--add-host=master:172.18.0.2--add-host=slave2:172.18.0.4--add-host=slave3:172.18.0.5-itd&nbsp;-v&nbsp;/cgsrc:/cgsrc:ro hadoop_node&nbsp;/service_start.sh

(3)docker run&nbsp;--name slave2&nbsp;--privileged&nbsp;--ulimit nofile=65535:65535--hostname slave2&nbsp;--ip&nbsp;172.18.0.4--add-host=master:172.18.0.2--add-host=slave1:172.18.0.3--add-host=slave3:172.18.0.5-itd&nbsp;-v&nbsp;/cgsrc:/cgsrc:ro hadoop_node&nbsp;/service_start.sh

(4)docker run&nbsp;--name slave3&nbsp;--privileged&nbsp;--ulimit nofile=65535:65535--hostname slave3&nbsp;--ip&nbsp;172.18.0.5--add-host=master:172.18.0.2--add-host=slave1:172.18.0.3--add-host=slave2:172.18.0.4-itd&nbsp;-v&nbsp;/cgsrc:/cgsrc:ro hadoop_node&nbsp;/service_start.sh

执行结果如下:

在终端使用如下命令进入容器中:

docker exec&nbsp;-it&nbsp;--privileged $NAME/bin/bash

将命令中的$NAME替换为对应的容器名称即可,比如进入master容器可以使用命令:

dockerexec&nbsp;-it --privileged master /bin/bash

特别注意:如果发现容器未启动,按顺序使用下面命令启动容器。

docker start master
docker start slave1
docker start slave2
docker start slave3

注意:不要使用 docker start master slave1 slave2 slave3并发启动多容器,使用该命令启动容器时,容器的启动先后顺序是不确定的,这可能会导致容器分配到的IP和创建容器时指定的IP不一致,导致集群无法启动。

然后检查IP和hosts是否对应,如果不对,使用下面命令关闭容器后,再次按顺序启动容器。

docker stop master slave1 slave2 salve3

(二)配置Hadoop环境

1.配置JAVA环境

Hadoop是基于Java语言开发的,因此需要安装Java环境。

仅介绍master的配置方法,slave1、slave2和slave3都需要按照下面的步骤配置Java环境!

首先使用命令docker exec -it --privileged master /bin/bash进入master容器,在容器master中使用如下命令从资源文件夹/cgsrc中将JDK安装包复制到/usr/local/java目录下:

mkdir&nbsp;/usr/local/java
cp&nbsp;/cgsrc/jdk-8u171-linux-x64.tar.gz/usr/local/java/

我们接下来切换到/usr/local/java目录下,将安装包解压,并删除用过的tar文件。

cd&nbsp;/usr/local/java/
tar&nbsp;-zxvf jdk-8u171-linux-x64.tar.gz
rm&nbsp;-f jdk-8u171-linux-x64.tar.gz

此时/usr/local/java目录下仅有一个jdk1.8.0_171目录,这就是Java主目录。

接下来需要配置JAVA_HOME环境变量,为了方便起见,这里直接在~/.bachrc这个文件中进行设置,采用这种配置方式时,只对当前登录的单个用户生效,当该用户登录以及每次打开新的Shell时,它的环境变量文件.bashrc会被读取。输入下面命令打开当前登录用户的环境变量配置文件.bashrc

vim&nbsp;~/.bashrc

在文件最后面添加如下3行(注意等号前后不能有空格),然后保存退出vim:

exportJAVA_HOME=/usr/local/java/jdk1.8.0_171
exportCLASSPATH=.:${JAVA_HOME}/jre/lib/rt.jar:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar
exportPATH=$PATH:${JAVA_HOME}/bin

接下来让环境变量生效,执行如下代码:

source&nbsp;~/.bashrc

执行上述命令后,可以检验一下是否设置正确:

echo $JAVA_HOME&nbsp; &nbsp;&nbsp;#检验变量值
java&nbsp;-version &nbsp; &nbsp; &nbsp;#查看java版本

输出如下即表明配置Java环境成功:

java version&nbsp;"1.8.0_171"
Java(TM)SERuntimeEnvironment(build&nbsp;1.8.0_171-b11)
JavaHotSpot(TM)64-BitServerVM(build&nbsp;25.171-b11,&nbsp;mixed mode)

请务必以同样的步骤对每个节点进行配置!

2.配置分布式模式

当Hadoop采用分布式模式部署和运行时,存储采用分布式文件系统HDFS。而且,HDFS的名称节点和数据节点位于不同的机器上。这时,数据就可以分布到多个节点上,不同数据节点上的数据计算可以并行执行,这使得MapReduce分布式计算能力才能真正发挥作用。

使用4个节点搭建集群环境:1个Master节点和3个Slave节点。节点的IP地址可以在对应的命令行中使用ifconfig命令查看:

Hadoop集群的安装配置大致包括以下步骤:

(1)选定1个节点作为Master

(2)在Master节点上安装Hadoop,并完成配置。

(3)将Master节点上的Hadoop目录复制到其他Slave节点上

(4)在Master节点上开启Hadoop

3.配置hosts文件

本次演示中,4个节点的ip地址如下:

(1)master 172.18.0.2

(2)slave1 172.18.0.3

(3)slave2 172.18.0.4

(4)slave3 172.18.0.5

由于我们在docker的启动命令里已经加入了host配置,所以检查发现/etc/hosts文件里映射关系齐全则可以略过此步骤。

执行如下命令打开并修改master节点中的/etc/hosts文件:

vim&nbsp;/etc/hosts

确保在hosts文件中有如下IP和主机名映射关系:

172.18.0.2&nbsp; &nbsp; master
172.18.0.3&nbsp; &nbsp; slave1
172.18.0.4&nbsp; &nbsp; slave2
172.18.0.5&nbsp; &nbsp; slave3

上面完成了master节点的配置,接下来在3个slave节点中使用同样步骤配置hosts文件

在各个节点上执行如下指令,测试节点之间是否已经联通:

ping master&nbsp;-c&nbsp;3
ping slave1&nbsp;-c&nbsp;3
ping slave2&nbsp;-c&nbsp;3
ping slave3&nbsp;-c&nbsp;3

如果都能连通,则配置成功。

4.配置SSH无密码登录

需要让master节点可以SSH无密码登录到各个slave节点上。

首先,生成master节点的公钥,如果之前已经生成过公钥,必须删除原来的公钥,重新生成一次。具体命令如下:

cd&nbsp;~/.ssh&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;#如果没有该目录,先执行一次 ssh localhost,密码默认为83953588abc
rm&nbsp;-f&nbsp;./id_rsa*&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;#删除之前生成的公钥
ssh-keygen&nbsp;-t rsa &nbsp; &nbsp;#执行该命令后,遇到提示信息,均按Enter即可

为了让master节点能无密码SSH登录到本机,需要在master节点上执行如下命令:

cat&nbsp;./id_rsa.pub>>./authorized_keys

完成后可以执行ssh master来验证一下,可能会遇到提示信息,只要输入 yes 即可,测试成功后执行exit命令返回原来的终端。 接下来在master节点上将公钥传输到3个slave节点:

scp&nbsp;~/.ssh/id_rsa.pub&nbsp;root@slave1:/root
scp&nbsp;~/.ssh/id_rsa.pub&nbsp;root@slave2:/root
scp&nbsp;~/.ssh/id_rsa.pub&nbsp;root@slave3:/root

执行scp复制文件时会要求输入相应的slave的密码,默认为:****

传输完成后在3个slave节点上将SSH公钥加入授权:

mkdir&nbsp;-p&nbsp;~/.ssh&nbsp; &nbsp; &nbsp; &nbsp;#如果slave节点上已存在该目录,则先删除该目录再执行该命令
cat&nbsp;~/id_rsa.pub >> ~/.ssh/authorized_keys
rm&nbsp;-f&nbsp;~/id_rsa.pub

slave1的操作过程如下图所示:

其他的,同样操作。

这样就可以在master节点上无密码SSH登录到各个slave节点了。

注意:由于启动Hadoop集群时,master节点需要通过ssh登录自身节点(ssh localhost),为了去掉ssh的交互式认证提示,需要在master节点上执行以下命令:

ssh-keyscan localhost&nbsp;>>~/.ssh/known_hosts

上述执行过程如下图所示:

请在master节点上使用如下3条命令,确认可以从master无密码ssh登录到各个slave节点。

ssh slave1
ssh slave2
ssh slave3

如果不能无密码登录,请重新操作排查问题。

5.安装Hadoop并配置环境变量

在master节点上执行如下操作安装hadoop并配置环境变量。

首先将hadoop安装包复制到 /usr/local目录下:

cp&nbsp;/cgsrc/hadoop-2.7.1.tar.gz/usr/local/

切换到/usr/local目录下,对安装包进行解压:

cd&nbsp;/usr/local
tar&nbsp;-zxvf hadoop-2.7.1.tar.gz
rm&nbsp;-f hadoop-2.7.1.tar.gz

解压得到名为hadoop-2.7.1的目录,将其重命名为 hadoop

mv hadoop-2.7.1/&nbsp;hadoop

该命令执行后,之后就可以配置PATH变量了,使我们可以在任何目录下使用hadoop指令。

首先打开 ~/.bashrc 文件:

vim&nbsp;~/.bashrc

然后在该文件最末加入下面一行内容:

exportPATH=$PATH:/usr/local/hadoop/bin:/usr/local/hadoop/sbin

保存后执行 source ~/.bashrc 使配置生效。

之后执行如下命令查看hadoop版本:

hadoop version

若得到如下输出则安装成功:


二、配置集群环境

配置集群环境时,需要修改 /usr/local/hadoop/etc/hadoop 目录下的配置文件,这里仅设置正常启动必须的设置项,包括 slavescore-site.xmlhdfs-site.xmlmapred-site.xmlyarn-site.xml共五个文件。

(一)配置master节点

1.修改文件slaves

需要把所有数据节点的主机名写入该文件,每行一个,默认为localhost(即把本机作为数据节点)。在进行集群配置时,可以保留localhost,让master节点同时充当名称节点和数据节点,也可以删除localhost这行,让master节点仅作为名称节点使用。

本节让master节点仅作为名称节点使用,因此将slaves文件中原来的内容删除,添加如下内容:

slave1
slave2
slave3

2.修改文件core-site.xml

core-site.xml文件修改为如下内容:

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
</property>
</configuration>

3. 修改文件hdfs-site.xml

对于Hadoop的分布式文件系统HDFS而言,一般是采用冗余存储,冗余因子一般是3,也就是说一份数据保存3份副本。设置该冗余因子的参数为dfs.replication。所以,dfs.replication设置为3,文件具体内容如下:

<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>

4.修改文件mapred-site.xml

/usr/local/hadoop/etc/hadoop 目录下有一个 mapred-site.xml.template文件,需要复制该文件为 mapred-site.xml

cp mapred-site.xml.template&nbsp;mapred-site.xml

然后配置mapred-site.xml文件如下:

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>

5.修改文件yarn-site.xml

把 yarn-site.xml配置为如下内容:

<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.disk-health-checker.max-disk-utilization-per-disk-percentage</name>
<value>98.5</value>
</property>
</configuration>

(二)配置slave节点

五个配置文件配置完成后,需要把master节点上的/usr/local/hadoop文件复制到各个节点上。

master节点上执行具体命令如下:

cd&nbsp;/usr/local
rm&nbsp;-rf&nbsp;./hadoop/tmp &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;#删除临时文件
rm&nbsp;-rf&nbsp;./hadoop/logs/* &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#删除日志文件
tar -zcf ~/hadoop.master.tar.gz ./hadoop &nbsp; &nbsp;#先压缩再复制
cd ~
scp ./hadoop.master.tar.gz root@slave1:/root
scp ./hadoop.master.tar.gz root@slave2:/root
scp ./hadoop.master.tar.gz root@slave3:/root

然后分别在slave1slave2slave3节点上执行如下命令:

rm&nbsp;-rf&nbsp;/usr/local/hadoop &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;#如果有旧文件则先删除
tar&nbsp;-zxf&nbsp;~/hadoop.master.tar.gz-C/usr/local
rm&nbsp;-f&nbsp;~/hadoop.master.tar.gz

(三)启动Hadoop集群

首次启动Hadoop集群时,需要先在master节点执行名称节点的格式化:

hdfs namenode&nbsp;-format

如果该命令执行后,没有报出任何错误,就说明格式化正确了。如果有错误,注意检查前面的配置文件。

现在可以启动Hadoop了,启动需要在master节点上进行,执行如下命令:

start-dfs.sh
start-yarn.sh
mr-jobhistory-daemon.sh&nbsp;start historyserver

如果环境重启了,就需要先去docker start 所有节点,然后再使用上方三条命令再次启动Hadoop。

通过命令jps可以查看各个节点启动的进程。如果已经正确启动,则在master节点上可以看到如下进程:

在slave节点上可以看到如下进程:

缺少任一进程都表示出错。

也可以在浏览器中输入 master的ip:50070 查看节点状态。

至此,hadoop集群安装完成。

三、总结要点

核心架构

  • 1主3从:master(管理节点)+ slave1/2/3(工作节点)
  • Docker容器化部署,固定IP:172.18.0.2~5

关键步骤

易错点

  • ❌ 并发启动Docker → IP错乱 → 集群无法通信
  • ❌ SSH未配好 → start-dfs.sh远程执行失败
  • ❌ 配置文件不同步 → 部分节点启动异常

验证方式

  • jps看进程:master应有4个,slave应有2个
  • Web UI:master:50070(HDFS)、master:8088(YARN)

#


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:MicroPest MicroPest MicroPest《温习Hadoop安装部署》

温习Hadoop安装部署 网络安全文章

温习Hadoop安装部署

文章总结: 本文档记录了使用Docker部署Hadoop一主三从集群的实战笔记。内容详述了从镜像加载、容器顺序启动以防IP冲突,到Java与SSH无密码登录配置
评论:0   参与:  0