补充MySQL和Redis短板:看HBase怎么确保高可用
副问题[/!--empirenews.page--]
HBase是一个基于Hadoop面向列的非相关型漫衍式数据库(NoSQL),计划观念来历于谷歌的BigTable模子,面向及时读写、随机遇见大局限数据集的场景,是一个高靠得住性、高机能、高伸缩的漫衍式存储体系,在大数据相干规模应用普及。 HBase体系支持对所存储的数据举办透明切分,从而使得体系的存储以及计较具有精采的程度扩展性。 知乎从2017年起开始逐渐回收HBase体系存储种种在线营业数据,并在HBase处事之上构建种种应用模子以及数据计较使命。
配景 知乎对HBase的行使履历不算太长,在2017年头的时辰,HBase处事首要用于离线算法、保举、反作弊,尚有基本数据客栈数据的存储计较,通过MapReduce和Spark来举办会见。而在其时知乎的在线存储首要回收MySQL和Redis体系,个中:
针对以上两种在线存储所存在的一些题目,我们但愿成立一套在线存储NoSQL处事,对以上两种存储作为一个增补。 选型时代我们也思量过Cassandra,早期一些营业曾实行行使Cassandra作为存储,隔邻团队在运维了一段时刻的Cassandra体系之后,碰着不少的题目,Cassandra体系可操纵性没有到达预期,今朝除了Tracing相干的体系,其他营业已经放弃行使Cassandra。 我们从已有的离线存储体系出发,在权衡了不变性、机能、代码成熟度、上下流体系承接、业界行使场景以及社区活泼度等方面之后,选择了HBase,作为知乎在线存储的支撑组件之一。 一、HBase On Kubernetes
在这样的场景下,我们对在线HBase处事的需求是明晰的: 断绝性
资源操作率:从运维的角度,资源的分派要公道,尽也许的晋升主机cpu,内存包罗磁盘的有用操作率; 本钱节制:团队用最小的本钱去获得最大的运维收益,以是必要提供便捷的挪用接口,可以或许机动的举办HBase集群的申请、扩容、打点、监控。同时本钱包罗呆板资源,尚有工程师。其时我们线上的这套体系是由一位工程师独立去举办维护。 综合以上需求,参考我们团队之前对基本办法平台化的履历,最终的方针是把HBase处事做成基本组件处事平台向提供应上游营业,这个也是知乎技能平台部分事变思绪之一,尽也许的把全部的组件对营业都黑盒化,接口化,处事化。同时在行使和监控的粒度上尽也许的精确,过细,全面。这是我们构建在线HBase打点运维体系的一个初志。 二、Why Kubernetes? 前文说到我们但愿将整个HBase体系平台处事化,那就涉及到怎样打点和运维HBase体系,知乎在微处事和容器方面的事变蕴蓄和履历是相等富厚的。
Kubernetes[3]是谷歌开源的容器集群打点体系,是Google多年大局限容器打点技能Borg的开源版本。Kubernetes提供各类维度组件的资源打点和调治方案,断绝容器的资源行使,各个组件的HA事变,同时尚有较为完美的收集方案。 Kubernetes被计划作为构建组件和器材的生态体系平台,可以轻松地陈设、扩展和打点应用措施。有着Kubernetes大法的加持,我们很快有了最初的落地版本([4])。 三、初代 最初的落地版本架构见下图,平台在共享的物理集群上通过Kubernetes(以下简称K8S)API成立了多套逻辑上断绝的HBase集群,每套集群由一组Master和多少个Regionserver(以下简称RS)组成,集群共享一套HDFS存储集群,各自依靠的Zookeeper集群独立;集群通过一套打点体系Kubas处事来举办打点([4])。 第一代架构 模块界说 在K8S中怎样去构建HBase集群,起首必要用K8S自己的基本组件去描写HBase的组成;K8S的资源组件有以下几种:
(编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |