HMaster没有单点问题,HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行。

所以这里要配置HBase高可用的话,只需要启动两个HMaster,让Zookeeper自己去选择一个Master Acitve。

HBase配置:

在$HBASE_HOME/conf目录下

1.hbase-site.xml 

export HBASE_OPTS="$HBASE_OPTS -XX:+HeapDumpOnOutOfMemoryError -XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode"
export JAVA_HOME=/usr/java/jdk1.7.0_60 
export HBASE_MANAGES_ZK=false
export HADOOP_HOME=/data/hadoop-2.6.0
export HBASE_LOG_DIR=/data/hadoop/hbase/logs

一个分布式运行的Hbase依赖一个zookeeper集群。所有的节点和客户端都必须能够访问zookeeper。默认的情况下Hbase会管理一个zookeep集群。这个集群会随着Hbase的启动而启动。当然,你也可以自己管理一个zookeeper集群,但需要配置Hbase。你需要修改HBASE_MANAGES_ZK 来切换。这个值默认是true的,作用是让Hbase启动的时候同时也启动zookeeper.

让Hbase使用一个现有的不被Hbase托管的Zookeep集群,需要设置 HBASE_MANAGES_ZK 属性为 false

2.hbase-site.xml

<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://appcluster/hbase</value>
<description>The directory shared by RegionServers.</description>
</property> <property>
<name>hbase.master</name>
<value>60000</value><!--这里注意了,只需端口即可,不必再写主机名称了!-->
</property> <property>
<name>hbase.zookeeper.quorum</name>
<value>hadoop001,hadoop002,hadoop003</value>
</property> <property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2181</value>
</property> <property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/data/hadoop/zookeeper</value>
</property> <property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property> <property>
<name>hbase.tmp.dir</name>
<value>/data/hadoop/hbase/tmp</value>
</property>
</configuration>

3.regionservers

添加regionserver的hostname

HBase启动:

在hadoop001上输入启动命令

start-hbase.sh

jps可见:

master (因为之前启动了Hadoop HA,所以会看到很多进程)

23703 NameNode
23968 ResourceManager
24132 DFSZKFailoverController
23813 DataNode
24857 HRegionServer
24723 HMaster
23428 QuorumPeerMain
23522 JournalNode
25448 Jps
24070 NodeManager

regionserver

9832 HRegionServer
8923 QuorumPeerMain
9379 NodeManager
10495 Jps
9197 DataNode
9622 ResourceManager
9006 JournalNode
10436 NameNode
9552 DFSZKFailoverController

在某regionserver上启动Hmaster

hbase-daemon.sh start master

jps:

9832 HRegionServer
8923 QuorumPeerMain
9379 NodeManager
10495 Jps
9197 DataNode
9622 ResourceManager
9006 JournalNode
10005 HMaster
10436 NameNode
9552 DFSZKFailoverController

这个时候就可以看到HMaster启动了。

如何区分哪个是Active哪个是standby呢,看log

hbase的log中可以看到

2015-08-07 14:00:14,765 INFO  [hadoop002:60000.activeMasterManager] master.ActiveMasterManager: Another master is the active master, hadoop001,60000,1438927191790; waiting to become the next active master

这样就可以判断哪台是Active了

HBase Master高可用(HA)的更多相关文章

  1. HBase的高可用(HA)

    在公司写文档时候查到的一些资料,感觉对自己很有帮助,现在整理如下: 介绍 HBase是一个高可靠性.高性能.列存储.可伸缩.实时读写的分布式数据库系统,基于列的存储模式适合于存储非结构化数据. 适用场 ...

  2. 使用kubeadm进行单master(single master)和高可用(HA)kubernetes集群部署

    kubeadm部署k8s 使用kubeadm进行k8s的部署主要分为以下几个步骤: 环境预装: 主要安装docker.kubeadm等相关工具. 集群部署: 集群部署分为single master(单 ...

  3. corosync+pacemaker实现高可用(HA)集群

    corosync+pacemaker实现高可用(HA)集群(一)     重要概念 在准备部署HA集群前,需要对其涉及的大量的概念有一个初步的了解,这样在实际部署配置时,才不至于不知所云 资源.服务与 ...

  4. Corosync+Pacemaker+DRBD+MySQL 实现高可用(HA)的MySQL集群

    大纲一.前言二.环境准备三.Corosync 安装与配置四.Pacemaker 安装与配置五.DRBD 安装与配置六.MySQL 安装与配置七.crmsh 资源管理 推荐阅读: Linux 高可用(H ...

  5. K8S集群Master高可用实践

    K8S集群Master高可用实践    https://blog.51cto.com/ylw6006/2164981 本文将在前文基础上介绍k8s集群的高可用实践,一般来讲,k8s集群高可用主要包含以 ...

  6. 浅谈web应用的负载均衡、集群、高可用(HA)解决方案(转)

    1.熟悉几个组件 1.1.apache     —— 它是Apache软件基金会的一个开放源代码的跨平台的网页服务器,属于老牌的web服务器了,支持基于Ip或者域名的虚拟主机,支持代理服务器,支持安 ...

  7. hadoop在zookeeper上的高可用HA

    (参考文章:https://www.linuxprobe.com/hadoop-high-available.html) 一.技术背景 影响HDFS集群不可用主要包括以下两种情况:一是NameNode ...

  8. Hadoop 高可用(HA)的自动容灾配置

    参考链接 Hadoop 完全分布式安装 ZooKeeper 集群的安装部署 0. 说明 在 Hadoop 完全分布式安装 & ZooKeeper 集群的安装部署的基础之上进行 Hadoop 高 ...

  9. 【高可用HA】Nginx (1) —— Mac下配置Nginx Http负载均衡(Load Balancer)之101实例

    [高可用HA]Nginx (1) -- Mac下配置Nginx Http负载均衡(Load Balancer)之101实例 nginx版本: nginx-1.9.8 参考来源: nginx.org [ ...

随机推荐

  1. C#神奇的扩展方法

      以前总听说扩展方法扩展方法,只是听说是C#3.0后出来的新玩意,也仅仅是知道Linq中用到好多的扩展方法,但是他究竟是个什么东东,怎么用它,用它的好处是什么,总是模模糊糊,那么我们今天就尝试揭开它 ...

  2. 【JavaScript 从零开始】变量作用域

    变量作用域 一个变量的作用域(scope)是程序源代码中定义这个变量的区域. 全局变量拥有全局作用域,在JavaScript代码中的任何地方都是有定义的.然而在函数内声明的变量只是函数体内有定义. 他 ...

  3. Android全屏的两种方法

    在开发中我们经常需要把我们的应用设置为全屏,这里我所知道的有俩中方法,一中是在代码中设置,另一种方法是在配置文件里改! 一.在代码中设置: [java] view plain copy package ...

  4. UNIX高手应该保持的习惯

    UNIX 高手的 10 个习惯 克服不良的 UNIX 使用模式 采用 10 个能够提高您的 UNIX® 命令行效率的好习惯——并在此过程中摆脱不良的使用模式.本文循序渐进地指导您学习几项用于命令行操作 ...

  5. 撩课-Web大前端每天5道面试题-Day17

    1.apply, call和bind有什么区别? 三者都可以把一个函数应用到其他对象上,注意不是自身对象. apply,call是直接执行函数调用,bind是绑定,执行需要再次调用. apply和ca ...

  6. JVM读书笔记

    1 概念 java virtual machine为java虚拟机,运行使用jdk中编译器编译的java程序. 2 JVM内存模型 程序计数器:线程私有.当前线程正在执行的行号指示器. Java虚拟机 ...

  7. POJ 2480 Longge's problem 欧拉函数—————∑gcd(i, N) 1<=i <=N

    Longge's problem Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6383   Accepted: 2043 ...

  8. hdu Rescue 1242

    Rescue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Subm ...

  9. 整理 node-sass 安装失败的原因及解决办法

    npm install 时偶尔遇到报错:没有安装python或node-sass 安装失败的问题,百度之后发现是被墙了,但根据百度的方法换了淘宝镜像和用了vpn都安装失败,最后发现原来是因为没有卸载之 ...

  10. linq中order by 和group by (含lambda表达式实现)以及综合案例

    一.Linq应用场景 linq的语法通过System.Linq下面的Enumerable类提供支持,也就是说,只要是实现了IEnumerable<T>的对象都可以使用Linq的语法来查询. ...