原来你是这样的Hadoop HA?
1 .Hadoop HA 说明
1.1 Hadoop HA主备介绍
自Hadoop2.x版本后可以增加多个namenode节点【保存着整个系统的名称空间和文件数据块的地址映射又称“元数据”】,多个namenode有活跃(active)和 准备(Standby)两种状态 , 即一个帮派有一个正一个副,平时都是正帮主主持大局,但如果正帮主遭遇不测被Kill S掉后,这时候副帮主就得出来主持大局了。
1.2 Hadoop HA选举介绍
Hadoop HA 的正帮主(active)选举一般都要借助长老会(Zookeeper)帮助。长老会保存着每个帮会成员的生命水晶,生命水晶一般会检测到每个帮员生命特征,一但生命水晶熄灭也就代表人死亡。长老会会定时查看帮主的生命水晶状况,一但帮主生命水晶熄灭,长老会会立刻在副帮主之间推选出新的正帮主,从而继续管理帮内事务。
1.3 Hadoop HA同步机制(QJM)
当长老会(Zookeeper)推选出新的正帮主,那被推出的帮主他是如何快速接手帮内事务呢?答案是正副帮主之间有一个小本本,这个小本本记录着大小帮内的事务,帮主会将帮内事务写在这个正副帮主共享的小本本上面,所以一但帮主惨遭不测,其他帮主凭借帮主小本本也能快速上位处理帮内事务。
2. Hadoop HA 部署
2.1部署前的环境配置:
jdk1.8安装并配置环境变量
ssh免密,注意因为是多帮主帮派(namenode)故在“两个帮主”(namenode)节点生成密钥分别分发给所以节点
Zookeeper安装,每个节点都要安装。
2.2 Hadoop 节点部署
ip | 主机名 | 服务 | 备注 |
---|---|---|---|
192.168.216.111 | hadoop01 | jdk、NameNode、DataNode、JouranlNode、ResourceManger、NodeManager | 正帮主 |
192.168.216.112 | hadoop02 | jdk、NameNode、DataNode、JouranlNode、ResourceManger、NodeManager | 副帮主 |
192.168.216.113 | hadoop03 | jdk、DataNode、JouranlNode、NodeManager |
# 解压Hadoop
[root@hadoop01 src]# tar -zxvf /home/hadoop-2.7.6.tar.gz -C /usr/local/src/
#配置hadoop环境变量
[root@hadoop01 src]# vi /etc/profile
#增加jdk、zookeeper、hadoop的地址
#注意:要添加你自己解压所在的地址,下面是我的解压地址
export JAVA_HOME=/usr/local/src/jdk1.8.0_152/
export ZK_HOME=/usr/local/src/zookeeper-3.4.10/
export HADOOP_HOME=/usr/local/src/hadoop-2.7.6/
export PATH=$PATH:$JAVA_HOME/bin:$ZK_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:#刷新环境变量
[root@hadoop01 src]# source /etc/profile
NameNode和ResourceManager配置高可用大概需要配置如下6个配置文件:
2.1.1 core-site.xml
[root@hadoop01 hadoop-2.7.6]# vi ./etc/hadoop/core-site.xml<configuration>
<!--指定hdfs文件系统的默认名-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://sw</value>
</property>
<!--指定zk的集群地址-->
<property><name>ha.zookeeper.quorum</name><value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property>
<!--指定hadoop的临时目录-->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadata/tmp</value>
</property>
</configuration>
注意 " fs.defaultFS "和 " fs.default.name"的区别:
- 使用 " fs.defaultFS “首先会判断Hadoop是否开启HA(高可用),使用” fs.defaultFS "一般使用在Hadoop HA
- 使用 " fs.default.name "一般在单一的Namenode节点(一个帮就一个帮主) ,如果在单一的Namenode节点用 " fs.defaultFS "就会报错
2.1.2 hdfs-site.xml
[root@hadoop01 hadoop-2.7.6]# vi ./etc/hadoop/hdfs-site.xml<configuration>
<!--指定块的副本数,默认是3-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property><!--指定数据块的大小-->
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property><!--指定namenode的元数据目录-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/home/hadata/dfs/name</value>
</property><!--指定datanode存储数据目录-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/home/hadata/dfs/data</value>
</property><!--hdfs的命名空间,逻辑名称-->
<property><name>dfs.nameservices</name><value>sw</value>
</property><!--qianfeng下的namenode的别名-->
<property><name>dfs.ha.namenodes.sw</name><value>nn1,nn2</value>
</property><!--指定nn1和nn2的通信地址-->
<property><name>dfs.namenode.rpc-address.qianfeng.nn1</name><value>hadoop01:9000</value>
</property>
<property><name>dfs.namenode.rpc-address.qianfeng.nn2</name><value>hadoop02:9000</value>
</property>
<!--指定namenode的web通信地址-->
<property><name>dfs.namenode.http-address.qianfeng.nn1</name><value>hadoop01:50070</value>
</property>
<property><name>dfs.namenode.http-address.qianfeng.nn2</name><value>hadoop02:50070</value>
</property><!--指定共享日志目录, 这个就是帮主的小本本-->
<property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/sw</value>
</property><!--指定开启namenode失败自动转移,这个就是长老会根据生命水晶检测选举新帮主-->
<property><name>dfs.ha.automatic-failover.enabled</name><value>true</value>
</property><!--指定失败转移的类-->
<property><name>dfs.client.failover.proxy.provider.qianfeng</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property><!--防止namenode的脑裂-->
<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_rsa</value>
</property><!--指定超时时间设置-->
<property><name>dfs.ha.fencing.ssh.connect-timeout</name><value>30000</value>
</property><!--指定日志的本地目录-->
<property><name>dfs.journalnode.edits.dir</name><value>/home/hadata/journal1</value>
</property><!--是否开启webhdfs的-->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property><!--是否开启hdfs的权限-->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property></configuration>
2.1.3 mapred-site.xml
[root@hadoop01 hadoop-2.7.6]# mv ./etc/hadoop/mapred-site.xml.template ./etc/hadoop/mapred-site.xml
[root@hadoop01 hadoop-2.7.6]# vi ./etc/hadoop/mapred-site.xml<configuration>
<!--配置mapreduce的框架名称-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
<final>true</final>
</property><!--指定jobhistoryserver的内部通信地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop01:10020</value>
</property><!--指定jobhistoryserver的web地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop01:19888</value>
</property>
</configuration>
jobhistoryserver: 历史服务器,管理者可以通过历史服务器查看已经运行完成的Mapreduce作业记录。
2.1.4 yarn-site.xml
[root@hadoop01 hadoop-2.7.6]# vi ./etc/hadoop/yarn-site.xml<configuration><!--指定mapreduce的shuffle服务-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property><!--是否开启yarn的HA-->
<property><name>yarn.resourcemanager.ha.enabled</name><value>true</value>
</property>
<property><name>yarn.resourcemanager.cluster-id</name><value>sw_yarn</value>
</property>
<property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value>
</property>
<property><name>yarn.resourcemanager.hostname.rm1</name><value>hadoop01</value>
</property>
<property><name>yarn.resourcemanager.hostname.rm2</name><value>hadoop02</value>
</property>
<property><name>yarn.resourcemanager.webapp.address.rm1</name><value>hadoop01:8088</value>
</property>
<property><name>yarn.resourcemanager.webapp.address.rm2</name><value>hadoop02:8088</value>
</property><!--指定zookeeper的集群地址-->
<property><name>yarn.resourcemanager.zk-address</name><value>hadoop01:2181,hadoop02:2181,hadoop03:2181</value>
</property></configuration>
2.1.5 slaves
[root@hadoop01 hadoop-2.7.6]# vi ./etc/hadoop/slaveshadoop01
hadoop02
hadoop03
2.1.6 hadoop-env.sh
[root@hadoop01 hadoop-2.7.6]# vi ./etc/hadoop/hadoop-env.sh
#添加jdk路径
export JAVA_HOME=/usr/local/src/jdk1.8.0_152/
3. Hadoop HA 开启
3.1 先启动三台的Zookeeper
#节点1
[root@hadoop01 hadoop-2.7.6]# zkServer.sh start
#节点2
[root@hadoop02 hadoop-2.7.6]# zkServer.sh start
#节点3
[root@hadoop03 hadoop-2.7.6]# zkServer.sh start
3.2 启动 JournalNode
JournalNode : 作为独立进程进行相互通信。当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了。(即帮主会把本帮的事务写在小本本上,副帮主也能同时获取小本本的记录)
[root@hadoop01 hadoop-2.7.6]# hadoop-daemons.sh start journalnode
3.3 namenode格式化并启动
HDFS集群有两类节点以管理节点-工作节点模式运行,即一个namenode(管理节点)和多个datanode(工作节点)。
namenode(管理文件系统的命名空间):它维护着文件系统树及整棵树内的所有文件和目录。namenode以两个文件形式永久保存在本地磁盘上 ”命名空间镜像文件“ 和 ”编辑日志文件“。
[root@hadoop01 ~]# hdfs namenode -format
[root@hadoop01 ~]# hadoop-daemon.sh start namenode
3.4 另外的namenode节点同步
副帮主查看帮主在小本本写的”羞羞“事,并记录在自己这里
[root@hadoop02 ~]# hdfs namenode -bootstrapStandby
3.5 格式化zkfc
#选择其中一个namenode节点进行格式化zkfc
#前提QuorumPeerMain服务必须处于开启状态,客户端zkfc才能格式化成功
[root@hadoop01 ~]# hdfs zkfc -formatZK
3.6 启动集群
[root@hadoop01 ~]# start-all.sh
原来你是这样的Hadoop HA?相关推荐
- hadoop(ha)hbase(双master)安装
一.软件包准备 CentOS Linux release 7.2 Linux version 3.10.0-327.el7.x86_64 jdk-7u65-linux-x64.tar.gz zook ...
- Hadoop HA+Federation 高可用联邦模式搭建指南
为什么80%的码农都做不了架构师?>>> 简述 Hadoop 集群一共有4种部署模式,详见<Hadoop 生态圈介绍>. HA联邦模式解决了单纯HA模式的性能瓶颈( ...
- Hadoop技术之Hadoop HA 机制学习
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:温球良 导语 最近分享过一次关于Hadoop技术主题的演讲,由于接触时间不长,很多技术细节认识不够,也没讲清楚,作为一个技术人员,本 ...
- 图说Hadoop HA
1.hadoopHA 概览 2.hadoop HA 架构图 3.架构 4.运行流程图 5.组件 转载于:https://www.cnblogs.com/dreamofintellegent/p/579 ...
- Hadoop Ha集群配置
为什么要配置HDFS HA? 首先:HDFS集群中NameNode 如果存在单点故障.对于只有一个NameNode的集群,如果NameNode机器出现意外情况,将导致整个集群无法使用. 而影响HD ...
- Hadoop Ha (High avilable)配置
为什么要配置HDFS HA? 首先:HDFS集群中NameNode 如果存在单点故障.对于只有一个NameNode的集群,如果NameNode机器出现意外情况,将导致整个集群无法使用. 而影响HDFS ...
- 【云原生】Hadoop HA on k8s 环境部署
文章目录 一.概述 二.开始部署 1)添加 journalNode 编排 1.控制器Statefulset 2.service 2)修改配置 1.修改values.yaml 2.修改hadoop/te ...
- Hadoop HA集群配置问题记录
打算用3个节点搭建一个HA 集群,规划如下 HA集群规划 NameNode DataNode JournalNode node1 是 是 是 ndoe2 是 是 是 node3 是 是 hdf ...
- 基于Hadoop HA集群部署HBase HA集群(详细版)
文章目录 1.前言 2.ZooKeeper与Hadoop.HBase的关系 3.Hadoop与HBase的关系 4.架构资源规划 5.ZooKeeper集群设置 5.1 设置nn节点的zoo.conf ...
- 在Mac上安装Hadoop HA 高可
**Mac安装Hadoop HA高可 在Mac上安装Hadoop HA 高可用 配置环境: HA & Federation介绍 Hadoop 1.x与Hadoop 2.x Hadoop 2.x ...
最新文章
- Spring Boot 工程集成全局唯一ID生成器 Vesta
- AppDynamics把业务交易跟踪扩展到SAP环境
- Tech·Ed 2009
- 【树莓派学习笔记】八、两步安装VS Code (Visual Studio Code)
- oracle 表空间 碎片,Oracle表空间碎片整理
- Python 如何拆分数据集
- [USACO13MAR]Poker Hands【贪心】
- Win10操作系统下,如何打开DOS窗口(图文教程)
- 失败产品手册:一款影音娱乐平台的败局
- MSM8937-MSM8953 I2C 配置调试指南
- python用于爬虫的包是_Python 爬虫之抓包的理解
- 计算机无法继续安装程序,电脑提示nvidia安装程序无法继续 如何解决 - 驱动管家...
- Android 中Goolgle 相关服务的移植
- android-微信sdk
- android 6g 有必要吗,手机6g运存有必要吗
- 佳能Canon MF9200 Series 一体机驱动
- linux java定时关机,Linux定时关机
- 水果食用大全 -- 果品食疗 - 杏
- JAVA代码混淆器大全
- u盘中Trojan.Generic病毒