任务描述
本关任务:在右侧命令行中完成 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
用户操作,建立tmp
、hdfs/name
、hdfs/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.sh
,stop-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.sh
,stop-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 配置成功,则测试通过。