Hadoop-HA集群安装部署
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集群安装部署相关推荐
- 虚拟机CentOS 7.5.1804下无外网Hadoop HA集群安装
网上有很多Hadoop HA集群安装的资料,我当时安装也是参考了官方文档和这些资料才安装成功的.由于使用的环境和软件版本可能有所不同,且因工作环境网络所限无法连接外网,加之记录一下自己的安装过程,不枉 ...
- Hadoop服务器集群安装部署及配置
配置Hadoop 配置jdk 配置从节点服务器主机名称:
- Hadoop集群安装部署_分布式集群安装_02
文章目录 一.上传与 解压 1. 上传安装包 2. 解压hadoop安装包 二.修改hadoop相关配置文件 2.1. hadoop-env.sh 2.2. core-site.xml 2.3. hd ...
- HBase 1.2.6 完全分布式集群安装部署详细过程
2019独角兽企业重金招聘Python工程师标准>>> Apache HBase 是一个高可靠性.高性能.面向列.可伸缩的分布式存储系统,是NoSQL数据库,基于Google Big ...
- SolrCloud 分布式集群安装部署(solr4.8.1 + zookeeper +tomcat)
SolrCloud 分布式集群安装部署 安装软件包准备 · apache-tomcat-7.0.54 · jdk1.7 · solr-4.8.1 · zookeeper-3.4.5 注:以上软件都是基 ...
- 安装部署(七) 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 ...
- 记一次 Centos7.x Hadoop3.x集群安装部署 Pig 0.17.0
基本信息 官网 http://pig.apache.org/ 下载地址 http://www.apache.org/dyn/closer.cgi/pig https://mirror.bit.edu. ...
- (超详细)基于Zookeeper的Hadoop HA集群的搭建
基于Zookeeper的Hadoop HA集群的搭建 JunLeon--go big or go home 前言: 高可用(high availability,HA)指的是若当前工作中的机器宕机了,系 ...
- zookeeper集群安装部署
zookeeper集群安装部署 1:规划: 集群建议至少在三台服务器上部署 192.168.1.171 192.168.1.172 192.168.1.173 2:去各 ...
最新文章
- matlab科学计算及分析,matlab科学计算
- bootstrap菜单展开收起_菜单展开及收缩效果 bootstrap+jquery
- python是用c写的吗-python和c语言的区别是什么
- 少儿计算机兴趣小组活动记录,2013年度儿童画兴趣小组活动记录Word编辑
- 40.leetcode17_letter_combinations_of_a_phone_number
- 10A 的GROUP和CUI使用
- 形象解释 undefined 和 null 之间的区别
- echarts 加载优化_【第1615期】React Native 图表性能优化实践
- AMD IOMMU与Linux (2) -- IVRS及AMD IOMMU硬件初始化
- 机器学习中分类和聚类的区别
- 将EXCEL自定义时间格式转换为时间格式
- 移动机器人运动控制算法入门
- 连接数据库显示: Access denied for user ‘root‘@‘locahost‘(using password:YES)解决方式。
- 如何判断一个APP页面是原生的还是H5页面
- 《自為墓誌銘·〔明〕張岱》原文|譯文|注釋|賞析
- 5G连通性的未来:14个可能被颠覆的行业
- Mac网络热点的配置Charles移动端抓包实战
- Excel无法打开文件新建 XLSX 工作表.xlsx,因为文件格式或文件扩展名无效。请确定文件未损坏解决办法【笔记】
- C# 实现对PPT插入、编辑、删除表格
- 代码管理平台gitlab
热门文章
- windows10 用命令 开启 wifi
- 华纳云香港机房CN2线路服务器测评,去程电信CN2联通移动直连,回程CN2+AS4837
- Multisim实现D触发器时钟信号分频
- 【Java】Constant expression required
- Gateway断言工厂配置
- 使用广泛的pdf分割软件
- 由 BigDecimal 舍入算法引发的血案:ROUND_HALF_UP 与 ROUND_UP
- Excle~学习好曲折
- 判断二极管导通例题_高考压轴题秒解-导数篇
- Error from server error dialing backend remote error tls internal error