HBase 是一个开源的、分布式的、数据多版本的,列式存储的 nosql数据库。依托 Hadoop 的分布式文件系统 HDFS 作为底层存储, 能够为数十亿行数百万列的海量数据表提供随机、实时的读写访问。 青云提供的 HBase 集群服务包含:HBase 数据库服务、HDFS 分布式文件系统、Phoenix 查询引擎。压缩格式方面支持 GZIP、BZIP2、LZO、SNAPPY,可自行在应用中指定。 关于 HBase 更多的详细信息,可参阅HBase 官方文档,关于 Phoenix 查询引擎的详细信息,可参阅 Phoenix 官方网站 。
系统部署架构
与 Hadoop 一样,HBase 集群采用的是 master/slave 架构,青云提供的 HBase 集群服务还包括在线伸缩、监控告警、配置修改等功能,帮助您更好地管理集群。 如下图所示,青云的 HBase 集群分三种节点类型:主节点 (HBase Master 和 HDFS NameNode),从节点 (HBase RegionServer 和 HDFS DataNode) 和客户端节点 (HBase Client)。 用户在HBase 客户端可通过HBase Shell、Java API(本地或MapReduce)、Rest API 或其他工具来访问HBase。 若需要使用除java外的其他语言时,可在客户端节点 (HBase Client)自行启动 Thrift Server 以供支持。
另外,QingCloud 的 HBase 服务还提供:
在线伸缩
增加节点:您可以在 HBase 详情页点击“新增节点”按钮增加从节点,可以对每个新增节点指定 IP 或选择自动分配。
删除节点:您可以在 HBase 详情页选中需要删除的从节点,然后点击“删除”按钮,只能一次删除一个,并且必须等到上个节点删除后且 decommission 结束才能删除下一个节点,否则数据会丢失。 青云 HBase 集群在此操作时会先迁移 region 再复制数据,确保用户业务不受影响。
纵向伸缩:由于不同类节点压力并不同,所以青云 HBase 支持对 HBase Master Node 主节点、HDFS Name Node 主节点 和 HBase 从节点分别进行纵向伸缩。
监控和告警
我们对 HBase 集群的每个节点提供了资源的监控和告警服务,包括 CPU 使用率、内存使用率、硬盘使用率等。 同时,HBase 和 HDFS 提供了丰富的监控信息。如果需要通过公网访问这些信息您需要先申请一个公网 IP 绑定在路由器上,在路由器上设置端口转发,同时打开防火墙相应的下行端口。 HBase Master 默认端口16010,HDFS Name Node 默认端口是50070。为方便查看HBase UI,请参考 VPN 隧道指南 配置VPN,VPN 建立后可查看下述界面。
- http://<HBase Master Node private IP>:16010
- http://<HDFS Name Node private IP>:50070
为了帮助用户更好的管理和维护 HBase 集群,我们提供了部分针对 HBase 服务的监控,包括:
- 集群Region 迁移监控: 集群中 Region 处于迁移状态的数量
- RegionServer 读、写QPS监控: RegionServer 每秒读、写操作数
- RegionServer BlockCache 命中数监控: RegionServer BlockCache 命中数
- RegionServer BlockCache 命中率监控: RegionServer BlockCache 命中率
- RegionServer 慢操作数监控: RegionSever 慢 Delete,Increment,Get,Append,Put 数量
- RegionServer CMS GC 时间监控: RegionSever CMS GC 消耗 ms 数
配置
我们通过 HBase 配置组来管理 HBase 服务的配置。HBase 服务和 HBase 配置组是解耦的,您可以创建多个独立的配置组,并应用到不同的 HBase 服务。
测试 HBase 集群
关于集群服务的可用性测试请参看《HBase 使用指南》的HBase 集群测试部分。