热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

/opt/hbase/conf中不能启动hbase_独家支持用户自建、混合云环境集群,快收下这份HBase高可用解决方案...

简介:阿里云HBase服务了多家金融、广告、媒体类业务中的风控和推荐,持续的在高可用、低延迟、低成本方向上进行优化。为了进一步满足客户在可用性以及低延迟
2856975bf52baadc9d79cb65df08da81.gif简介:阿里云HBase服务了多家金融、广告、媒体类业务中的风控和推荐,持续的在高可用、低延迟、低成本方向上进行优化。为了进一步满足客户在可用性以及低延迟上的诉求,阿里云HBase将提供以主备架构为平台,以冗余、并发、隔离、降级等全方位服务为支撑的高可用解决方案。1HBase用户福利

新用户9.9元即可使用6个月云数据库HBase,更有低至1元包年的入门规格供广大HBase爱好者学习研究,点击阅读原文即可获取。

2

前言

HBase可以支持百TB数据规模、数百万QPS压力下的毫秒响应,适用于大数据背景下的风控和推荐等在线场景。

目前单集群承诺可用性99.9%&#xff0c;SSD机型上可以做到请求毛刺99.5% <50ms&#xff0c;以及新上线的表内冷热分离可以加速热数据访问性能、减少冷数据存储成本并且在API上对用户透明。

为了进一步满足客户在可用性以及低延迟上的诉求&#xff0c;阿里云HBase将提供以主备架构为平台&#xff0c;以冗余、并发、隔离、降级等全方位服务为支撑的高可用解决方案&#xff0c;目标提供99.99%可用性、99.9%请求小于50ms。目前高可用项目一期已经完成&#xff0c;本文将介绍主备架构以及一键切换能力。

3

HBase单集群可用性

一个HBase系统包含了Zookeeper、HDFS、HBase三个组件。其中Zookeeper在数据和计算上都进行了冗余&#xff0c;且是一个可自愈系统&#xff0c;单节点故障可在秒级恢复。HBase对Zookeeper是轻依赖&#xff0c;一般不会出现大问题。

HDFS是一个Master-Slave模式的分布式文件系统&#xff0c;存在中心节点Namenode&#xff0c;Namenode支持以HA方式部署&#xff0c;单Namenode故障可秒级恢复&#xff0c;在两个NN都宕机的情况下依然可以重启自愈&#xff0c;但恢复时间取决于回放日志大小&#xff0c;在分钟级别。数据多副本冗余&#xff0c;Datanode单节点宕机不中断服务。

HBase也是一个Master-Slave模式的分布式系统&#xff0c;其中HMaster不参与读写路径&#xff0c;因此HMaster宕机不中断服务&#xff0c;但长期宕机会影响负载均衡、Failover等能力&#xff0c;HMaster支持HA方式部署。HBase还有一个单点是Meta服务&#xff0c;它随机选择一个RegionServer节点作为宿主&#xff0c;如果meta服务不可用则所有请求路由会失效&#xff0c;导致整体不可用。由于客户端有路由缓存&#xff0c;meta服务停机不会立即造成不可用。

HBase数据分片使用Range Partition的方式&#xff0c;每一个Region由一个RegionServer服务&#xff0c;即HBase的计算服务是0冗余&#xff0c;因此当RegionServer故障时多个分片不可服务。HBase Failover机制可以自愈&#xff0c;单RegionServer宕机恢复时间在分钟级&#xff0c;多个RegionServer宕机恢复时间在10分钟~1小时时间不等。

f5cd0371876f31366fa432590a794f2c.png

e932a5b16f7540d30a492f3a87e36b21.png

4

内核或运行环境Bug

造成HBase自愈不可控

  • case1 某金融公司自建HBase因ECS重启导致WAL数据破坏&#xff0c;HBase Failover无法进行&#xff0c;集群不可用无法自愈

  • case2 某视频公司自建HBase集群Meta数据陷入不一致无法恢复&#xff0c;造成分区无法上线&#xff0c;部分表不可用无法自愈

  • case3 某媒体公司IO压力较大经常触发空间泄漏Bug&#xff0c;导致空间不足集群宕机无法自愈 

以上是真实的案例&#xff0c;Bug是不可避免的&#xff0c;未知Bug处理考验内核团队的技术实力&#xff0c;需要具备外科手术的能力&#xff0c;但其处理时间是不可预期的。

5

云HBase主备高可用方案

故障恢复时间可预知的高可用系统&#xff0c;故障发生时可以在分钟级别恢复读写能力。实现方案选择经典的主备模式&#xff0c;也支持主主模式。备集群部署在同城的不同机房内&#xff0c;在资源层面完全隔离&#xff0c;软件可部署不同的版本&#xff0c;最大程度保持两个集群的独立性。从经验数据出发&#xff0c;单机房故障恢复时间的上限为1个小时&#xff0c;在这1个小时内另一个机房也发生故障的概率非常低&#xff0c;有两种情况除外&#xff1a;第一种是城市级灾难&#xff0c;这个需要异地容灾方案&#xff1b;第二种是故障源于业务流量增长&#xff0c;系统过载&#xff0c;此时的解决方案是限流或者扩容。这两种情况不在本文设计考虑之内。系统提供一键切换能力&#xff0c;不需要客户端重启&#xff0c;每一个客户端在收到切换信号时会自动完成连接的切换&#xff0c;客户端的切换是并发进行的&#xff0c;所有客户端可以在10秒内完成切换。高可用方案可以独立提供给自建使用&#xff0c;支持自建和云HBase混合主备。如果你已经拥有一个HBase集群&#xff0c;可以方便的弹出一个冗余备集群&#xff0c;备集群的建表和数据复制都是自动完成。当故障发生时&#xff0c;可以在控制台切换流量到备库&#xff0c;待主集群恢复后再把流量切回。云HBase高可用服务是一个独立的服务&#xff0c;可以看做是基于HBase之上的一个中间件&#xff0c;支持混合云是我们的设计原则&#xff0c;云上同VPC下的自建HBase、EMR HBase、云HBase可以方便的进行主备混合使用&#xff0c;对于IDC自建HBase或者它云上的HBase则需要用户自行解决网络联通。简单易用&#xff0c;HBase客户端从普通模式转化为高可用模式不需要修改代码。云HBase会提供一个插件集成到HBase客户端&#xff0c;并且为高可用提供一个新的Endpoint。这个Endpoint就是简单的 ip&#43;port&#xff0c;用来替换单集群模式下的Zookeeper地址。用户可以选择核心表进行高可用建设&#xff0c;非核心表依然保持单集群来降低成本。对于高可用的表&#xff0c;可以通过高可用客户端进行创建、修改和删除&#xff0c;控制台会保证主备集群元数据的一致性。目前我们支持0.96、0.98、1.x、2.x、云HBase增强版等多个版本。

e754d6d9202937826d38c7950c82c12f.png

版本主备兼容性列表

控制台提供一键切换不需要重启客户端&#xff0c;提供AliHBaseConnector作为原生HBase客户端的一个插件&#xff0c;插件内部会封装主备切换逻辑。客户端启动时会从BDS获取主备地址信息同时建立一个高可用的命令通道&#xff0c;控制台发出的切换命令通过该通道到达客户端&#xff0c;客户端自动的断开旧链接&#xff0c;打开备库链接并重试请求。

综上所述&#xff0c;云HBase主备高可用架构如下图&#xff1a;

435886f18cdfa92f63cb68b950dace89.png

&#x1f538;数据同步

云HBase并没有采用开源的Replication方案&#xff0c;主要的原因包括&#xff1a;

  • HBase Replication抗热点能力差&#xff0c;每台机器只能处理自己的日志

  • HBase Replication Failover的设计存在缺陷&#xff0c;导致一旦RS宕机就会出现长时间同步延迟

  • HBase Replication与内核争抢资源&#xff0c;无法独立扩容

  • HBase Replication的管理依赖表属性配置&#xff0c;配置项很多&#xff0c;在混合云模式下很难维护

BDS Replication是一个独立的数据复制服务&#xff0c;提供延迟百毫秒级别的双向数据同步能力。BDS Replication可以独立的扩容缩容&#xff0c;它不需要磁盘&#xff0c;可以更好的管理成本。

e4a7ae2a35506867517a3687ffb58001.png

&#x1f538;主备一致性

云HBase主备采用的是异步复制&#xff0c;提供基于版本的最终一致性。写入主库的一行数据在同步到备库时&#xff0c;会保持和主库一致的版本号。云HBase高可用目前仅支持最终一致性切换&#xff0c;在切换时主备可能存在秒级的不一致。对于风控、推荐、画像类的应用&#xff0c;最终一致性是满足需求的。如果您使用了CheckAndPut、CheckAndDelete这样的接口则会出现一致性问题&#xff0c;此种情况请联系云HBase提供技术咨询。

&#x1f538;配置服务

配置服务有两个作用&#xff0c;存储主备集群的地址信息和通知切换命令。高可用客户端在启动时会访问该服务加载主备集群地址信息。通过控制台执行的切换命令也会由配置服务通知所有的客户端。配置服务本身采用了冗余来保障存储和消息的高可用。

&#x1f538;监控

高可用服务可以实时显示主备集群的状态。主、备角色在初始配置时确定不能更改&#xff0c;但状态"active/standby"是可变化的&#xff0c;处于"active"状态的集群是目前客户端访问的集群。提供主备集群双向同步链路的实时延迟展示&#xff0c;同时提供客户端链接数量监控&#xff0c;使得用户可以准确的判断切换进度。

6

云HBase高可用使用方式

如果您已经使用了云HBase并且希望增加一个备库&#xff0c;只需如下步骤

5c70b8401022d881fd35524b2f8ed5c4.gif

1 购买一个BDS集群用于管理主备2 购买一个空的云HBase集群作为备库3 输入主备两个集群的实例ID创建高可用访问地址4 开始您的高可用之旅

如果您使用的是ECS自建集群或者EMR HBase&#xff0c;希望增加一个备库&#xff0c;只需如下步骤

5c70b8401022d881fd35524b2f8ed5c4.gif

1 购买一个BDS集群用于管理主备2 购买一个空的云HBase集群作为备库3 配置域名映射和安全组(会提供相关的服务一键解决)4 输入主备两个集群的地址信息创建高可用访问地址5 开始您的高可用之旅

80c7b064a859a33085e486d521624397.gif

5c90523139e01d26eeededb26a6b3329.png

云数据库HBase降价狂欢首购爆款6个月仅需9.9元首购入门款全年仅1元新购一年低至5折点击了解更多优惠b7a62be8488b76f1a5d529bb40ddd49d.png

阿里巴巴数据库技术

微信&#xff1a;alibabadba

c3ea27ef49aa877fcac5ad4d84154e77.png

分享数据库前沿 

解构实战干货

长按二维码关注




推荐阅读
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • Bootstrap 插件使用指南
    本文详细介绍了如何在 Web 前端开发中使用 Bootstrap 插件,包括自动触发插件的方法、插件的引用方式以及具体的实例。 ... [详细]
  • 小程序的授权和登陆
    小程序的授权和登陆 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 2020年9月15日,Oracle正式发布了最新的JDK 15版本。本次更新带来了许多新特性,包括隐藏类、EdDSA签名算法、模式匹配、记录类、封闭类和文本块等。 ... [详细]
  • 包含phppdoerrorcode的词条 ... [详细]
  • 近期,微信公众平台上的HTML5游戏引起了广泛讨论,预示着HTML5游戏将迎来新的发展机遇。磊友科技的赵霏,作为一名HTML5技术的倡导者,分享了他在微信平台上开发HTML5游戏的经验和见解。 ... [详细]
  • JUC(三):深入解析AQS
    本文详细介绍了Java并发工具包中的核心类AQS(AbstractQueuedSynchronizer),包括其基本概念、数据结构、源码分析及核心方法的实现。 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • 深入解析 Lifecycle 的实现原理
    本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
  • 本文介绍了如何利用Shell脚本高效地部署MHA(MySQL High Availability)高可用集群。通过详细的脚本编写和配置示例,展示了自动化部署过程中的关键步骤和注意事项。该方法不仅简化了集群的部署流程,还提高了系统的稳定性和可用性。 ... [详细]
  • ThinkPHP模板中函数调用的开发技巧与实践 ... [详细]
  • 本文探讨了 TypeScript 中泛型的重要性和应用场景,通过多个实例详细解析了泛型如何提升代码的复用性和类型安全性。 ... [详细]
  • 本文全面解析了 Python 中字符串处理的常用操作与技巧。首先介绍了如何通过 `s.strip()`, `s.lstrip()` 和 `s.rstrip()` 方法去除字符串中的空格和特殊符号。接着,详细讲解了字符串复制的方法,包括使用 `sStr1 = sStr2` 进行简单的赋值复制。此外,还探讨了字符串连接、分割、替换等高级操作,并提供了丰富的示例代码,帮助读者深入理解和掌握这些实用技巧。 ... [详细]
  • 本文详细解析了 Android 系统启动过程中的核心文件 `init.c`,探讨了其在系统初始化阶段的关键作用。通过对 `init.c` 的源代码进行深入分析,揭示了其如何管理进程、解析配置文件以及执行系统启动脚本。此外,文章还介绍了 `init` 进程的生命周期及其与内核的交互方式,为开发者提供了深入了解 Android 启动机制的宝贵资料。 ... [详细]
author-avatar
Li修贤_594
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有