优秀的编程知识分享平台

网站首页 > 技术文章 正文

Hadoop2.0 HA 集群搭建步骤

nanyue 2025-02-26 13:09:45 技术文章 13 ℃

架构图

集群节点分配

  • 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

fs.defaultFS

hdfs://ns

hadoop.tmp.dir

/home/app/hadoop-2.7.1/tmp

ha.zookeeper.quorum

hadoop1:2181,hadoop2:2181,hadoop3:2181

配置01节点的hdfs-site.xml

配置

dfs.nameservices

ns

dfs.ha.namenodes.ns

nn1,nn2

dfs.namenode.rpc-address.ns.nn1

hadoop1:9000

dfs.namenode.http-address.ns.nn1

hadoop1:50070

dfs.namenode.rpc-address.ns.nn2

hadoop2:9000

dfs.namenode.http-address.ns.nn2

hadoop2:50070

dfs.namenode.shared.edits.dir

qjournal://hadoop4:8485;hadoop5:8485;hadoop6:8485/ns

dfs.journalnode.edits.dir

/home/app/hadoop-2.7.1/journal

dfs.ha.automatic-failover.enabled

true

dfs.client.failover.proxy.provider.ns

org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

dfs.ha.fencing.methods

sshfence

dfs.ha.fencing.ssh.private-key-files

/root/.ssh/id_rsa

dfs.namenode.name.dir

file:///home/app/hadoop-2.7.1/tmp/namenode

dfs.datanode.data.dir

file:///home/app/hadoop-2.7.1/tmp/datanode

dfs.replication

3

dfs.permissions

false

配置 mapred-site.xml

配置代码:

mapreduce.framework.name

yarn

配置yarn-site.xml

配置代码:

yarn.resourcemanager.ha.enabled

true

yarn.resourcemanager.ha.rm-ids

rm1,rm2

yarn.resourcemanager.hostname.rm1

hadoop1

yarn.resourcemanager.hostname.rm2

hadoop3

yarn.resourcemanager.recovery.enabled

true

yarn.resourcemanager.store.class

org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore

yarn.resourcemanager.zk-address

hadoop1:2181,hadoop2:2181,hadoop3:2181

For multiple zk services, separate them with comma

yarn.resourcemanager.cluster-id

yarn-ha

yarn.resourcemanager.hostname

hadoop1

yarn.nodemanager.aux-services

mapreduce_shuffle

配置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。

最近发表
标签列表