HADOOP HA部署

本次部署haddoop集群三台hostname:HBASE01 HBASE02 HBASE03

192.168.240.129 HBASE01
192.168.240.130 HBASE02
192.168.240.131 HBASE03

  将HBASE01 HBASE02作为namenode节点,HBASE01、HBASE02、HBASE03作为datanode节点

一、 namenode ha配置

1.hdfs-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
  <property>
     <name>dfs.name.dir</name>
     <value>/data/hadoop/hdfs/namenode</value>
  </property>
  <property>
     <name>dfs.data.dir</name>
     <value>/data/hadoop/hdfs/datanode</value>
  </property>
  <property>
     <name>dfs.replication</name>
     <value>1</value>
  </property>
  <property>
     <name>dfs.block.size</name>
     <value>134217728</value>
   </property>
   <property>
     <name>dfs.datanode.max.xcievers</name>
     <value>4096</value>
   </property>
   <property>
     <name>dfs.support.append</name>
     <value>true</value>
   </property>
   <property>
     <name>dfs.hosts</name>
     <value>/usr/local/hadoop/etc/hadoop/dfs.hosts</value>
   </property>
   <property>
     <name>dfs.hosts.exclude</name>
     <value>/usr/local/hadoop/etc/hadoop/dfs.hosts.exclude</value>
   </property>
<!-- HA hadoop2  -->
<!-- hdfs nn的逻辑名称 -->
   <property>
     <name>dfs.nameservices</name>
     <value>ns1</value>
   </property>
<!-- 给定服务逻辑名称ns1的节点列表,如果有第二个则加nn2,逗号分隔-->
   <property>
     <name>dfs.ha.namenodes.ns1</name>
     <value>nn1,nn2</value>
   </property>
<!-- #ns1中nn1节点对外服务的RPC地址-->
   <property>
     <name>dfs.namenode.rpc-address.ns1.nn1</name>
     <value>HBASE01:9000</value>
   </property>
<!-- ns1中nn1节点对外服务的http地址-->
   <property>
     <name>dfs.namenode.http-address.ns1.nn1</name>
     <value>HBASE01:50070</value>
   </property>
<!-- #ns1中nn2节点对外服务的RPC地址-->
   <property>
     <name>dfs.namenode.rpc-address.ns1.nn2</name>
     <value>HBASE02:9000</value>
   </property>
<!-- ns1中nn2节点对外服务的http地址-->
   <property>
     <name>dfs.namenode.http-address.ns1.nn2</name>
     <value>HBASE02:50070</value>
   </property>
<!-- 如果有多台,做namenode备份
   <property>
     <name>dfs.namenode.rpc-address.ns1.nn3</name>
     <value>域名2:9000</value>
   </property>
   <property>
     <name>dfs.namenode.http-address.ns1.nn3</name>
     <value>域名2:50070</value>
   </property>
-->
<!--

设置一组journalNode的URL日志,active ns将editlog写入这些JournalNode

HBASE01:8485;HBASE02:8485/ns1-->
  <property>
     <name>dfs.namenode.shared.edits.dir</name>
     <value>qjournal://HBASE01:8485;HBASE02:8485/ns1</value>
  </property>
<!-- 声明journalnode服务器存储目录-->
  <property>
     <name>dfs.journalnode.edits.dir</name>
     <value>/data/hadoop/hdfs/journal</value>
  </property>
<!-- 访问代理类:client,mycluster,active配置失败自动切换实现方式-->
  <property>
     <name>dfs.client.failover.proxy.provider.ns1</name>
     <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</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>
  <property>
     <name>dfs.ha.automatic-failover.enabled</name>
     <value>true</value>
  </property>
</configuration>

  

2.core-site.xml

<?xml version="1.0"?>

<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<!-- Put site-specific property overrides in this file. -->

<configuration>
  <property>
     <name>io.file.buffer.size</name>
     <value>131072</value>
  </property>
<!-- ha hadoop2
 -->
#zk服务节点多个域名用,分隔,域名1:2181,域名2:2181...
  <property>
     <name>ha.zookeeper.quorum</name>
     <value>HBASE01:2181,HBASE02:2181,HBASE03:2181</value>
  </property>

#逻辑服务名,需与hdfs-site.xml中的dfs.nameservices一致
  <property>
     <name>fs.defaultFS</name>
     <value>hdfs://HBASE01:9000</value>
  </property>
  <property>
     <name>hadoop.security.group.mapping</name>
     <value>org.apache.hadoop.security.ShellBasedUnixGroupsMapping</value>
  </property>
  <property>
     <name>dfs.permissions</name>
     <value>false</value>
  </property>
</configuration>

  

3.slaves

配置datanode位置:

  HBASE01
  HBASE02
  HBASE03

  

二、 namenode ha启动

  1.启动三台服务器的zookeeper

#./zkServer.sh start

  2.启动HBASE01和HBASE02的jounalnode服务

# sbin/hadoop-daemon.sh start journalnode

   

 3.分别启动HBASE01和HBASE02的namenode服务

  ①先格式化HBASE01的namenode

# bin/hdfs namenode -format

  ②  启动HBASE01的namenode

#sbin/hadoop-daemon.sh start namenode

  ③  HBASE02同步HBASE01的namenode

#bin/hdfs namenode –bootstrapStandby

  ④  启动HBASE02的namenode

# sbin/hadoop-daemon.sh start namenode 

  4.namenode都启动完成后,这时两台的namenode都是 standby模式,需要切换其中一台为active模式

  ①将HBASE01的namenode切换成active,需强制切换

# bin/hdfs haadmin -transitionToActive --forcemanual nn1

  ②查看namenode模式

  # bin/hdfs haadmin -getServiceState nn1

  # bin/hdfs haadmin -getServiceState nn2

  5.zookeeper配置故障自动切换namenode

  # bin/hdfs zkfc –formatZK

  查看zookeeper中节点,多了hadoop-ha

  

  6.启动集群

  # sbin/start-dfs.sh

  ①HBASE01

  

  ②HBASE02

  ③HBASE03

  

三、 故障测试

1.kill掉HBASE01的namenode

    # kill 16644

2.查看namenode状态

# bin/hdfs haadmin -getServiceState nn1

# bin/hdfs haadmin -getServiceState nn2

  

  这时nn1连接不上,nn2为active状态

3.重新启动HBASE01的namenode

# bin/hdfs namenode –bootstrapStandby

# sbin/hadoop-daemon.sh start namenode

可以先进行下namenode的同步,再启动,也可以直接启动

4、查看HBASE01,HBASE02 namenode状态

5、kill掉HBASE02的namenode,同样 HBASE01的namenode也能转换成active状态

HADOOP NAMENODE HA 部署完成 !

原文地址:https://www.cnblogs.com/hyh123/p/12268455.html

时间: 2024-12-25 02:32:58

HADOOP HA部署的相关文章

Hadoop HA搭建

hadoop HA部署 说明:    1.在hadoop2.0中通常由两个NameNode组成,一个处于active状态,另一个处于standby状态.Active NameNode对外提供服务,而Standby NameNode则不对外提供服务,仅同步active namenode的状态,      以便能够在它失败时快速进行切换.hadoop2.0官方提供了两种HDFS HA的解决方案,一种是NFS,另一种是QJM.这里我们使用简单的QJM.在该方案中,主备NameNode之间通过一组Jou

hadoop HA 详解

NameNode 高可用整体架构概述 在 Hadoop 1.0 时代,Hadoop 的两大核心组件 HDFS NameNode 和 JobTracker 都存在着单点问题,这其中以 NameNode 的单点问题尤为严重.因为 NameNode 保存了整个 HDFS 的元数据信息,一旦 NameNode 挂掉,整个 HDFS 就无法访问,同时 Hadoop 生态系统中依赖于 HDFS 的各个组件,包括 MapReduce.Hive.Pig 以及 HBase 等也都无法正常工作,并且重新启动 Nam

Spark 在Hadoop HA下配置HistoryServer问题

我的Spark机群是部署在Yarn上的,因为之前Yarn的部署只是简单的完全分布式,但是后来升级到HA模式,一个主NN,一个备NN,那么Spark HistoryServer的配置也需要相应的做修改,因为不做修改会报错 Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native

Hadoop自动化部署脚本

摘自:http://www.wangsenfeng.com/articles/2016/10/27/1477556261953.html 1 概述 最近自己写了一个Hadoop自动化部署脚本,包括Hadoop集群自动化部署脚本和Hadoop增加单节点自动化部署脚本.需要快速部署Hadoop集群的童鞋可以使用该脚本.这些脚本我在用5台虚拟机进行了测试,如果在使用中还有bug,欢迎指出.本文主要介绍Hadoop集群自动化部署脚本,安装的Hadoop版本为2.6.0. 2 依赖 安装Hadoop2.6

hadoop HA + HBase HA搭建:

hadoop HA搭建参考:https://www.cnblogs.com/NGames/p/11083640.html (本节:用不到YARN 所以可以不用考虑部署YARN部分) Hadoop 使用分 布式文件系统,用于存储大数据,并使用 MapReduce 来处理.Hadoop 擅长于存储各种格式 的庞大的数据,任意的格式甚至非结构化的处理. Hadoop 的限制: Hadoop 只能执行批量处理,并且只以顺序方式访问数据.这意味着必须搜索整个数据集, 即使是最简单的搜索工作.这一点上,一个

Hadoop HA HDFS启动错误之org.apache.hadoop.ipc.Client: Retrying connect to server问题解决

近日,在搭建Hadoop HA QJM集群的时候,出现一个问题,如本文标题. 网上有很多HA的博文,其实比较好的博文就是官方文档,讲的已经非常详细.所以,HA的搭建这里不再赘述. 本文就想给出一篇org.apache.hadoop.ipc.Client: Retrying connect to server错误的解决的方法. 因为在搜索引擎中输入了错误问题,没有找到一篇解决问题的.这里写一篇备忘,也可以给出现同样问题的朋友一个提示. 一.问题描述 HA按照规划配置好,启动后,NameNode不能

使用Nginx+Lua代理Hadoop HA

一.Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个Master组件提供服务,其中正在使用的组件称为Active,另一个作为备份称为Standby,例如HDFS的NameNode.YARN 的ResourceManager.HDFS的web页面只有通过Active的NameNode才能正常访问,同样地,YARN的web页面也只有通过Active的ResouceManager才能正常访问. (1) HDFS HA的Web访问 正常使用Nginx的proxy_pass代理单

图说Hadoop HA

1.hadoopHA 概览 2.hadoop HA 架构图 3.架构 4.运行流程图 5.组件

Hadoop分布式部署

准备硬件环境 此次用到三台计算机,三台计算机的系统都是Linux,并且以安装好JAVA.IP地址和角色为: namenode:192.168.0.1 datanode:192.168.0.2 datanode:192.168.0.3 三台计算机之间能够正确解析彼此.因此需要修改/etc/hosts文件,主节点上需要将所有节点的IP地址以及相对应的主机名添加到文件中.作datanode的节点则只需将自己以及主节点的IP地址以及相对应的主机名添加到文件中即可. 安装Hadoop 由于Hadoop要求