美文网首页
企业级HBase架构与高可用与高可用测试

企业级HBase架构与高可用与高可用测试

作者: 机灵鬼鬼 | 来源:发表于2019-12-30 16:51 被阅读0次

    一、集群规模划分

    在生产环境中,我们根据集群机器数量的不同可以将集群划分为三种类型:
    (1)20台以下称为:小型集群
    小型集群中无需搞HA(高可用),这时候通常只需要一个ZooKeeper。并且HBase需要和其他的组件安装在同一台机器上。比如HBase和Hadoop安装在同一台机器,那么HRegionServer与NodeManager就会共享内存资源,所以在分配yarn内存时,要合理分配,一般是各占1/2。
    (2)20-50台称之为:中型集群
    需要搞HadoopHA、HBaseHA 3个ZooKeeper 3个HMaster
    (3)50台以上称为:大型集群
    5/7个ZooKeeper,而且每个HBase都要有自己单独的服务器。

    版本选择
    选择Cloudera的CDH版本,不选择apache的原因是因为,版本适配比较麻烦,而且对安全认证支持比较简陋。

    二、HBase的高可用架构


    image.png

    架构1的部署方式是无法保证724小时对外服务的,因为如果一旦HMaster出现故障,我们的元数据操作将无法进行,不过对HBase服务在短时间内做数据查询和插入是可以的。如果在HMaster还没有被修复的情况下,某一台RegionServer出现了宕机,那么这台RegionServer种的Region将无法分配到其他机器上去,是因为HMaster已经宕机不能查到元数据了,就无法获取集群机器信息与可用资源。那我们如何解决这种情况呐?其实我们需要再加入一个HMaster节点,与第一个HMaster互为主备。详情看架构2

    image.png
    我们需要让新增的HMaster处于待机状态,即不对外服务,但一直处于待命状态,一旦主HMaster宕机了,他就会被主动激活,变为主节点对外服务,接管宕机机器未完成的任务和工作。他们俩的服务都会注册的Zookeeper上面,宕机的机器会有预警系统通知工作人员,把宕机的机器修好,然后处于Standy状态,随时待命。这样我们就可以保证整个HBase集群7
    24小时对外服务了。

    HBase的高可用分部署集群搭建部署步骤
    1、首先把HBase的安装包进行上传并解压缩操作。
    tar -zxvf hbase-1.2.0-cdh5.7.0.tar.gz
    2、配置hbase-site.xml文件
    配置详情如下:
    <configuration>
    <property>
    <name>hbase.rootdir</name>
    <value>hdfs://master:8020/hbase</value>
    </property>
    <property>
    <name>hbase.cluster.distributed</name>
    <value>true</value>
    </property>
    <property>
    <name>hbase.zookeeper.quorum</name>
    <value>slave2、slave3、slave4</value>
    </property>
    <property>
    <name>hbase.regionserver.restart.on.zk.expire</name>
    <value>true</value>
    </property>
    -----当我们的协处理器出现错误,就会导致所在的regionserver宕机,那么就会把此server上的所有region分配到其他机器的RegionServer上去,如果其他机器一次宕机,那么就会不停的主动分配到剩余机器上去,这样最终所有集群的机器就会全部宕机造成灾难性后果,所以加上这个配置就是为了防止协处理器
    对我们的RegionServer带来影响-----
    <property>
    <name>hbase.coprocessor.abortonerror</name>
    <value>false</value>
    </property>
    </configuration>
    3、配置regionservers,就是master机器控制几台regionserver
    在hbase的conf文件夹中创建regionservers文件
    vi regionservers
    slave1
    slave2
    slave3
    slave4
    添加的内容就是regionserver所在的节点机器别名

    image.png
    4、发送hbase的安装包到其他机器上去。
    scp -r hbase slave1:/opt/software
    scp -r hbase slave2:/opt/software
    scp -r hbase slave3:/opt/software
    scp -r hbase slave4:/opt/software
    image.png
    5、为了实现高可用,我们需要配置backup-masters
    切换到master机器的hbase的conf目录,然后
    vi backup-masters
    内容是部署备用master的机器别名,这里是slave3,直接写在文件里面,保存即可。
    6、配置Hbase的环境变量
    image.png
    然后是配置生效。同理其他机器的环境变量也得改动。
    source一下该文件即可。
    7、启动hbase集群start-hbase.sh
    在master机器的hbase的bin目录,直接执行start-hbase.sh即可。
    8、检查服务是否都启动成功
    jps一下
    master上应该会有HMaster进程
    slave1
    slave2
    slave3
    slave4机器上分别都会有HRegionServer
    由于我们在slave3上还对master做了备用服务,那么slave3上面还应该有一个HMaster进程。

    三、HBase高可用测试
    1、首先访问http://master:60010

    image.png

    看到此图,则代表部署正常。下面我们要验证,待命状态的slave3的HMaster是否能在主master节点的HMaster进程故障的情况下,自动启动接管他的所有工作任务尼?
    下面我们模拟下把主节点master机器的HMaster进程杀死。
    jps查到HMaster的进程号

    kill -9 进程号

    接下来再去访问http://master:60010地址,此时已经访问不到刚才的页面了。
    那么我们看下slave3节点上面的该端口能否正常访问。
    http://slave3:60010,如下图,可以正常访问,我们看下有什么变化。

    image.png

    这时候可能有人会有疑问,如果我们在使用客户端和代码在进行与HBase链接通讯的时候,如果一台机器挂掉了,我们是不是需要手动切换到备用机地址才能正常访问?
    答案:其实是不需要的,因为我们在做链接的时候,写的地址是ZooKeeper的地址,在hbase服务启动的时候,已经把两个master的链接地址都存放在了ZooKeeper集群上了,只要有一个地址不可用,ZooKeeper会主动切换到另一个地址供客户端访问的。

    相关文章

      网友评论

          本文标题:企业级HBase架构与高可用与高可用测试

          本文链接:https://www.haomeiwen.com/subject/frfdnctx.html