架构图
集群节点分配
- hadoop1
Zookeeper
NameNode(active)
Resourcemanager (active)
- hadoop2
Zookeeper
NameNode (standby)
- hadoop3
Zookeeper
ResourceManager(standby)
- hadoop4
DataNode
NodeManager
JournalNode
- hadoop5
DataNode
NodeManager
JournalNode
- hadoop6
DataNode
NodeManager
JournalNode
安装步骤
固化IP
修改配置文件
cd
/etc/sysconfig/network-scripts #进入网络配置目录
dir ifcfg* #找到网卡配置文件
ifcfg-eno16777736 ifcfg-lo
vi ifcfg-eno16777736
配置文件内容
TYPE=Ethernet
BOOTPROTO=static #改成static,针对NAT
NAME=eno16777736
UUID=4cc9c89b-cf9e-4847-b9ea-ac713baf4cc8
DEVICE=eno16777736
ONBOOT=yes #开机启动此网卡
IPADDR=192.168.163.129 #固定IP地址
NETMASK=255.255.255.0 #子网掩码
GATEWAY=192.168.163.2 #网关和NAT自动配置的相同,不同则无法登录
DNS1=192.168.163.2 #和网关相同
重启网络
service network restart
ping www.baidu.com
永久关闭每台机器的防火墙
systemctl stop firewalld.service #关闭防火墙服务
systemctl disable firewalld.service #禁止防火墙开启启动
firewall-cmd --state #检查防火墙状态
为每台机器配置主机名
hadoop1,hadoop2 ……
以及hosts文件
配置主机名
执行:vim /etc/hostname 修改为hadoop1~6
然后执行 hostname 主机名
达到不重启生效目的
配置hosts文件
执行:vim /etc/hosts
示例:
127.0.0.1 localhost
::1 localhost
192.168.65.121 hadoop1
192.168.65.122 hadoop2
192.168.65.123 hadoop3
192.168.65.124 hadoop4
192.168.65.125 hadoop5
192.168.65.126 hadoop6
通过远程命令将配置好的hosts文件scp到其他5台节点上
执行:scp /etc/hosts hadoop2:/etc
为每台机器配置ssh免秘钥登录
执行:ssh-keygen
ssh-copy-id root@hadoop1 (分别发送到6台节点上)
vim /root/.ssh/known_hosts 检查是否配置成功
为每台机器安装jdk和配置JAVA_HOME
vim /etc/profile
在尾行添加
JAVA_HOME=/home/app/jdk1.8.0_65
JAVA_BIN=/home/app/jdk1.8.0_65/bin
HADOOP_HOME=/home/app/hadoop-2.7.1
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN HADOOP_HOME PATH CLASSPATH
前三台机器安装和配置zookeeper
解压安装包 tar -xvf zookeeper-3.4.8.tar.gz
进入conf目录 cd zookeeper-3.4.8/conf/
复制zoo_sample.cfg 为zoo.cfg: cp zoo_sample.cfg zoo.cfg
编辑zoo.cfg:vim zoo.cfg
Zookeeper根目录中创建tmp文件夹,tmp文件夹中创建myid文件,编辑文本:1(2,3)
拷贝整个zookeeper目录到hadoop2,hadoop3并修改myid文件分别为1,2
scp -r zookeeper-3.4.8 hadoop2:/home/app
安装和配置01节点的hadoop
解压安装包
cd etc/hadoop
配置 hadoop-env.sh
配置jdk安装所在目录
配置hadoop配置文件所在目录
配置core-site.xml
配置01节点的hdfs-site.xml
配置
配置 mapred-site.xml
配置代码:
配置yarn-site.xml
配置代码:
配置slaves文件
配置代码:
hadoop4
hadoop5
hadoop6
根据配置文件,创建相关的文件夹,用来存放对应数据
在hadoop-2.7.1目录下创建:
①journal目录
②创建tmp目录
③在tmp目录下,分别创建namenode目录和datanode目录
配置 hadoop 的环境变量(可不配)
JAVA_HOME=/home/app/jdk1.8.0_65
JAVA_BIN=/home/app/jdk1.8.0_65/bin
HADOOP_HOME=/home/app/hadoop-2.7.1
PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN HADOOP_HOME PATH CLASSPATH
通过scp 命令,将hadoop安装目录远程copy到其他5台机器上
比如向hadoop02节点传输:
scp -r hadoop-2.7.1 hadoop2:/home/app
启动zookeeper集群
在Zookeeper安装目录的bin目录下执行:sh zkServer.sh start
格式化zookeeper
在zk的leader节点上执行:
hdfs zkfc -formatZK,这个指令的作用是在zookeeper集群上生成ha节点 (ns节点)
注:18--24步可以用一步来替代:进入hadoop安装目录的sbin目录,执行: sh start-dfs.sh 。 但建议还是按部就班来执行,比较可靠。
启动journalnode集群
在4、5、6节点上执行:
切换到hadoop安装目录的sbin目录下,执行:
sh hadoop-daemons.sh start journalnode
然后执行jps命令查看进程。
格式化1节点的namenode
在1节点上执行:
hadoop namenode -format
启动1节点的namenode
在 1 节点上执行:
sh hadoop-daemon.sh start namenode
把2节点的namenode节点变为standby namenode节点
在2节点上执行:
hdfs namenode -bootstrapStandby
启动 2 节点的 namenode 节点
在2节点上执行:
sh hadoop-daemon.sh start namenode
在4,5,6节点上启动datanode节点
在 4,5,6 节点上执行: sh hadoop-daemon.sh start datanode
启动zkfc(启动FalioverControllerActive)
在1,2节点上执行:
sh hadoop-daemon.sh start zkfc
在1节点上启动主Resourcemanager
在1节点上执行:start-yarn.sh
启动成功后,4,5,6节点上应该有nodemanager 的进程
在 3 节点上启动副 Resoucemanager
在3节点上执行:sh yarn-daemon.sh start resourcemanager
测试
输入地址:
http://192.168.65.111:50070 ,查看 namenode 的信息,是active状态
输入地址:
http://192.168.65.22:50070查看namenode的信息,是standby状态
然后停掉01节点的namenode,此时发现standby的namenode变为active。