HA高可用集群安装部署

1 运行环境

1.1 软件环境

三个节点及以上
OS:64位RHEL5及以上或者64位CentOS7.0及以上
JVM:预装64位JDK 1.8及以上版本

1.2 浏览器要求

Firefox 39.0.0版本及以上或者Google Chrome 54.0.2840.8版本及以上。

2 安装准备

2.1 准备虚拟机

准备三个节点的虚拟机

2.2 修改主机名

在各个节点执行以下操作来修改主机名,使集群下的主机有格式一个统一的主机名,以便后续的操作和维护。
修改主机名(便于后续操作)

hostnamectl set-hostname ‘ha001’
hostnamectl set-hostname ‘ha002’
hostnamectl set-hostname ‘ha003’

修改玩后重启生效

192.168.20.111 ha001 作为namenode的active节点
192.168.20.112 ha002 作为namenode的standby节点
192.168.20.113 ha003 作为datanode节点

修改host映射

vi /etc/hosts

添加集群映射

192.168.20.111 ha001
192.168.20.112 ha002
192.168.20.113 ha003

2.3 关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

2.4 配置时间同步

yum –y install ntpdate

ntpdate pool.ntp.org

2.5 配置免密登录

先删除原来配置的免密(三台)

rm -rf /root/.ssh

重新配置免密登录

ssh-keygen

ssh-copy-id ha001

ssh-copy-id ha002

ssh-copy-id ha003

记得给自己和其它两台都要同时发

2.6 安装JDK

参照本专栏前面的Hadoop详细集群搭建一文(记得配置环境变量)

3 安装其它组件

3.1 安装Zookeeper

参照本专栏前面的Zookeeper实战技能一文
之前已经安装的记得修改/usr/local/zookeeper-3.4.6/conf/下的zoo.cfg文件:
(因为主机名修改,映射也要修改)

然后启动Zookeeper
在ha001、ha002、ha003下都要执行

cd /usr/local/zookeeper-3.4.6/

bin/zkServer.sh start

bin/zkServer.sh status


出现lead,fllower,fllower为正常
注意:先把Hadoop集群正常模式配置一遍,先正常启动后,在
去配制高可用

3.2 安装高可用Hadoop

Hadoop部分的配置分为两部分HDFS和YARN

3.2.1 HDFS

1.修改配置文件
修改core-site.xml

vi core-site.xml

修改为以下内容:

<configuration>
<!-- 指定hdfs的nameservice为beh --><property><name>fs.defaultFS</name><value>hdfs://beh</value><final>false</final></property>
<!-- 指定hadoop临时目录 --><property><name>hadoop.tmp.dir</name><value>/usr/local/hadoop-2.7.3/tmp</value><final>false</final></property>
<!-- 指定zookeeper地址 --><property><name>ha.zookeeper.quorum</name><value>ha001:2181,ha002:2181,ha003:2181</value><final>false</final></property>
</configuration>

修改hdfs-site.xml

vi hdfs-site.xml

修改为以下内容:

<configuration>
<!--指定hdfs的nameservice为beh,需要和core-site.xml中的保持一致 --><property><name>dfs.nameservices</name><value>beh</value><final>false</final></property>
<!-- beh下面有两个NameNode,分别是nn1,nn2 --><property><name>dfs.ha.namenodes.beh</name><value>nn1,nn2</value><final>false</final></property>
<!-- nn1的RPC通信地址 --><property><name>dfs.namenode.rpc-address.beh.nn1</name><value>ha001:9000</value><final>false</final></property>
<!-- nn1的http通信地址 --><property><name>dfs.namenode.http-address.beh.nn1</name><value>ha001:50070</value><final>false</final></property>
<!-- nn2的RPC通信地址 --><property><name>dfs.namenode.rpc-address.beh.nn2</name><value>ha002:9000</value><final>false</final></property>
<!-- nn2的http通信地址 --><property><name>dfs.namenode.http-address.beh.nn2</name><value>ha002:50070</value><final>false</final></property><!-- 指定NameNode的元数据在JournalNode上的存放位置 -->
<property><name>dfs.namenode.shared.edits.dir</name>   <value>qjournal://ha001:8485;ha002:8485;ha003:8485/beh</value><final>false</final></property>
<!-- 指定JournalNode在本地磁盘存放数据的位置 -->
<property><name>dfs.journalnode.edits.dir</name><value>/usr/local/hadoop-2.7.3/journalData</value><final>false</final></property>
<!-- 开启NameNode失败自动切换 --><property><name>dfs.ha.automatic-failover.enabled.beh</name><value>true</value><final>false</final></property>
<!-- 配置失败自动切换实现方式 --><property>    <name>dfs.client.failover.proxy.provider.beh</name>  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value><final>false</final></property>
<!-- 配置隔离机制方法,多个机制用换行分割,即每个机制暂用一行--><property><name>dfs.ha.fencing.methods</name><value>sshfence
shell(/bin/true)
</value><final>false</final></property>
<!-- 获取私钥 --><property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/usr/local/.ssh/id_rsa</value><final>true</final></property>
<!-- 指定副本数--><property><name>dfs.replication</name><value>3</value><final>false</final></property>
<configuration>

修改slaves

vi slaves

修改为以下内容:

ha003

3.2.2 YARN

修改mapred-site.xml

vi mapred-site.xml

修改为以下内容:

<configuration>
<property><name>mapreduce.framework.name</name><value>yarn</value>
</property>
</configuration>

修改yarn-site.xml

vi yarn-site.xml

修改为以下内容:

<!-- ha003作为nodemanger -->
<property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value>
</property><!-- 开启RM高可用 -->
<property><name>yarn.resourcemanager.ha.enabled</name><value>true</value>
</property><!-- 开启RM失败自动切换 -->
<property>
<name>yarn.resourcemanager.ha.automatic-failover.enabled</name><value>true</value>
</property><!-- 指定RM的cluster id -->
<property><name>yarn.resourcemanager.cluster-id</name><value>beh</value>
</property><!-- 指定RM的名字 -->
<property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value>
</property><!-- 分别指定RM的地址 -->
<property><name>yarn.resourcemanager.hostname.rm1</name><value>ha001</value>
</property>
<property><name>yarn.resourcemanager.hostname.rm2</name><value>ha002</value>
</property><property>
<name>yarn.resourcemanager.webapp.address.rm1</name><value>ha001:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>ha002:8088</value>
</property><!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>ha001:2181,ha002:2181,ha003:2181</value>
</property>

修改环境变量

vi hadoop-env.sh

vi yarn-env.sh

修改为以下内容:

export JAVA_HOME=/usr/local/jdk1.8.0_102

3.2.3 分发配置文件

scp -r /usr/local/hadoop-2.7.3 ha002:/usr/local

scp -r /usr/local/hadoop-2.7.3 ha003:/usr/local

注:将以上配置复制到所有节点

3.2.4启动HDFS

第一步:删除原来的元数据跟真实数据(在三台同时进行)

rm -rf /usr/local/hadoop-2.7.3/data

第二步:zookeeper重新启动(ha001、ha002、ha003三台全操作)

cd /usr/local/zookeeper-3.4.6/
bin/zkServer.sh start
bin/zkServer.sh status

出现leader,fllower,fllower为正常

第三部:主节点上启动整个集群 (只在 ha001操作)

start-all.sh

第四步:先启动QJM,(ha001、ha002、ha003三台全操作)

hadoop-daemon.sh start journalnode

第五步:格式化zookeeper,在ha01上执行(只执行一次)

hdfs zkfc -formatZK

第六步:对ha01节点进行格式化和启动启动namenode(进程名:NameNode)

hdfs namenode -format (只执行一次)
hadoop-daemon.sh start namenode


第七步:对ha02节点进行格式化和启动

hdfs namenode -bootstrapStandby (只执行一次)
hadoop-daemon.sh start namenode

第八步:启动zookeeper的监控节点(再01和02上执行)

hadoop-daemon.sh start zkfc


第九步:启动datanode (在ha03启动)

hadoop-daemon.sh start datanode


最后去验证HDFS高可用集群:
打开浏览器,访问 ha001:50070 以及 ha002:50070,你将会看到两个namenode一个是active而另一个是standby。
然后kill掉其中active的namenode进程,另一个standby的naemnode将会自动转换为active状态
192.168.20.111:50070

192.168.20.112:50070

然后我们把active状态的ha001结束,看它是否自动用ha002顶替位置

ha001宕机!!!

但ha002成功上位,变为active!!!

此时说明高可用集群搭建成功!!!

文末附上该高可用集群的启动命令与停止命令(也可以根据这些命令整合编写一脚本):

启动高可用集群
zkServer.sh start (ha001、ha002、ha003执行)
hadoop-daemon.sh start journalnode (ha001、ha002、ha003执行)
hadoop-daemon.sh start namenode (ha001、ha002执行)
hadoop-daemon.sh start zkfc (ha001、ha002执行)
hadoop-daemon.sh start datanode (ha003执行)
start-yarn.sh (ha001执行)
yarn-daemon.sh start resourcemanager (ha002执行)

停止高可用集群
zkServer.sh stop (ha001、ha002、ha003执行)
hadoop-daemon.sh stop journalnode (ha001、ha002、ha003执行)
hadoop-daemon.sh stop namenode (ha001、ha002执行)
hadoop-daemon.sh stop zkfc (ha001、ha002执行)
hadoop-daemon.sh stop datanode (ha003执行)

Hadoop-HA集群安装部署相关推荐

  1. 虚拟机CentOS 7.5.1804下无外网Hadoop HA集群安装

    网上有很多Hadoop HA集群安装的资料,我当时安装也是参考了官方文档和这些资料才安装成功的.由于使用的环境和软件版本可能有所不同,且因工作环境网络所限无法连接外网,加之记录一下自己的安装过程,不枉 ...

  2. Hadoop服务器集群安装部署及配置

    配置Hadoop 配置jdk 配置从节点服务器主机名称:

  3. Hadoop集群安装部署_分布式集群安装_02

    文章目录 一.上传与 解压 1. 上传安装包 2. 解压hadoop安装包 二.修改hadoop相关配置文件 2.1. hadoop-env.sh 2.2. core-site.xml 2.3. hd ...

  4. HBase 1.2.6 完全分布式集群安装部署详细过程

    2019独角兽企业重金招聘Python工程师标准>>> Apache HBase 是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,是NoSQL数据库,基于Google Big ...

  5. SolrCloud 分布式集群安装部署(solr4.8.1 + zookeeper +tomcat)

    SolrCloud 分布式集群安装部署 安装软件包准备 · apache-tomcat-7.0.54 · jdk1.7 · solr-4.8.1 · zookeeper-3.4.5 注:以上软件都是基 ...

  6. 安装部署(七) HBase集群安装部署与测试

    HBase集群安装部署与测试 Hadoop 2.7.2  Spark 2.0.0 Kafka 0.10.0.0 HBase 1.2.2 Zookeeper 3.4.8 参考: http://www.t ...

  7. 记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0

    基本信息 官网 http://pig.apache.org/ 下载地址 http://www.apache.org/dyn/closer.cgi/pig https://mirror.bit.edu. ...

  8. (超详细)基于Zookeeper的Hadoop HA集群的搭建

    基于Zookeeper的Hadoop HA集群的搭建 JunLeon--go big or go home 前言: 高可用(high availability,HA)指的是若当前工作中的机器宕机了,系 ...

  9. zookeeper集群安装部署

    zookeeper集群安装部署 1:规划:     集群建议至少在三台服务器上部署     192.168.1.171     192.168.1.172     192.168.1.173 2:去各 ...

最新文章

  1. matlab科学计算及分析,matlab科学计算
  2. bootstrap菜单展开收起_菜单展开及收缩效果 bootstrap+jquery
  3. python是用c写的吗-python和c语言的区别是什么
  4. 少儿计算机兴趣小组活动记录,2013年度儿童画兴趣小组活动记录Word编辑
  5. 40.leetcode17_letter_combinations_of_a_phone_number
  6. 10A 的GROUP和CUI使用
  7. 形象解释 undefined 和 null 之间的区别
  8. echarts 加载优化_【第1615期】React Native 图表性能优化实践
  9. AMD IOMMU与Linux (2) -- IVRS及AMD IOMMU硬件初始化
  10. 机器学习中分类和聚类的区别
  11. 将EXCEL自定义时间格式转换为时间格式
  12. 移动机器人运动控制算法入门
  13. 连接数据库显示: Access denied for user ‘root‘@‘locahost‘(using password:YES)解决方式。
  14. 如何判断一个APP页面是原生的还是H5页面
  15. 《自為墓誌銘·〔明〕張岱》原文|譯文|注釋|賞析
  16. 5G连通性的未来:14个可能被颠覆的行业
  17. Mac网络热点的配置Charles移动端抓包实战
  18. Excel无法打开文件新建 XLSX 工作表.xlsx,因为文件格式或文件扩展名无效。请确定文件未损坏解决办法【笔记】
  19. C# 实现对PPT插入、编辑、删除表格
  20. 代码管理平台gitlab

热门文章

  1. windows10 用命令 开启 wifi
  2. 华纳云香港机房CN2线路服务器测评,去程电信CN2联通移动直连,回程CN2+AS4837
  3. Multisim实现D触发器时钟信号分频
  4. 【Java】Constant expression required
  5. Gateway断言工厂配置
  6. 使用广泛的pdf分割软件
  7. 由 BigDecimal 舍入算法引发的血案:ROUND_HALF_UP 与 ROUND_UP
  8. Excle~学习好曲折
  9. 判断二极管导通例题_高考压轴题秒解-导数篇
  10. Error from server error dialing backend remote error tls internal error