一、HDFS高可用

1、基础描述

在单点或者少数节点故障的情况下,集群还可以正常的提供服务,HDFS高可用机制可以通过配置Active/Standby两个NameNodes节点实现在集群中对NameNode的热备来消除单节点故障问题,如果单个节点出现故障,可通过该方式将NameNode快速切换到另外一个节点上。

2、机制详解

  • 基于两个NameNode做高可用,依赖共享Edits文件和Zookeeper集群;
  • 每个NameNode节点配置一个ZKfailover进程,负责监控所在NameNode节点状态;
  • NameNode与ZooKeeper集群维护一个持久会话;
  • 如果Active节点故障停机,ZooKeeper通知Standby状态的NameNode节点;
  • 在ZKfailover进程检测并确认故障节点无法工作后;
  • ZKfailover通知Standby状态的NameNode节点切换为Active状态继续服务;

ZooKeeper在大数据体系中非常重要,协调不同组件的工作,维护并传递数据,例如上述高可用下自动故障转移就依赖于ZooKeeper组件。

二、HDFS高可用

1、整体配置

2、配置JournalNode

创建目录

[root@hop01 opt]# mkdir hopHA

拷贝Hadoop目录

cp -r /opt/hadoop2.7/ /opt/hopHA/

配置core-site.xml

<configuration><!-- NameNode集群模式 --><property><name>fs.defaultFS</name><value>hdfs://mycluster</value></property><!-- 指定hadoop运行时产生文件的存储目录 --><property><name>hadoop.tmp.dir</name><value>/opt/hopHA/hadoop2.7/data/tmp</value></property>
</configuration>

配置hdfs-site.xml,添加内容如下

<!-- 分布式集群名称 -->
<property><name>dfs.nameservices</name><value>mycluster</value>
</property><!-- 集群中NameNode节点 -->
<property><name>dfs.ha.namenodes.mycluster</name><value>nn1,nn2</value>
</property><!-- NN1 RPC通信地址 -->
<property><name>dfs.namenode.rpc-address.mycluster.nn1</name><value>hop01:9000</value>
</property><!-- NN2 RPC通信地址 -->
<property><name>dfs.namenode.rpc-address.mycluster.nn2</name><value>hop02:9000</value>
</property><!-- NN1 Http通信地址 -->
<property><name>dfs.namenode.http-address.mycluster.nn1</name><value>hop01:50070</value>
</property><!-- NN2 Http通信地址 -->
<property><name>dfs.namenode.http-address.mycluster.nn2</name><value>hop02:50070</value>
</property><!-- 指定NameNode元数据在JournalNode上的存放位置 -->
<property><name>dfs.namenode.shared.edits.dir</name><value>qjournal://hop01:8485;hop02:8485;hop03:8485/mycluster</value>
</property><!-- 配置隔离机制,即同一时刻只能有一台服务器对外响应 -->
<property><name>dfs.ha.fencing.methods</name><value>sshfence</value>
</property><!-- 使用隔离机制时需要ssh无秘钥登录-->
<property><name>dfs.ha.fencing.ssh.private-key-files</name><value>/root/.ssh/id_rsa</value>
</property><!-- 声明journalnode服务器存储目录-->
<property><name>dfs.journalnode.edits.dir</name><value>/opt/hopHA/hadoop2.7/data/jn</value>
</property><!-- 关闭权限检查-->
<property><name>dfs.permissions.enable</name><value>false</value>
</property><!-- 访问代理类失败自动切换实现方式-->
<property><name>dfs.client.failover.proxy.provider.mycluster</name><value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

依次启动journalnode服务

[root@hop01 hadoop2.7]# pwd
/opt/hopHA/hadoop2.7
[root@hop01 hadoop2.7]# sbin/hadoop-daemon.sh start journalnode

删除hopHA下数据

[root@hop01 hadoop2.7]# rm -rf data/ logs/

NN1格式化并启动NameNode

[root@hop01 hadoop2.7]# pwd
/opt/hopHA/hadoop2.7
bin/hdfs namenode -format
sbin/hadoop-daemon.sh start namenode

NN2同步NN1数据

[root@hop02 hadoop2.7]# bin/hdfs namenode -bootstrapStandby

NN2启动NameNode

[root@hop02 hadoop2.7]# sbin/hadoop-daemon.sh start namenode

查看当前状态

在NN1上启动全部DataNode

[root@hop01 hadoop2.7]# sbin/hadoop-daemons.sh start datanode

NN1切换为Active状态

[root@hop01 hadoop2.7]# bin/hdfs haadmin -transitionToActive nn1
[root@hop01 hadoop2.7]# bin/hdfs haadmin -getServiceState nn1
active

3、故障转移配置

配置hdfs-site.xml,新增内容如下,同步集群

<property><name>dfs.ha.automatic-failover.enabled</name><value>true</value>
</property>

配置core-site.xml,新增内容如下,同步集群

<property><name>ha.zookeeper.quorum</name><value>hop01:2181,hop02:2181,hop03:2181</value>
</property>

关闭全部HDFS服务

[root@hop01 hadoop2.7]# sbin/stop-dfs.sh

启动Zookeeper集群

/opt/zookeeper3.4/bin/zkServer.sh start

hop01初始化HA在Zookeeper中状态

[root@hop01 hadoop2.7]# bin/hdfs zkfc -formatZK

hop01启动HDFS服务

[root@hop01 hadoop2.7]# sbin/start-dfs.sh

NameNode节点启动ZKFailover

这里hop01和hop02先启动的服务状态就是Active,这里先启动hop02。

[hadoop2.7]# sbin/hadoop-daemon.sh start zkfc

结束hop02的NameNode进程

kill -9 14422

等待一下查看hop01状态

[root@hop01 hadoop2.7]# bin/hdfs haadmin -getServiceState nn1
active

三、YARN高可用

1、基础描述

基本流程和思路与HDFS机制类似,依赖Zookeeper集群,当Active节点故障时,Standby节点会切换为Active状态持续服务。

2、配置详解

环境同样基于hop01和hop02来演示。

配置yarn-site.xml,同步集群下服务

<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><!--启用HA机制--><property><name>yarn.resourcemanager.ha.enabled</name><value>true</value></property><!--声明Resourcemanager服务--><property><name>yarn.resourcemanager.cluster-id</name><value>cluster-yarn01</value></property><property><name>yarn.resourcemanager.ha.rm-ids</name><value>rm1,rm2</value></property><property><name>yarn.resourcemanager.hostname.rm1</name><value>hop01</value></property><property><name>yarn.resourcemanager.hostname.rm2</name><value>hop02</value></property><!--Zookeeper集群的地址--> <property><name>yarn.resourcemanager.zk-address</name><value>hop01:2181,hop02:2181,hop03:2181</value></property><!--启用自动恢复机制--> <property><name>yarn.resourcemanager.recovery.enabled</name><value>true</value></property><!--指定状态存储Zookeeper集群--> <property><name>yarn.resourcemanager.store.class</name>     <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value></property></configuration>

重启journalnode节点

sbin/hadoop-daemon.sh start journalnode

在NN1服务格式化并启动

[root@hop01 hadoop2.7]# bin/hdfs namenode -format
[root@hop01 hadoop2.7]# sbin/hadoop-daemon.sh start namenode

NN2上同步NN1元数据

[root@hop02 hadoop2.7]# bin/hdfs namenode -bootstrapStandby

启动集群下DataNode

[root@hop01 hadoop2.7]# sbin/hadoop-daemons.sh start datanode

NN1设置为Active状态

先启动hop01即可,然后启动hop02。

[root@hop01 hadoop2.7]# sbin/hadoop-daemon.sh start zkfc

hop01启动yarn

[root@hop01 hadoop2.7]# sbin/start-yarn.sh

hop02启动ResourceManager

[root@hop02 hadoop2.7]# sbin/yarn-daemon.sh start resourcemanager

查看状态

[root@hop01 hadoop2.7]# bin/yarn rmadmin -getServiceState rm1


hadoop namenode启动不了_Hadoop框架:HDFS高可用环境配置相关推荐

  1. Hadoop框架:HDFS高可用环境配置

    本文源码:GitHub·点这里 || GitEE·点这里 一.HDFS高可用 1.基础描述 在单点或者少数节点故障的情况下,集群还可以正常的提供服务,HDFS高可用机制可以通过配置Active/Sta ...

  2. HDFS高可用集群中NameNode无法启动——解决方案

    我是在刚搭建好HDFS高可用后,发现存在一台NamNode节点无法启动,但该节点上的DataNode仍可正常运行.其它的NameNode在正常运行. 问题可能是由多个NameNode上的元数据信息不一 ...

  3. Hadoop namenode启动瓶颈分析

    转载:http://blog.csdn.net/AE86_FC/archive/2010/08/26/5842020.aspx NameNode启动过程详细剖析 NameNode中几个关键的数据结构 ...

  4. hadoop namenode启动不了_集群版hadoop安装,写给大忙人看的

    导语 如果之前的单机版hadoop环境安装满足不了你,集群版hadoop一定合你胃口,轻松入手. 目录 集群规划 前置条件 配置免密登录 3.1 生成密匙 3.2 免密登录 3.3 验证免密登录 集群 ...

  5. 记一次hadoop namenode 启动失败问题及解决过程(启动几秒钟后又挂了)

    这是个小问题,但如果新手接触的话可能会花费一番时间才能解决,甚至会不知所措.在此重点记录的还是解决问题的方式. 问题描述 在自己虚拟机上新安装了hadoop.在做单节点启动测试时发现namenode启 ...

  6. Hadoop详解(三):HDFS完全分布式环境搭建

    1. 前言 本文搭建了一个由三节点(master.slave1.slave2)构成的Hadoop完全分布式集群,并通过Hadoop分布式计算的一个示例测试集群的正确性. 2. 基础集群的搭建 目的:获 ...

  7. HDFS高可用配置及其高可用集群搭建

    高可用 高可用背景 单点故障.高可用 实现高可用 主备集群 Active.Standby 可用性评判标准- x个9 HA系统设置核心问题 1.脑裂问题 2.数据同步问题 HDFS NameNode单点 ...

  8. Hadoop(二): YARN(资源管理器 RM)、HBase高可用集群搭建

    目录 一.Hadoop的高可用原理概述 1.1 原理概述 1.2 实验环境要求 二.高可用集群的搭建 2.1 搭建Zookeeper 2.2 搭建HA的高可用 2.3 YARN(资源管理器 RM)高可 ...

  9. 适合入门hadoop 2.7.7的集群环境搭建高可用版本配置(保姆版)

    需要的安装包: 1.jdk压缩包 2.hadoop压缩包 百度云盘链接 开始搭建hadoop集群 1 集群规划 安装VMware,使用三台虚拟机进行集群搭建,下面是每台虚拟机的规划: 2 网络配置 2 ...

最新文章

  1. 使用python收取IMAP邮件即fox邮件且设置为已读
  2. 国内 Java 开发者必备的两个装备,你配置上了么?
  3. P2480 [SDOI2010]古代猪文
  4. 新锐商务首选!HP EliteBook 745 G5图评
  5. Leetcode 之Evaluate Reverse Polish Notation(41)
  6. jQuery EasyUI使用教程之创建标签页
  7. firebug for IE6+, Firefox, Opera, Safari and Chrome
  8. hubbledotnet 查询提示:已添加了具有相同键的项
  9. 虚拟机中的CentOS 7设置固定IP连接最理想的配置
  10. Angular 小试牛刀[2]:CI(travie+firebase)
  11. 解决SpringMVC中文乱码问题 -----这是服务器返回参数到前端中文乱码
  12. python有道-Python调用有道词典翻译
  13. Grep 用法和正则表达式(一)
  14. 两个用于win7任务栏显示进度的dll
  15. 整理:OJ系统及ACM测试题库大全
  16. MSDP技术原理与实验
  17. c# ASCII转换,数字转字母,字母转数字
  18. 交住房公积金的好处及作用
  19. #2阴阳师首页模块模拟
  20. 独立产品灵感周刊 DecoHack #022 - 截图应用如何在一个月收入 8000 美元

热门文章

  1. 数据集干货:一文读懂Mapsidejoin
  2. 洽洽三只松鼠良品铺子,到底谁能笑傲“后坚果时代”?
  3. mysql in 很大 优化_【转】mysql in语句优化
  4. 机器学习算法_机器学习算法中分类知识总结!
  5. mysql查询语句在哪里编写_mysql编写语句:更新查询
  6. ctf(pwn)栈溢出介绍
  7. Python scrapy 命令行传参 以及发送post请求payload参数
  8. Python可变序列中的一些坑
  9. python xlsxwriter使用方法汇总
  10. Python 中,字符串连接效率最高的方式是?一定出乎你的意料