[Hadoop基础]-- Hadoop namenode的HA搭建
基本架构如下
1\\准备机器h15、h16、h17、h18
将zookeeper文件复制到h15\h16\h17上,并且解压
说明如下:zookeeper-3.4.6/zookeeper-3.4.6/docs/zookeeperStarted.html
2\\搭建zookeeper:使用机器h15\h16\h17(非单机版配置需要添加红色字体内容)
【a】分别在h15\h16\h17上zookeeper的解压目录下:/home/zookeeper-3.4.6/conf---à新建一个文件:zoo.cfg
内容:(见备注一)
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
initLimit=5
syncLimit=2
server.1=h15:2888:3888
server.2=h16:2888:3888
server.3=h17:2888:3888
【b】分别在h15\h16\h17上的/var/lib目录下创建:vi /var/lib/zookeeper/myid(内容见备注二)
#myid的内容分别是server.1,server.2,server.3的数字;
即h15上是数字”1”,h16上是数字”2”,h17上是数字”3”
【c】分别在h15\h16\h17上配置zookeeper的环境变量
#vi ~/.bash_profile
添加:
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:/home/zookeeper-3.4.6/
bin生效一下:source ~/.bash_profile
【d】分别在h15,h16,h17上的zookeeper的bin目录下启动zookeeper:
#zkServer.sh start --------àjps查看进程------》再查看当前的目录下的日志文件:zookeeper.out
如果没有错误日志,那么启动正常!
3\\搭建journal:使用机器h16\h17\h18
\\在原有的h15是namenode的情况下,增加一个namenode,h18
操作查看hadoop官网介绍:
share/doc/hadoop/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html
【a】删除h15\h16\17\h18上,原有的数据目录:data1\data2 \home\hadoop
【b】进入h15配置hdfs-site.xml(最终配置的内容见备注三)
“mycluster”:是全局的集群唯一namenodeID
“nn1,nn2”: 是namenode的别名,本机指定实际对应的是h15、h18
<property>
<name>dfs.nameservices</name>
<value>yangjifei</value>
</property>
<property>
<name>dfs.ha.namenodes.yangjifei</name>
<value>nn1,nn2</value>
</property>
<property>
<name>dfs.namenode.rpc-address.yangjifei.nn1</name>
<value>h15:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.yangjifei.nn2</name>
<value>h18:8020</value>
</property>
<property>
<name>dfs.namenode.http-address.yangjifei.nn1</name>
<value>h15:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.yangjifei.nn2</name>
<value>h18:50070</value>
</property>
【c】hdfs-site.xml上再配置journal的机器名称
这里我设置h16\h17\h18为journal机器节点
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://h16:8485;h17:8485;h18:8485/yangjifei</value>
</property>
【d】在hdfs.xml上再指定全局的唯一namenodeID,使用一个java类获取
<property>
<name>dfs.client.failover.proxy.provider.yangjifei</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
【f】在hdfs-site.xml中,再配置私钥所在目录(因为它们是用私钥交互),
一定要用私钥的目录:/root/.ssh/id_rsa
<property>
<name>dfs.ha.fencing.methods</name>
<value>sshfence</value>
</property>
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_dsa</value>
</property>
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/path/to/journal/node/local/data</value>
</property>
【g】在hdfs-site.xml中配置namenode自动切换的功能,设置为true
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>
【h】在core-site.xml(最终内容见备注四)中,配置故障转移的监控zookeeper节点
<property>
<name>ha.zookeeper.quorum</name>
<value>h15:2181,h16:2181,h17:2181</value>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://yangjifei</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop</value>
</property>
注意:配置结束后必须保证,h15\h16\h17\h18机器的hdfs-site.xml和core-site.xml文件一致
即:复制文件到其他的h16\h17\18集群上
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h16:/home/hadoop-2.5.1/etc/hadoop/
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h17:/home/hadoop-2.5.1/etc/hadoop/
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h18:/home/hadoop-2.5.1/etc/hadoop/
注意:需要使core-site.xml上的”hdfs://yangjifei”与hdfs-site.xml文件取得别名一致
4\\配置h18与h15的免密码登录(注意一定也要检查h15和h18是否自己能够登录自己,其他节点也要生成密钥,但是不用追加)
在h18上,将其公钥复制到h15上;然后在h15上,追加其公钥到au??
先在h18上生成秘钥:ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
#scp ~/.ssh/id_dsa.pub root@192.168.142.115: /home/
#cat /home/id_dsa.pub >> ~/.ssh/authorized_keys
#cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
#ssh-keygen ------》不断回车---》直到生成完成
5\\在h15上多节点地启动zookeeper:命令目录在/hadoop-2.5.1/sbin下
或者进入目录后执行:zookeeper-3.4.6/bin/zkServer.sh start
6\\在\h18\h17\h16上的hadoop的sbin目录下
分别单节点启动journal:./hadoop-daemon.sh start journalnode
如 [root@h18 sbin]# ./hadoop-daemon.sh start journalnode
7\\在h15\h18其中一个namenode上格式化:hdfs namenode -format
复制文件夹的命令:scp -r /home/hadoop root@h18:/home
a) 启动刚刚格式化的namenode :sh hadoop-daemon.sh start namenode
(注意:如果datanode没有起来,那么需要各自执行:sh hadoop-daemon.sh start datanode)
b) 在没有格式化的namenode上执行:hdfs namenode -bootstrapStandby
c) 在h15(或者能够免密码联通所有机器的namenode)上
启动namenode à [h18@root sbin]# sh start-dfs.sh(同时启动zfc的命令)
d) 在其中一个namenode上初始化zkfc:hdfs zkfc –formatZK(只能格式化一次)
8\\在h15上启动集群:start-dfs.sh和start-yarn.sh
全部启动:start-all.sh脚本现在已经废弃,推荐使用start-dfs.sh和start-yarn.sh分别启动HDFS和YARN。
错误:root@h15's password: h15: Permission denied, please try again.
原因是在h15\h18上自己不能ssh连接自己,解决:在h15和h18上先执行
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
再执行:cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
9\\测试是否成功(页面上要有standby和active)
错误:org.apache.hadoop.ha.ZKFailoverController: Unable to start failover con
troller. Parent znode does not exist.
解决:由于zkfc没有全部起来,原因是没有格式化成功!即第7步没有成功,需要重新来一次-----》
先在h15上格式化后:hdfs zkfc -formatZK
再在h15\h16上启动:hadoop-daemon.sh start zkfc
如果由于数据的影响,不能正常启动hadoop集群,则需要清除/data1 /data2 /opt/stx/hadoop 后,再执行7、8、9步骤
错误: org.apache.hadoop.yarn.server.resourcemanager.ResourceManager: Error starting
错误:Error: Could not find or load main class resourcemanager
使用命令启动:yarn-daemon.sh start resourcemanager
因为resourcemanger和nodemanger由yarn管理
10\\h15和h18是RM,h15、h16、h17是zookeeper
11\\在h15上配置hadoop/etc/yarn-site.xml(内容见备注五)
再配置,重命名mapred-site.xml.template ----àmapred-site.xml(见备注六)
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h16:/home/hadoop-2.5.1/etc/hadoop/
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h17:/home/hadoop-2.5.1/etc/hadoop/
#scp /home/hadoop-2.5.1/etc/hadoop/* root@h18:/home/hadoop-2.5.1/etc/hadoop/
13\\在h15上启动:sh start-yarn.sh-----à只启动一个
14\\在h18上单独启动备用ResourceManager:#yarn-daemon.sh start resourcemanager
因为#sh start-all.sh------à只会启动一台resourcemanage, 所以h18需要另外重启
如果直接重定向到原来的http://h15:8088页面,那么正常
(2)如果在h15中,执行kill -9 ? 后,隔10s(备用的,默认汇报给ResourceManager的时间是10s,而其他的是1s)
hadoop-daemon.sh start journalnode
yarn-daemon.sh start resourcemanager
备注一:zookeeper的配置文件zoo.cfg内容(目录是:/home/zookeeper-3.4.6/conf)
注意:h15\h16\h17这三台机器的zoo.cfg文件是一样的
备注二:myid文件内容(目录:/var/lib/zookeeper/myid)
注意:这个数字二指的是zoo.cfg中“server.**=h?:2888:3888”,的*代表的数字,每台zookeeper对应一个
“server.*=?:2888:3888”,此处举例是h16,所以h16对应得是“server.2=h16:2888:3888”
备注三:hdfs-site.xml的配置文件(目录:/home/hadoop-2.5.1/etc/hadoop/)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<name>dfs.datanode.data.dir</name>
<name>dfs.ha.namenodes.yangjifei</name>
<name>dfs.namenode.rpc-address.yangjifei.nn1</name>
<name>dfs.namenode.rpc-address.yangjifei.nn2</name>
<name>dfs.namenode.http-address.yangjifei.nn1</name>
<name>dfs.namenode.http-address.yangjifei.nn2</name>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://h16:8485;h17:8485;h18:8485/yangjifei</value>
<name>dfs.client.failover.proxy.provider.yangjifei</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
<name>dfs.ha.fencing.methods</name>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/root/.ssh/id_dsa</value>
<name>dfs.journalnode.edits.dir</name>
<value>/path/to/journal/node/local/data</value>
<name>dfs.ha.automatic-failover.enabled</name>
备注四:core-site.xml的配置内容(目录: /home/hadoop-2.5.1/etc/hadoop/)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<value>hdfs://yangjifei</value>
<value>/home/hadoop</value>//该目录是数据元的存放目录
<name>ha.zookeeper.quorum</name>
<value>h15:2181,h16:2181,h17</value>//zookeeper机器的host别名
备注五:配置zookeeper的高可用,文件yarn-site.xml(目录:/home/hadoop-2.5.1/etc/hadoop/)
/h15和h18可以互相接管监控资源状况!!他们是ResourceManager
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<name>yarn.resourcemanager.ha.enabled</name>
<name>yarn.resourcemanager.cluster-id</name>
<name>yarn.resourcemanager.ha.rm-ids</name>
<name>yarn.resourcemanager.hostname.rm1</name>
<name>yarn.resourcemanager.hostname.rm2</name>
<name>yarn.resourcemanager.zk-address</name>
备注六:zookeeper高可用的配置,mapred-site.xml(目录:/home/hadoop-2.5.1/etc/hadoop/)
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<name>mapreduce.framework.name</name>
[Hadoop基础]-- Hadoop namenode的HA搭建相关推荐
- hadoop基础----hadoop理论(四)-----hadoop分布式并行计算模型MapReduce详解
我们在前一章已经学习了HDFS: hadoop基础----hadoop理论(三)-----hadoop分布式文件系统HDFS详解 我们已经知道Hadoop=HDFS(文件系统,数据存储技术相关)+ M ...
- hadoop基础----hadoop实战(七)-----hadoop管理工具---使用Cloudera Manager安装Hadoop---Cloudera Manager和CDH5.8离线安装
hadoop基础----hadoop实战(六)-----hadoop管理工具---Cloudera Manager---CDH介绍 简介 我们在上篇文章中已经了解了CDH,为了后续的学习,我们本章就来 ...
- hadoop基础----hadoop实战(二)-----hadoop操作hdfs---hdfs文件系统常用命令
我们在前面已经介绍过了 hadoop 1.0是由2大部分组成的: hdfs + mapreduce 也对hdfs做了相关介绍. hadoop基础----hadoop理论(三)-----hadoop分布 ...
- [Hadoop基础]-- hadoop shell命令汇总
Hadoop Shell命令 FS Shell cat chgrp chmod chown copyFromLocal copyToLocal cp du dus expunge get getmer ...
- hadoop基础----hadoop理论----Hadoop简介
hadoop是什么? (1)Hadoop就是一个分布式计算的解决方案,也就是帮助我们把 一个任务分到很多台计算机来运算. (2)Hadoop是一个开源的框架,可编写和运行分布式应用处理大规模数据,是专 ...
- 大数据基础——Hadoop大数据平台搭建
文章目录 前言 Hadoop大数据平台搭建 一.Hadoop原理和功能介绍 二.Hadoop安装部署 三.Hadoop常用操作 总结 前言 分布式机器学习为什么需求大数据呢?随着海量用户数据的积累,单 ...
- Hadoop ha搭建
windows软件 必须从G盘加载一个文件 conf xml linux/a /b /c /d /e /f /gmount /g -> disk:G分区 /b -> disk:B分区软件 ...
- 深入浅出学大数据(五)Hadoop再探讨High Availability(HA)集群搭建及YARN原理介绍
大家好,我是不温卜火,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样 ...
- Hadoop 2.x 完全分布式HA集群环境搭建
Hadoop 2.x 完全分布式HA集群环境搭建 目录 Hadoop 2.0 环境搭建 前提:环境准备 第一步:修改hadoop-env.sh配置文件,配置好JAVA_HOME环境变量 第二步:修改h ...
最新文章
- ArcGIS 9.3 安装之 Server的安装
- python pandas库——pivot使用心得
- 兴林村脱贫谋定向往宜居村庄-农业大健康·万祥军:美丽蝶变
- php 解析xml 的四种方法(转)
- Python列表基础
- 中兴myos和鸿蒙,继华为鸿蒙系统以后!中兴再次发布新系统MyOS:可媲美苹果
- Knative 带来的极致 Serverless 体验
- ActiveReports 报表应用教程 (9)---交互式报表之动态排序
- linux make 无法生成 .o gch,Linux--makefile的使用
- 磁盘阵列(RAID)
- Cannot open D:\Program Files\Anaconda\Scripts\pip3-script.py
- html协议是一种用于什么的协议,FTP协议是一种用于( )的协议。
- 如何提高自己的工作能力 高效工作方法是绝效
- POI生成workBook时报java.long.ArrayIndexOutOfBoundsEXception:-32768
- ES文件浏览器 v4.1.8.1 破解高级版
- 硅谷火爆的云原生,你会玩吗?
- 二、C语言基本数据类型全解和基本的数据存储方式
- 安装tensorflow出现 Cannot uninstall 'wrapt'. It is a distutils installed project and thus we cannot accu
- MAC免费解压软件——解压RAR、7Zip等五六十种格式
- 基于RK3568商显版开源鸿蒙板卡产品解决方案