hadoop完全分布式安装配置
本实训需要使用root用户完成相关配置,master、slave1、slave2三台节点都需要安装jdk与hadoop,具体要求如下:
(1) 将jdk安装包解压到/root/software目录下;
(2) 在“/etc/profile”文件中配置jdk环境变量java_home和path的值,并让配置文件立即生效;
(3) 查看jdk版本,检测jdk是否安装成功。
(4) 在主节点将hadoop安装包解压到/root/software目录下;
(5) 依次配置hadoop-env.sh、core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml和workers配置文件;hadoop集群部署规划如表1-1所示;
表1-1 hadoop集群部署规划
(6) 在master节点的hadoop安装目录下依次创建hadoopdatas/tempdatas、hadoopdatas/namenodedatas、hadoopdatas/datanodedatas、hadoopdatas/dfs/nn/edits、hadoopdatas/dfs/snn/name和hadoopdatas/dfs/nn/snn/edits目录;
(7) 在master节点上使用scp命令将配置完的hadoop安装目录直接拷贝至slave1和slave2;
(8) 在三个节点的“/etc/profile”文件中配置hadoop环境变量hadoop_home和path的值,并让配置文件立即生效;
(9) 在主节点格式化集群;
(10) 在主节点依次启动hdfs、yarn集群和历史服务。
注意,实训环境的3个节点master、slave1和slave2,它们的主机名及ip地址在实训环境中可以通过3.1前置步骤中的“初始化网络”配置完成,而且实训环境已设置ssh免密切换节点,各节点时间已同步,因此跳过这些步骤。
【说明】原赛题提供的软件版本为hadoop3.1.3,jdk8u191,调整采用hadoop3.1.4、jdk8u281实现任务内容。
(1) 使用centos7.9以上版本的linux操作系统虚拟节点3个。
(2) 使用1.8版本的jdk。
(3) 使用3.1.4版本的hadoop安装包。
(1) 在linux终端执行命令“initnetwork”,或者双击桌面上名称为“初始化网络”的图标,初始化实训平台网络。
(2) 在linux终端执行命令“wget -p /opt/software http://house.tipdm.com/sz-competition/zz052_2024/jdk-8u281-linux-x64.tar.gz”,下载jdk-8u281-linux-x64.tar.gz到linux本地/opt/software目录。
(3) 在linux终端执行命令“wget -p /opt/software http://house.tipdm.com/sz-competition/zz052_2024/hadoop-3.1.4.tar.gz”,下载hadoop-3.1.4.tar.gz到linux本地/opt/software目录。
(4) 打开3个终端窗口,其中2个窗口使用“ssh slave1”和“ssh slave2”命令分别连接slave1与slave2节点。
(1) 将/opt/software目录的文件jdk-8u281-linux-x64.tar.gz安装包解压到/root/software路径(若路径不存在,则需新建),具体实现如代码3-4所示,解压完成后查看/root/software目录的内容,返回结果如图3-3所示。
代码3-1 解压jdk安装包
mkdir -p /root/software tar -zxf /opt/software/jdk-8u281-linux-x64.tar.gz -c /root/software |
图3-1 查看/root/software目录内容
(2) 在master节点修改/etc/profile文件,设置jdk环境变量并使其生效,具体实现如代码3-2所示。
代码3-2 设置jdk环境变量
# 编辑/etc/profile文件 vim /etc/profile # 添加以下内容 export java_home=/root/software/jdk1.8.0_281 export path=$path:$java_home/bin # 添加内容后按esc,输入“:wq”回车保存退出 # 使环境变量生效 source /etc/profile |
(3) 在master节点分别执行“java -version”和“javac”命令,返回结果如图3-2所示。
图3-2 java -version和javac命令返回结果
(4) 将master节点jdk解压后的安装文件发送到slave1、slave2节点的/opt/module目录,具体实现如代码33所示,发送完毕后需参考代码3-2在slave1与slave2节点设置jdk环境变量并使其生效。
代码3-3 发送jdk至子节点
# 若路径不存在,则需新建 ssh slave1 "mkdir -p /root/software " ssh slave2 "mkdir -p /root/software " # 发送jdk至子节点 scp -r /root/software/jdk1.8.0_281 slave1:/root/software scp -r /root/software/jdk1.8.0_281 slave2:/root/software |
将/opt/software目录的文件hadoop-3.1.4.tar.gz安装包解压到/root/software路径(若路径不存在,则需新建),具体实现如代码3-4所示,解压完成后查看/root/software目录的内容,返回结果如图3-3所示。
代码3-4 解压hadoop安装包
mkdir -p /root/software tar -zxf /opt/software/hadoop-3.1.4.tar.gz -c /root/software |
图3-3 查看/root/software目录内容
以下步骤均在master节点上操作。
(1) 在代码3-4中已经将hadoop解压到/root/software路径,使用cd命令切换至hadoop的安装目录,然后按题目要求,创建hadoop临时数据目录、namenode元数据目录、datanode数据存储目录等相关路径,具体实现如代码3-5所示,完成后查看/root/software/hadoop-3.1.4/hadoopdatas目录的内容,返回结果如图3-4所示。
代码3-5 创建hadoop相关目录
# 进入hadoop的安装目录 cd /root/software/hadoop-3.1.4 # 创建hadoop相关目录 mkdir -p ./hadoopdatas/tempdatas mkdir -p ./hadoopdatas/namenodedatas mkdir -p ./hadoopdatas/datanodedatas mkdir -p ./hadoopdatas/dfs/nn/edits mkdir -p ./hadoopdatas/dfs/snn/name mkdir -p ./hadoopdatas/dfs/nn/snn/edits |
图3-4 查看hadoopdatas目录内容
(2) 使用cd命令切换至/root/software/hadoop-3.1.4/etc/hadoop目录,然后使用“vim”命令修改hadoop的配置文件。
修改core-site.xml文件,该文件包含集群全局参数,主要用于定义系统级别的参数,如hdfs uri、hadoop的临时数据目录等,在
代码3-6 修改core-site.xml
|
修改hadoop-env.sh和yarn-env.sh文件,这两个文件分别是hadoop与yarn运行基本环境的配置文件,需要添加jdk的实际位置。在文件中修改java_home值为当前节点jdk的安装位置,如代码3-7所示。
代码3-7 修改hadoop-env.sh和yarn-env.sh
export java_home=/usr/java/jdk1.8.0_281-amd64 |
修改mapred-site.xml,设定mapreduce运行配置,使用yarn作为mapreduce的框架,设置applicationmaster、map和reduce任务的环境变量,指定mapreduce应用程序运行所需的类路径,配置历史服务器jobhistory server的地址以及web访问地址,在
代码3-8 修改mapred-site.xml
|
修改yarn-site.xml文件,设定yarn运行配置,主要配置resourcemanager、nodemanager的通信端口、web监控端口等,在
代码3-9 修改yarn-site.xml
/root/software/hadoop-3.1.4/etc/hadoop:/root/software/hadoop-3.1.4/share/hadoop/common/lib/*:/root/software/hadoop-3.1.4/share/hadoop/common/*:/root/software/hadoop-3.1.4/share/hadoop/hdfs:/root/software/hadoop-3.1.4/share/hadoop/hdfs/lib/*:/root/software/hadoop-3.1.4/share/hadoop/hdfs/*:/root/software/hadoop-3.1.4/share/hadoop/mapreduce/lib/*:/root/software/hadoop-3.1.4/share/hadoop/mapreduce/*:/root/software/hadoop-3.1.4/share/hadoop/yarn:/root/software/hadoop-3.1.4/share/hadoop/yarn/lib/*:/root/software/hadoop-3.1.4/share/hadoop/yarn/*
|
修改workers文件,master、slave1、slave2节点均作为datanode,在workers文件里面删除原有的localhost,添加如代码3-10所示的内容。
代码3-10 修改workers文件
master slave1 slave2 |
修改hdfs-site.xml文件,设置hdfs运行配置,主要配置如namenode和datanode数据的存放位置、文件副本的个数、secondarynamenode的地址等,并且指定namenode元数据目录、datanode数据存储目录和namenode的edits文件存储目录等路径。在
代码3-11 修改hdfs-site.xml文件
|
进入/root/software/hadoop-3.1.4/sbin目录,修改hdfs的启动脚本start-dfs.sh与停止脚本stop-dfs.sh,在#!/usr/bin/env bash下方添加内容,指定datanode、namenode和secondarynamenode各个组件的运行用户,具体如代码3-12所示。
代码3-12 设置hdfs组件运行用户
hdfs_datanode_user=root hdfs_datanode_secure_user=root hdfs_namenode_user=root hdfs_secondarynamenode_user=root |
进入/root/software/hadoop-3.1.4/sbin目录,修改yarn的启动脚本start-yarn.sh和停止脚本stop-yarn.sh,在#!/usr/bin/env bash下方添加内容,指定yarn组件的运行用户,具体如代码3-13所示。
代码3-13 设置yarn组件运行用户
yarn_resourcemanager_user=root hdfs_datanode_secure_user=root yarn_nodemanager_user=root |
注意,本次搭建的hadoop集群共有3个节点,其主机名及ip地址在实训环境中已通过4.1前置步骤中的“初始化网络”配置完成,而且实训环境已设置免密切换节点,各节点时间已同步,因此跳过这些步骤。
(1) 配置hadoop环境变量
在3个节点上修改/etc/profile文件,在文件末尾修改如代码3-14所示内容,文件修改完保存退出,执行命令“source /etc/profile”使配置生效。(/root/software/hadoop-3.1.4/bin目录包含了hdfs、mapred和yarn等脚本文件,用于管理和使用hadoop。)
代码3-14 设置hadoop环境变量
export hadoop_home=/root/software/hadoop-3.1.4 export path=$path:$hadoop_home/bin |
(2) 执行代码3-15所示命令,在slave1与slave2节点创建对应目录,然后将master节点已经部署好的hadoop与/etc/profile文件复制传输到slave1、slave2节点。
代码3-15 发送安装包到子节点
ssh slave1 "mkdir -p /root/software" ssh slave2 "mkdir -p /root/software" scp -r /root/software/hadoop-3.1.4 slave1:/root/software/ scp -r /root/software/hadoop-3.1.4 slave2:/root/software/ scp /etc/profile slave1:/etc/profile scp /etc/profile slave2:/etc/profile # 在slave1与slave2节点执行以下命令使环境变量生效 source /etc/profile |
(3) 在master上执行命令“hdfs namenode -format”进行格式化,若出现“successfully formatted”提示,则格式化成功,如图3-5所示。
图3-5 格式化成功提示
(4) 启动集群
在master节点,确保修改后的环境变量已经生效,在linux终端分别执行如代码3-16所示的命令。
代码3-16 启动hadoop集群
# 进入hadoop的sbin目录 cd /root/software/hadoop-3.1.4/sbin # 启动hdfs相关服务 ./start-dfs.sh # 启动yarn相关服务 ./start-yarn.sh # 启动日志相关服务 mapred --daemon start historyserver |
hadoop集群启动之后,在主节点master,子节点slave1,slave2分别执行jps,出现如图3-6所示的信息,说明hadoop集群启动成功。
图3-6 jps查看进程
(5) 同理,关闭集群也只需要在master节点,在linux终端分别执行如代码3-17所示的命令。
代码3-17 关闭集群
# 进入hadoop的sbin目录 cd /root/software/hadoop-3.1.4/sbin # 关闭yarn相关服务 ./stop-yarn.sh # 关闭hdfs相关服务 ./stop-dfs.sh # 关闭日志相关服务 mapred --daemon stop historyserver |