Hadoop大数据平台(下)hdfs高可用、Yarn高可用、hbase高可用

目录

一、Hadoop高可用

      1、zoomkeeper集群部署

      2、hdfs高可用 

二、Yarn高可用

      1、RM高可用部署

      2、RM高可用测试  

三、Hbase高可用

      1、Hbase 分布式部署

      2、测试

一、Hadoop高可用

在典型的 HA 集群中,通常有两台不同的机器充当 NN。在任何时间,只有一台机器处于 Active 状态;另一台机器是处于 Standby 状态。Active NN 负责集群中所有客户端的操作;而 Standby NN 主要用于备用,它主要维持足够的状态,如果必要,可以提供快速的故障恢复。
为了让 Standby NN 的状态和 Active NN 保持同步,即元数据保持一致,它们都将会和JournalNodes 守护进程通信。当 Active NN 执行任何有关命名空间的修改,它需要持久化到一半以上的 JournalNodes 上(通过 edits log 持久化存储),而 Standby NN 负责观察 edits log的变化,它能够读取从 JNs 中读取 edits 信息,并更新其内部的命名空间。一旦 Active NN 出现故障,Standby NN 将会保证从 JNs 中读出了全部的 Edits,然后切换成 Active 状态。Standby NN 读取全部的 edits 可确保发生故障转移之前,是和 Active NN 拥有完全同步的命名空间状态。

为了提供快速的故障恢复,Standby NN 也需要保存集群中各个文件块的存储位置。为了实现这个,集群中所有的 Database 将配置好 Active NN 和 Standby NN 的位置,并向它们发送块文件所在的位置及心跳,如下图所示: 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16
在任何时候,集群中只有一个NN处于Active 状态是极其重要的。否则,在两个Active NN
的状态下 NameSpace 状态将会出现分歧,这将会导致数据的丢失及其它不正确的结果。为
了保证这种情况不会发生,在任何时间,JNs 只允许一个 NN 充当 writer。在故障恢复期
间,将要变成 Active 状态的 NN 将取得 writer 的角色,并阻止另外一个 NN 继续处于 Active
状态。

两个NameNode为了数据同步,会通过一组称作JournalNodes的独立进程进行相互通信。当active状态的NameNode的命名空间有任何修改时,会告知大部分的JournalNodes进程。standby状态的NameNode有能力读取JNs中的变更信息,并且一直监控edit log的变化,把变化应用于自己的命名空间。standby可以确保在集群出错时,命名空间状态已经完全同步了 

1、zoomkeeper集群部署

由于一个HDFS集群由一个NameNode节点和多个DataNode节点组成,一旦NameNode节点宕机,那么HDFS将不能进行文件的上传与下载。
Hadoop依赖Zookeeper实现HDFS集群的高可用,由状态为Active的NameNode节点对外提供服务,而状态为StandBy的NameNode节点则负责数据的同步,一旦状态为Active的NameNode节点宕机,则状态为StandBy的NameNode节点将会切换为Active状态对外提供服务。

需要五台虚拟机:两个主节点做高可用server13、server15(2G内存),其余是DN(如果电脑内存不足 1.5G内存也可以)
真实主机再开启一台虚拟机server5

 

server13停止所有运行的节点watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

所有节点删除/tmp目录下的所有数据,清理hadoop watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

server15安装nfswatermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

server15添加hadoop用户,挂载nfs中server13分享的/home/hadoop目录到本地的/home/hadoop目录,然后切换到hadoop用户进行测试 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

server13查看对server15免密成功watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

真实主机将zookeeper包发送到server11的/home/hadoop目录下watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

解压zookeeper安装包watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

切换到zookeeper目录   进入conf目录下   复制zoo_sample.cfg文件为zoo.cfg   

因为是nfs文件系统所以其他节点的内容也同步修改了watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

在/tmp/下创建zookeeper目录 编辑zoo.cfg文件watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

指定数据目录为/tmp/zookeeper 指定server11在zk集群中节点编号为1  依次类推server12的编号为2  server14的编号为3

2888端口用来同步数据    3888端口用来选举leaderwatermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

server11将自己的编号1输入到zookeeper/myid内watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

server12和14同样创建zookeeper目录并将自己的编号输入到zookeeper/myid内watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

server11开启zkServer watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

server11查看自己的zk集群状态,显示follower 

jps查看开启了QuorumPeerMain进程

QuorumPeerMain是zookeeper集群的启动类,用来加载配置启动QuorumPeer线程的。Quorum是定额的意思,Peer是对等的意思。Quorum表示zookeeper启动后,服务数量就确定了。zookeeper是基于paxos算法实现的,paxos是一个唯一的分布式集群一致性算法,在zookeeper中,被演绎为集群分布式协调可持续服务。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

同样server12 14开启zkServer 并查看自己的ZK集群状态 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

2、hdfs高可用 

server13编辑core-site.xml文件,指定hdfs的NN为master,指定zookeeper集群主机的地址和端口 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

[hadoop@server13 hadoop]$ cat core-site.xml
<configuration>
<!-- 指定 hdfs 的 namenode 为 masters (名称可自定义)-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://masters</value>  
    </property>

<!-- 指定 zookeeper 集群主机地址 -->
<property>
<name>ha.zookeeper.quorum</name>
<value>172.25.15.11:2181,172.25.15.12:2181,172.25.15.14:2181</value>
</property>

 编辑hdfs-site.xmlwatermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

[hadoop@server13 hadoop]$ cat hdfs-site.xml
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

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

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>

<!-- 指定 hdfs 的 nameservices 为 masters,和 core-site.xml 文件中的设置保持一致 -->
<property>
<name>dfs.nameservices</name>
<value>masters</value>
</property>


<!-- masters 下面有两个 namenode 节点,分别是 h1 和 h2 (名称可自定义)-->
<property>
<name>dfs.ha.namenodes.masters</name>
<value>h1,h2</value>
</property>


<!-- 指定 h1 节点的 rpc 通信地址 -->
<property>
<name>dfs.namenode.rpc-address.masters.h1</name>
<value>172.25.15.13:9000</value>
</property>


<!-- 指定 h1 节点的 http 通信地址 -->
<property>
<name>dfs.namenode.http-address.masters.h1</name>
<value>172.25.15.13:9870</value>
</property>


<!-- 指定 h2 节点的 rpc 通信地址 -->
<property>
<name>dfs.namenode.rpc-address.masters.h2</name>
<value>172.25.15.15:9000</value>
</property>


<!-- 指定 h2 节点的 http 通信地址 -->
<property>
<name>dfs.namenode.http-address.masters.h2</name>
<value>172.25.15.15:9870</value>
</property>


<!-- 指定 NameNode 元数据在 JournalNode 上的存放位置 -->
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://172.25.15.11:8485;172.25.15.12:8485;172.25.15.14:8485/masters</value>
</property>


<!-- 指定 JournalNode 在本地磁盘存放数据的位置 -->
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/tmp/journaldata</value>
</property>


<!-- 开启 NameNode 失败自动切换 -->
<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>


<!-- 配置失败自动切换实现方式 -->
<property>
<name>dfs.client.failover.proxy.provider.masters</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>


<!-- 配置隔离机制方法,每个机制占用一行-->
<property>
<name>dfs.ha.fencing.methods</name>
<value>
sshfence
shell(/bin/true)
</value>
</property>


<!-- 使用 sshfence 隔离机制时需要 ssh 免密码 -->
<property>
<name>dfs.ha.fencing.ssh.private-key-files</name>
<value>/home/hadoop/.ssh/id_rsa</value>
</property>


<!-- 配置 sshfence 隔离机制超时时间 -->
<property>
<name>dfs.ha.fencing.ssh.connect-timeout</name>
<value>30000</value>
</property>

</configuration>
在三个 DN 上依次启动 journalnode(第一次启动 hdfs 必须先启动 journalnode)watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

jps查看journalnode启动成功watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

格式化 HDFS 集群watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

将/tmp/hadoop-hadoop里的数据拷贝到server15的/tmp目录下,因为NN数据默认存放在/tmp目录下 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

在server13上格式化 zookeeper (只需在 h1 上执行即可) watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

server11作为查询窗口连接zookeeperwatermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

可以正常访问文件系统 查看当前美誉开启NNwatermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

server13启动 hdfs 集群(只需在 h1 上执行即可) watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

启动完成后jps可以看到DFSZKFailoverController开启watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

server15查看DFSZKFailoverController开启
watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

server11刚才已经连接了zookeeper,查看NN主备,可以看到server13是主namenode watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

在server13的hadoop管理页面也可以看到server13状态为活跃watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

server15 的状态为备用watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

 server13新建/user/hadoop/input虚拟目录,上传/etc/hadoop/*.xml文件至input目录watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

查看input目录下上传的文件watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

登录server13的hadoop管理页面查看,可以正常访问/user/hadoop/input里的内容 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

而在server5的hadoop管理页面就无法查看目录内容 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

3、测试故障自动切换 

杀掉 server13 主机的 namenode 进程后依然可以访问watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

server11查看NN主备,此时可以看到server15是主namenodewatermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

浏览器访问server1的hadoop主页,无法访问

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

登录server15的hadoop管理页面查看 此时server15 转为 active 状态 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

重新启动server13 上的 namenodewatermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

server13的hadoop管理页面现在可以正常访问 显示状态为备用 standbywatermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

server11再查看NN主备,可以看到server15仍是主namenodewatermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

二、 Yarn高可用

1、RM高可用部署

由于一个Yarn集群由一个ResourceManager节点和多个NodeManager节点组成,一旦ResourceManager节点宕机,那么YARN集群将不能进行资源的调度。

编辑 mapred-site.xml 文件watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

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

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    <property>
        <name>mapreduce.application.classpath</name>
        <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration><?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

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

<configuration>
<!-- 指定 yarn 为 MapReduce 的框架 -->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
    
<property>
        <name>mapreduce.application.classpath</name>
     <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*:$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
    </property>
</configuration>

编辑 yarn-site.xml 文件watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

[hadoop@server13 hadoop]$ cat yarn-site.xml
<?xml version="1.0"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->
<configuration>
<!-- 配置可以在 nodemanager 上运行 mapreduce 程序 -->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

<!-- 指定环境变量 -->
<property>
        <name>yarn.nodemanager.env-whitelist</name>
        <value>JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAPRED_HOME</value>
    </property>

<!-- 激活 RM 高可用 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>


<!-- 指定 RM 的集群 id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>RM_CLUSTER</value>
</property>


<!-- 定义 RM 的节点-->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>


<!-- 指定 RM1 的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>172.25.15.13</value>
</property>


<!-- 指定 RM2 的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>172.25.15.15</value>
</property>


<!-- 激活 RM 自动恢复 -->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>


<!-- 配置 RM 状态信息存储方式,有 MemStore 和 ZKStore-->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>


<!-- 配置为 zookeeper 存储时,指定 zookeeper 集群的地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>172.25.15.11:2181,172.25.15.12:2181,172.25.15.14:2181</value>
</property>

</configuration>

server13启动yarn服务,可以看到ResourceManager是server13和server15watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

在server13和server15上均可以看到ResourceManager进程watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

server11 12 14上均运行NodeManager进程watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

server11与zookeeper保持着连接,查看主备,可以看到rm1是主watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

 浏览器访问server13的yarn资源管理页面,可以看到状态是activwatermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

浏览器访问server15的yarn资源管理页面,查看状态是standby备用 

2、RM高可用测试  

server13查看RM进程的id,kill -9 杀死该进程watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

server11查看主备,可以看到rm2是主 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

 此时浏览器访问server13失败watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

浏览器访问server5的yarn资源管理页面,查看状态,现在变成了active活跃 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

server13再重新开启RM进程 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

server11查看主备,可以看到rm2仍然是主 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

三、Hbase高可用 

HBase是一个分布式的、面向列的开源数据库。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。HBase是一个分布式的、面向列的开源数据库。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群。

1、Hbase 分布式部署

真实主机将hbase包发送到server13的/root下 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

主机修改文件权限   移动到hadoop用户下  watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

切换到hadoop用户下解压watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

进入hbase目录  再进入conf目录

编辑hbase-env.sh文件watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

编辑hbase-site.xml文件watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

[hadoop@server13 conf]$ cat hbase-site.xml
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
/**
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
-->
<configuration>

<!-- 指定 region server 的共享目录,用来持久化 HBase。这里指定的 HDFS 地址
是要跟 core-site.xml 里面的 fs.defaultFS 的 HDFS 的 IP 地址或者域名、端口必须一致。 -->
<property>
<name>hbase.rootdir</name>
<value>hdfs://masters/hbase</value>
</property>


<!-- 启用 hbase 分布式模式 -->
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>



<!-- Zookeeper 集群的地址列表,用逗号分割。默认是 localhost,是给伪分布式用
的。要修改才能在完全分布式的情况下使用。 -->
<property>
<name>hbase.zookeeper.quorum</name>
<value>172.25.15.11,172.25.15.12,172.25.15.14</value>
</property>


<!-- 指定 hbase 的 master -->
<property>
<name>hbase.master</name>
<value>h1</value>
</property>

</configuration>

编辑regionservers文件,输入zk集群的节点ip 跟workers节点ip一致watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

启动 hbase   主节点运行watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

jps查看可以看到HMaster进程watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

server11、server12和server14可以看到本地运行HRegionServer进程作为集群节点watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

server15作为备用节点运行hbase,jps查看可以看到HMaster进程watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

HBase Master 默认端口时 16000,还有个 web 界面默认在 Master 的 16010 端口
上,HBase RegionServers 会默认绑定 16020 端口,在端口 16030 上有一个展示
信息的界面。

浏览器访问server13的16010端口进入hbase管理页面,可以看到身份是Master,还可以看到集群节点server11、12、14和备用节点server15watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16 

2、测试

 server13进入hbase shellwatermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

创建test表  向test中插入数据 查看test内容watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

在主节点上 kill 掉 HMaster 进程后查看故障切换 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

在shell中可以查看test表 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

 但浏览器访问server13失败watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

浏览器访问server15的16010端口进入hbase管理页面,可以看到现在server15是Master,备用主节点无内容 watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

server13重新启动hbase watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

浏览器访问server13:16010端口  可以看到server13为备用watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16

浏览器访问server15的16010端口进入hbase管理页面,可以看到server15仍然是Master,备用主节点为server13 

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAbHk2NjA0MDI=,size_20,color_FFFFFF,t_70,g_se,x_16


版权声明:本文为ly660402原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。