zoukankan      html  css  js  c++  java
  • HBase Master HA高可用

    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了

  • 相关阅读:
    vector 指针结果 排序
    C++移位或与操作
    Win7如何显示/隐藏Administrator账号
    一些常用的工具
    发布单机端DELPHI程序访问MySQL必备文件
    DBX error:Driver could not be properly initialized .... 解决办法
    终止当前循环,退出循环,退出当前过程的指令的什么
    Delphi XE中使用dbExpress连接MySQL数据库疑难问题解决
    控件缩写大全
    ClienDataSet 随手笔计(1)
  • 原文地址:https://www.cnblogs.com/bigdatasafe/p/10784933.html
Copyright © 2011-2022 走看看