加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

弥补MySQL和Redis短板:看HBase怎么确保高可用

发布时间:2019-03-27 14:16:12 所属栏目:编程 来源:张小渔
导读:HBase是一个基于Hadoop面向列的非相关型漫衍式数据库(NoSQL),计划观念来历于谷歌的BigTable模子,面向及时读写、随机遇见大局限数据集的场景,是一个高靠得住性、高机能、高伸缩的漫衍式存储体系,在大数据相干规模应用普及。 HBase体系支持对所存储的数据

通过上面的参数KubasService启动Docker时,在启动呼吁中操作hadoop_xml_conf.sh和env-init.py修改hbase-site.xml和hbase-env.sh文件来完成最后的设置注入,如下所示:

  1. source /usr/lib/hbase/bin/hadoop_xml_conf.sh 
  2. && put_config --file /etc/hbase/conf/hbase-site.xml --property hbase.regionserver.codecs --value snappy 
  3. && put_config --file /etc/hbase/conf/hbase-site.xml --property zookeeper.znode.parent --value /test-cluster 
  4. && put_config --file /etc/hbase/conf/hbase-site.xml --property hbase.rootdir --value hdfs://namenode01:8020/tmp/hbase/test-cluster 
  5. && put_config --file /etc/hbase/conf/hbase-site.xml --property hbase.zookeeper.quorum --value zookeeper01,zookeeper02,zookeeper03 
  6. && put_config --file /etc/hbase/conf/hbase-site.xml --property hbase.zookeeper.property.clientPort --value 2181 
  7. && service hbase-regionserver start && tail -f /var/log/hbase/hbase-hbase-regionserver.log 

3、收集通讯

收集方面,回收了Kubernetes上原生的收集模式,每一个Pod都有本身的IP地点,容器之间可以直接通讯,同时在Kubernetes集群中添加了DNS自动注册和反注册成果,以Pod的标识名字作为域名,在Pod建设和重启和烧毁时将相干信息同步全局DNS。

在这个处所我们碰着干涉题,其时我们的DNS理会不能在Docker收集情形中通过IP反解出对应的容器域名,这就使得Regionserver在启动之后向Master注册和向Zookeeper集群注册的处事名字纷歧致,导致Master中对统一个Regionserver挂号两次,造成Master与Regionserver无法正常通讯,整个集群无法正常提供处事。

颠末我们对源码的研究和尝试之后,我们在容器启动Regionserver处事之前修改/etc/hosts文件,将Kubernetes对注入的hostname信息屏障。

这样的修改让容器启动的HBase集群可以或许顺遂启动并初始化乐成,可是也给运维晋升了伟大度,由于此刻HBase提供的Master页此刻看到的Regionserver都是IP情势的记录,给监控和妨碍处理赏罚带来了诸多未便。

六、存在题目

初代架构顺遂落地,在乐成接入了近十个集群营业之后,这套架构面对了以下几个题目:

打点操纵营业HBase集群较为繁琐

  • 必要手动提前确定HDFS集群的存储,以及申请独立Zookeeper集群,早期为了省事直接多套HBase共享了一套Zookeeper集群,这和我们计划的初志不切合;
  • 容器标识符和HBaseMaster里注册的regionserver地点纷歧致,影响妨碍定位;
  • 单Regionserver运行在一个单独的ReplicationController(以下简称RC),可是扩容缩容为充实操作RC的特征,粗暴的回收增进或镌汰RC的方法举办扩容缩容。

HBase设置

  • 最初的计划缺乏机动性,与HBase处事设置有关的hbase-site.xml以及hbase-env.sh固化在DockerImage里,这种环境下,假如必要更新大量设置,则必要从头build镜像;
  • 因为最初计划是共享一套HDFS集群作为多HBase集群的存储,以是与HDFS有关的hdfs-site.xml和core-site.xml设置文件也被直接设置进了镜像。假如必要在Kubasservice中上线依靠其他HDFS集群的HBase,也必要从头构建镜像。

HDFS断绝

  • 跟着接入HBase集群的增多,差异的HBase集群营业对HDFS的IO耗损有差异的要求,因此有了疏散HBase依靠的HDFS集群的需求;
  • 首要题目源自Docker镜像对相干设置文件的固化,与HDFS有关的hdfs-site.xml和core-site.xml设置文件与相干Docker镜像对应,而差异Docker镜像的版本完全由研发职员本身打点,最初版本的实现并未思量到这些题目。

监控运维

  • 指标数据不充实,堆内堆外内存变革,region以及table的会见信息都未有提取或聚合;
  • Region热门定位较慢,无法在短时刻内定位到热门Region;
  • 新增可能下线组件只能通过扫KubasService的数据库来发明相干改观,组件的非常如RegionServer掉线或重启,Master切换等不能实时反馈;

七、重构

为了进一步办理初版架构存在的题目,优化HBase的管控流程,我们从头审阅了已有的架构,并团结Kubernetes的新特征,对原有的架构举办进级改革,从头用Golang重写了整个Kubas打点体系的处事(初版行使了Python举办开拓)。

并在Kubas打点体系的基本上,开拓了多个用于监控和运维的基本微处事,进步了在Kubernetes长举办HBase集群陈设的机动性,架构如下图所示:

补充MySQL和Redis短板:看HBase怎么确保高可用

二代架构图

1、Deployment&ConfigMap

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读