实验目的
1、linux 基础知识和操作命令,如 vi、mkdir、cp、mv、tar、wget、scp 等等
2、下载安装和环境变量配置
3、zookeeper 基础原理和功能
4、Hadoop 基础知识,如:HDFS、YARN、NameNode、DataNode、active、Standby 机制等等
5、掌握 Hadoop HA 的配置方法
6、掌握 Hadoop HA 启动和测试方法
实验环境
1、64 位电脑,8G 以上内存
2、win10 系统
3、本实验是在实验一、实验二的基础上操作的,有关软件的安装及配置就不在详细介绍
课时:
4 课时
实验步骤:
1、节点分工
机器名 | IP | 软件 | 进程 |
---|---|---|---|
hadoop1 | 192.168.202.129 | jdk、zookeeper、hadoop | QuorumPeerMain 、 namenode(active) 、datanode |
hadoop2 | 192.168.202.130 | jdk、zookeeper、hadoop | QuorumPeerMain、datanode、journalnode |
hadoop3 | 192.168.202.131 | jdk、zookeeper、hadoop | QuorumPeerMain、datanode、journalnode |
hadoop4 | 192.168.202.132 | jdk、hadoop | namenode(standby)、Journalnode |
2、软件准备。
(1)虚拟机 VMWare,版本是 VMware® Workstation 15 Pro 以上,太低了不支持在 win10 上运行。
(2)Linux 系统 CentOS7
(3)Jdk,参考:jdk-8u251-linux-x64.tar.gz
(4)zookeeper 文件名:apache-zookeeper-3.5.8-bin.tar.gz
下载地址:http://mirrors.hust.edu.cn/apache/ZooKeeper/
(5)finalshell
(6)Hadoop 文件名:hadoop-2.7.1.tar.gz
3、修改hadoop配置文件
①配置home/lib/hadoop-2.7.1/etc/hadoop 目录下的 core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://cluster</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/lib/htemp</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131702</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop1:2181,hadoop2:2181,hadoop3:2181</value>
</property>
</configuration>
②配置/home/lib/hadoop-2.7.1/etc/hadoop 目录下的 hdfs-site.xml
<configuration>
<property>
<name>dfs.nameservices</name>
<value>cluster</value>
</property>
<property>
<name>dfs.ha.namenodes.cluster</name>
<value>node1,node2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.cluster.node1</name>
<value>hadoop1:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.cluster.node1</name>
<value>hadoop1:50070</value>
</property>
<property>
<name>dfs.namenode.rpc-address.cluster.node2</name>
<value>hadoop4:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.cluster.node2</name>
<value>hadoop4:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop2:8485;hadoop3:8485;hadoop4:8485/cluster</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/home/lib/journaldata</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.cluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>
</configuration>
⑤配置/home/lib/hadoop-2.7.1/etc/hadoop 目录下 hadoop-env.sh、yarn-env.sh 的 JAVA_HOME,不设置的话,启动不了
export JAVA_HOME=/home/lib/jdk1.8.0_251
⑥配置/home/lib/hadoop-2.7.1/etc/hadoop 目录下的 slaves,删除默认的 localhost,增加 3 个从节点,这 3 个节点都是 datanode,如果要将删除某个 datanode 节点,如:192.168.202.129,删除对应的记录就可以。(若hadoop版本为3.x,则修改workers)
vim slaves (hadoop2.x版本)
vim workers (hadoop3.x版本)
hadoop1
hadoop2
hadoop3
hadoop4
4、集群环境搭建
(1)关闭虚拟机,虚拟机改名为 hadoop1,克隆出 hadoop2、hadoop3、hadoop4,现在我已克隆好虚拟机,如下图。
(2)在hadoop1、hadoop2、hadoop3、hadoop4上均修改主机名和主机和IP地址的映射,以hadoop1为例:
vi /etc/hostname
vi /etc/hosts
(3)进入 hadoop2 目录 /etc/sysconfig/network-scrips/ifcfg-eth33 修改从机 IP,一般最后一位自增 1,IP 为192.168.202.129,
(4)进入 hadoop2 目录 /etc/hostname,修改从机 hostname 为 hadoop2
(5)进入hadoop2 目录/opt/zookeeper/data,使用 vi myid 命令将其内容改为 2,
(6)进入 hadoop2 目录,通过 vim/etc/hosts 打开 hosts 文件,添加 IP 地址和主机的对应关系,方便以后使用主机名进行访问。与 hadoop1 下的一样。
(7)进入 hadoop3 目录进设置,与除了将 myid 的内容改为 3 之外,其它与 hadoop2 的设置一样。
(8)进入 hadoop4 目录,将 myid 的内容置为空,其它与 hadoop2 的设置一样。
(9)将 hadoop1、hadoop2、hadoop3、hadoop4 进行重启,使设置生效。
5、启动 zookeeper(参考实验二)
6、在 hadoop1 上启动集群
输入命令:start-dfs.sh
运行的界面如下:
7、分别在 hadoop1、hadoop2、hadoop3和hadoop4上运行 JPS,查看有哪些进程
hadoop1
hadoop2
hadoop3
hadoop4
8、观察节点上的进程是否与节点分工中描述的一致
9、Web 方式进行访问
(1)要先关闭防火墙
设置开机禁用防火墙:
systemctl disable firewalld.service
关闭防火墙:
systemctl stop firewalld
关闭selinux:
vim /etc/selinux/config
SELINUX=disabled
检查防火墙状态(若为active,防火墙未关闭;若为inactive,防火墙关闭成功):
systemctl status firewalld
(2)浏览器打开 http://192.168.202.129:50070/,观察 NameNode 的状态
(3)浏览器打开 http://192.168.202.132:50070/, ,观察 NameNode 的状态
10、杀掉活动节点的 NameNode 进程,观察另外一个休眠节点是否自动转化为活动节点
可以使用命令:kill -9【使用 jps 命令得到的进程号】,将 hadoop1 上的 NameNode 进程杀死,观察 hadoop4上的 NameNode的状态:,也可以使用 hadoop-daemon.sh stop namenode停止hadoop1的NameNode的进程观察hadoop4上的 NameNode的状态
kill -9 21618
hadoop-daemon.sh stop namenode
本实验相关软件分享:https://pan.baidu.com/s/1vrREumWwNVaP2kipKBPO2A 提取码: 8z4i