HA高可用集群搭建
需要知道的是部署集群节点至少需要三台虚拟机,这里我命名为node01,node02,node03,另外需要自己准备好各种安装包,一下是需要准备的安装包和本人使用的版本信息:
ISO映像文件 :CentOS-7-x86_64-Minimal-1804.iso
jdk:jdk-8u231-linux-x64.tar.gz
Hadoop:hadoop-3.1.4.tar.gz
zookeeper:apache-zookeeper-3.6.2-bin.tar.gz
部署集群节点
我们接下来需要部署的规划是分别让三台虚拟机拥有以下节点规划
服务器 | node01 | node02 | node03 |
---|---|---|---|
Name Node | Y | Y | N |
Data Node | Y | Y | Y |
Resource Manager | Y | N | N |
Node Manager | Y | Y | Y |
Journal Node | Y | Y | Y |
Zookeeper | Y | Y | Y |
ZKFC | Y | Y | N |
创建虚拟机
先建立一台node01
创建
(本人使用的是VMware)
自己选择存放位置
上面的虚拟机设置,之后可以在编辑内更改
点击编辑虚拟机设置,导入下载好的镜像文件
安装CentOS
等待,上述安装过程时间会有点久
注意:安装后点击重启
对node01进行操作
创建后续需要的文件夹
data:用于存储数据
servers:用于存放解压后的各种软件
software:用于存放刚下载或导入的安装包
查看虚拟机网络配置范围
这里启示ip地址为192.168.220.128,所以我给我的node01ip打算为192.168.220.129,node02为192.168.220.130,node03是190.168.220.131
编辑/etc/hosts文件
配置静态网络node01参数
vi 打开文件
i 进入编辑模式
这里IPADDR后填入你想给01的ip
DATEWAY和DNS1后面写入上面查询到的子网ip
NETMASK后是我们的子网掩码
配置好信息后
按Esc键后输入‘:wq’退出编辑
克隆
因为02、03现在所需要的配置修改和01一样(除了ip地址),所以我们可以直接复制,复制后修改ip更加方便快捷
(当然,你也可以后续在克隆,因为后续还要在装安装包,那样更加方便,我记录的是我在这里开始的克隆)
先关闭node01,右击node01->管理->克隆
注意:一定要先关闭node01
同样的方法克隆node03
永久更改虚拟机的名字
更改node02、node03 IP
vi /etc/sysconfig/network-scripts/ifcfg-ens33
更改IPADDR后保存退出后,重启网关
至此,三台虚拟机准备完成
免密登录
分别对三台虚拟机做免密登录,注意包括自己
为了便于操作,接下来的步骤都是在secure CRT上操作的
免密操作的步骤,以node01为例:
完成了对自己的,接下来node01对02、03的
Node01验证
同样的在node02,node03上也是这样的命令和操作
安装工具包
下载lrzsz包
先下载lrzsz包,方便后续从windows导入安装包
安装jdk
导入jdk包
改名
配置jdk环境变量
安装hadoop
改名
配置Hadoop的环境变量
安装zookeeper
改名
配置zookeeper环境变量
配置zoo.cfg
创建myid文件
创建这个文件是为了后续启动zkServer进程时,数值大的作为leader
分发文件
分发zookeeper相关文件夹到其他服务器
分发给node02
同样的将02改为03分发给03
修改各自的myid文件
分发jdk
分发hadoop
分发配置文件
验证
关闭所有防火墙
同样的,node02,node03也要关闭
开启zookeeper服务,并查看状态
配置Hadoop高可用集群
为了便于修改配置文件,我们用notepad++连接三台虚拟机,在内部进行修改
修改配置文件
/export/servers/Hadoop/etc/Hadoop
修改core-site.xml文件
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/export/servers/hadoop/tmp</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>node01:2181,node02:2181,node03:2181</value>
</property>
</configuration>
这里我们需要新建tmp文件
修改hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/export/data/hadoop/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/export/data/hadoop/data</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>node01:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>node01:50070</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>node02:9000</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>node02:50070</value>
</property>
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://node01:8485;node02:8485;node03:8485/ns1</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/export/data/hadoop/journaldata</value>
</property>
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.ns1</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>
这里需要新建文件
修改marped-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
修改yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>1024</value>
</property>
<property>
<name>yarn.nodemanager.resource.cpu-vcores</name>
<value>1</value>
</property>
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>node01</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>node02</value>
</property>
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>node01:2181,node02:2181,node03:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
修改workers
node01
node02
node03
修改hadoop-env.sh
<!--在末尾处加上-->
HDFS_NAMENODE_USER=root
HDFS_DATANODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root
HDFS_JOURNALNODE_USER=root
HDFS_ZKFC_USER=root
分发配置文件给node02 node03
启动HA集群
要确保zookeeper服务已经启动,启动zookeeper服务要关闭防火墙
启动集群各个节点监控namenode的管理日志journalNode
三台均输入命令
格式化,并分发文件到node02
注意不要分发给node03
格式化namenode
格式化成功
分发data文件
格式化ZKFC
启动hadfs和yarn,查看节点
HA高可用集群搭建完成,谢谢耐心看完