任务描述

本关任务:在右侧命令行中完成 Hadoop 集群的部署,安装和管理。

相关知识

为了完成本关任务,你需要掌握: 1.主机映射; 2.免密登录; 3.安装JDK; 4.Hadoop 完全分布式搭建。

主机映射

先查看各节点查看 ip 地址

master:

请输入图片描述
查看 master 节点 IP

slave1:

请输入图片描述
查看 slave1 节点 IP

slave2:

请输入图片描述
查看 slave2 节点 IP

接下来去设置主机映射,因为我们是搭建完全分布式,所以在设置映射的时候需要设置 3 台虚拟机的映射关系。

输入命令 vi /etc/hosts进行主机 ip 的映射设置,添加如下配置:

#master、slave1、slave2
172.16.248.174    master
172.16.251.34    slave1
172.16.240.174    slave2
注:需要根据自身节点 ip 地址去配置,每次重置环境会刷新 ip 地址。

请输入图片描述
配置主机映射

操作示意图如下:

请输入图片描述
主机映射操作示意图

免密登录

在各节点服务器生成秘钥:

#master、slave1、slave2
ssh-keygen -t rsa

,

在 master 复制 master、slave1、slave2 的公钥。

cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
ssh slave1 cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys
ssh slave2 cat ~/.ssh/id_rsa.pub>> ~/.ssh/authorized_keys

,

接下来来查看下 slave1 节点连接密码,首先点击 slave1 命令行窗口,再点击右上角 ,图标,最后点击 SSH 直连即可查看相关信息,如下示意图:

,

点开后,查看密码:

,

注:密码可双击选中后复制,但环境重置后密码会随机生成。

在 slave1 复制 master 的 authorized\_keys 文件。

ssh master cat ~/.ssh/authorized_keys>> ~/.ssh/authorized_keys

在 slave2 复制 master 的 authorized\_keys 文件。

ssh master cat ~/.ssh/authorized_keys>> ~/.ssh/authorized_keys

操作示意图如下:

请输入图片描述
免密登录操作示意图

安装 JDK

解压

首先在右侧命令行中创建一个/app文件夹,我们之后的软件都将安装在该目录下。 命令:mkdir /app

然后,切换到/opt目录下,来查看一下提供的压缩包

,

可以看到我们已经帮你下载好了 JDK 的安装文件。

现在我们解压 JDK 并将其移动到/app目录下

tar -zxvf jdk-8u11-linux-x64.tar.gz mv jdk1.8.0_11/ /app

可以切换到/app目录下查看解压好的文件夹 ,

配置环境变量

解压好 JDK 之后还需要在环境变量中配置 JDK ,才可以使用,接下来就来配置 JDK 。 输入命令:vim /etc/profile 编辑配置文件;

在文件末尾输入如下代码:

,

最后:source /etc/profile使刚刚的配置生效

输入:java -version 出现如下界面代表配置成功。

,

在 slave1 和 slave2 节点各创建一个/app文件夹 命令:mkdir /app

将解压好的 JDK 与配置文件通过 scp 命令发送至 slave1、slave2 中

#发送 JDK
scp -r /app/jdk1.8.0_11 root@slave1:/app
scp -r /app/jdk1.8.0_11 root@slave2:/app
#发送配置文件
scp  /etc/profile root@slave1:/etc/
scp  /etc/profile root@slave2:/etc/

在各节点上分别执行source /etc/profile,使配置文件生效。

操作示意图如下:

请输入图片描述
安装 JDK 操作示意图

Hadoop 完全分布式搭建

下面对 Hadoop 的压缩包进行解压,我们切换到 /bigfiles目录下:cd /data/bigfiles/ 可看到所提供的的压缩包。

,

解压文件并移动到/app目录下。 tar -zxvf hadoop-3.1.0.tar.gz -C /app

切换到\app目录下修改一下 hadoop 文件夹的名字。 mv hadoop-3.1.0/ hadoop3.1

,

接下来我们要开始修改 Hadoop 的配置文件了,总共需要修改6个文件。分别是:

hadoop-env.sh; yarn-env.sh ; core-site.xml; hdfs-site.xml; mapred-site.xml; yarn-site.xml。

我们一个一个接着来配置吧!

hadoop-env.sh 配置

两个env.sh文件主要是配置 JDK 的位置。

首先我们切换到 hadoop 目录下

cd /app/hadoop3.1/etc/hadoop/

编辑vi hadoop-env.sh 在文件中插入如下代码:

# The java implementation to use.  
#export JAVA_HOME=${JAVA_HOME}  
export JAVA_HOME=/app/jdk1.8.0_11

yarn-env.sh 配置

编辑vi yarn-env.sh 插入如下代码:

export JAVA_HOME=/app/jdk1.8.0_11

,

core-site.xml配置

这个是核心配置文件我们需要在该文件中加入 HDFS 的 URI 和 NameNode 的临时文件夹位置,这个临时文件夹在下文中会创建。

在文件末尾的 configuration 标签中添加代码如下:

<configuration>  
 <property>  
    <name>fs.default.name</name>  
    <value>hdfs://localhost:9000</value>  
    <description>HDFS的URI,文件系统://namenode标识:端口号</description>  
</property>  
  
<property>  
    <name>hadoop.tmp.dir</name>  
    <value>/usr/hadoop/tmp</value>  
    <description>namenode上本地的hadoop临时文件夹</description>  
</property>  
</configuration>

hdfs-site.xml文件配置

replication指的是副本数量,我们现在是单节点,所以是1

<configuration>  
<property>  
    <name>dfs.name.dir</name>  
    <value>/usr/hadoop/hdfs/name</value>  
    <description>namenode上存储hdfs名字空间元数据 </description>   
</property>  
  
<property>  
    <name>dfs.data.dir</name>  
    <value>/usr/hadoop/hdfs/data</value>  
    <description>datanode上数据块的物理存储位置</description>  
</property>  
  
<property>  
    <name>dfs.replication</name>  
    <value>3</value>  
</property>  
</configuration>

mapred-site.xml文件配置

mapred-site.xml包括 JobHistoryServer 和应用程序参数两部分,在文件末尾的configuration标签中添加代码如下:

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

yarn-site.xml配置

Yarn 的站点配置文件是 yarn-site.xml,将以下代码填充到文件的末尾的configuration标签中。

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

修改 workers文件 修改 workers 文件(hadoop2.x 这个文件名为 slaves ,现在3.0版本为 workers。)

master
slave1
slave2

创建文件夹

我们在配置文件中配置了一些文件夹路径,现在我们来创建他们,在/usr/hadoop/目录下使用hadoop用户操作,建立tmphdfs/namehdfs/data目录,执行如下命令:

mkdir -p /usr/hadoop/tmp 
mkdir /usr/hadoop/hdfs 
mkdir /usr/hadoop/hdfs/data 
mkdir /usr/hadoop/hdfs/name

将Hadoop添加到环境变量中

vim /etc/profile

在文件末尾插入如下代码:

,

最后使修改生效:source /etc/profile

格式化

在使用 Hadoop 之前我们需要格式化一些 hadoop 的基本信息。

使用如下命令:

hadoop namenode -format

出现如下界面代表成功:

,

操作示意图如下:

请输入图片描述
Hadoop 完全分布式搭建

启动Hadoop

接下来我们启动 Hadoop,在/hadoop3.1/sbin路径下: cd /app/hadoop3.1/sbin

start-dfs.shstop-dfs.sh两个文件顶部添加以下参数:

#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

还有,start-yarn.shstop-yarn.sh顶部也需添加以下:

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

再次启动start-dfs.sh,最后输入命令 jps 验证,出现如下界面代表启动成功:

,

发送 Hadoop 至另外两台虚拟机

scp -r /app/hadoop3.1 root@slave1:/app
scp -r /app/hadoop3.1 root@slave2:/app

发送配置文件至另外两台虚拟机

scp  /etc/profile root@slave1:/etc/
scp  /etc/profile root@slave2:/etc/

在各节点上source /etc/profile,使配置文件生效。

至此,Hadoop 集群的部署已全部完成。

操作示意图如下:

请输入图片描述
启动 Hadoop 操作示意图

编程要求

根据上述步骤,配置好 Hadoop 开发环境,点击评测即可。

测试说明

平台会对你编写的代码进行测试,若 Hadoop 配置成功,则测试通过。

最后修改:2024 年 11 月 28 日
如果觉得我的文章对你有用,请随意赞赏