本任务需要使用root用户完成相关配置,安装Hadoop需要配置前置环境。命令中要求使用绝对路径,具体要求如下:
1、从宿主机/opt目录下将文件hadoop-3.1.3.tar.gz、jdk-8u212-linux-x64.tar.gz,apache-zookeeper-3.5.7-bin.tar.gz复制到容器Master中的/opt/software路径中(若路径不存在,则需新建),分别将Master节点Hadoop、ZooKeeper、JDK安装包解压到/opt/module路径中(若路径不存在,则需新建),其中将JDK、Hadoop解压命令复制并粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;
题目要求将相关软件从宿主机拷贝到master容器内,并在master内解压到指定目录
首先我们需要使用
docker cp
先将软件拷贝到master容器内
dockercp hadoop-3.1.3.tar.gz master:/opt/software/
dockercp jdk-8u212-linux-x64.tar.gz master:/opt/software/
dockercp apache-zookeeper-3.5.7-bin.tar.gz master:/opt/software/
接下来进入到master容器内解压安装包
进入命令:docker exec -it master(或者容器ID) bash
tar命令解压参数可使用–help查看 ,-C 代表最终解压的目录
tar-zxvf /opt/software/hadoop-3.1.3.tar.gz -C /opt/module/
tar-zxvf /opt/software/jdk-8u212-linux-x64.tar.gz -C /opt/module/
tar-zxvf /opt/software/apache-zookeeper-3.5.7-bin.tar.gz -C /opt/module/
2、请完成host相关配置,将三个节点分别命名为master、slave1、slave2并做免密登录,修改容器中/etc/profile文件,设置JDK环境变量并使其生效,分发jdk至slave1、slave2中,均配置完毕后在Master节点分别执行“java -version”和“javac”命令,将命令行执行结果分别截图并粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下;
修改节点的主机名,有2种方法,第一种是修改/etc/hostname文件需要重启才能生效,第二种是使用
hostnamectl
不用重启即可生效
修改主机名
vim /etc/hostname
master
hostnamectl set-hostname master
免密登陆,其他节点相同
# 生成公钥和私钥t
ssh-keygen -t rsa
# 配置公钥
ssh-copy-id master
修改环境变量文件,使其生效,可使用
source
命令
JAVA_HOME=/opt/jdk1.8.0_212
PATH=$PATH:$JAVA_HOME/bin
export JAVA_HOME PATH
source /etc/profile
3、配置好zookeeper,其中zookeeper使用集群模式,分别在master、slave1、slave2作为其集群的节点,使用zkServer.sh status获取zookeeper服务端状态,将命令和结果截图粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下(注:只截取三个节点中zookeeper server角色模式为leader的节点)
该题目要求我们搭建3个节点的zookeeper集群,可在master节点搭建好,使用
scp
命令分发至另外2个节点
首先我们进入到$ZOOKEEPER/conf/下修改zoo.cfg文件,该目录下会有模板,可复制模板文件或者将模板文件改为zoo.cfg,只需要修改dataDir和添加server地址2处配置
第一个参数是服务器的唯一标识符(例如,“server.1”,“server.2”,“server.3”)。
第二个参数是服务器的主机名或IP地址,后跟Quorum通信协议的端口号(2888)。
第三个参数是服务器的主机名或IP地址,后跟领导者选举协议的端口号(3888)。
这些参数共同定义了一个点对点网络,由ZooKeeper服务器相互协调,以在客户端之间维护一致的数据状态。
tickTime=2000initLimit=10syncLimit=5# 推荐放在zookeeper安装目录下dataDir=/opt/module/zookeeper-3.5.7/zkData
clientPort=2181server.1=master:2888:3888
server.2=slave1:2888:3888
server.3=slave2:2888:3888
接下来我们需要在前面配置文件定义的dataDir目录下创建一个myid文件,与server后面的唯一标识对应
echo"1"> /opt/module/zookeeper-3.5.7/zkData/myid
将master节点已经配置好的zookeeper分发至slave1、slave2节点
进入到另外2个节点,修改/opt/module/zookeeper-3.5.7/zkData/myid的值,slave1:/opt/module/zookeeper-3.5.7/zkData/myid => 2 ,slave2:/opt/module/zookeeper-3.5.7/zkData/myid => 3
scp-r /opt/module/zookeeper-3.5.7 slave1:/opt/module
scp-r /opt/module/zookeeper-3.5.7 slave2:/opt/module
分别在3个节点启动zkServer
启动命令
zkServer.sh start
查看状态命令
zkServer.sh status
停止命令
zkServer.sh stop
最后,需要注意,题目中要求只截图leader角色的节点
4、配置好Hadoop HA,请将dfs.ha.namenodes.hadoopcluster设置为nn1、nn2,同时yarn.resourcemanager.ha.rm-ids设置为rm1、rm2,并在Master启动nn1与rm1,在slave1启动nn2与rm2,将master、slave1、slave2均作为datanode,分发hadoop至slave1、slave2中,启动yarn与hdfs的HA集群(Hadoop HA集群),并在Master节点上使用命令分别查看服务nn2与rm2进程状态,并将查看命令及结果截图粘贴至客户端桌面【Release\任务A提交结果.docx】中对应的任务序号下
该题是我们整个搭建考查的重点也是难点,因为题目中要求namenode-HA和 yarn-HA 模式,所以相关配置项非常多,靠人脑全部记下来费时费力,所以,此题我们采取偷懒的办法!!
在hadoop安装包内是有一份静态的网页文档的,在/opt/module/hadoop-3.1.3/share/doc/hadoop
目录下,我们将该文档拷贝到我们的宿主机,再从宿主机拷贝到我们的客户端,查看文档搭建
找到index.html使用谷歌浏览器打开,然后找到namenode ha搭建的文档,可以看到hadoop3是有2种ha模式的,题目中也没有要求使用哪种,所以我们选择一种搭建即可(感觉是赛方疏忽了)
完整配置如下:
core-site.xml
<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="configuration.xsl"?><!--
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License. See accompanying LICENSE file.
--><!-- Put site-specific property overrides in this file. --><configuration><property><name>fs.defaultFS</name><value>hdfs://mycluster</value><description>The name of the default file system. A URI whose
scheme and authority determine the FileSystem implementation. The
uri's scheme determines the config property (fs.SCHEME.impl) naming
the FileSystem implementation class. The uri'
版权归原作者 Eternity_04 所有, 如有侵权,请联系我们删除。