文档章节

HBase入门5(集群) -压力分载与失效转发

超人学院
 超人学院
发布于 2015/05/22 16:17
字数 1567
阅读 74
收藏 0

上一篇关于HBase的文章中曾经讲述过HBase在分布式中的架构,这篇文章将会讲述HBase在分布式环境中是如何排除单点故障的(SPFO),做一个小实验讲述HBase在分布式环境中的高可用性,亲眼看到一些现象,延伸一些思考的话题。

先来回顾一下HBase主要部件:
   1.HBaseMaster  
   2.HRegionServer 
   3.HBase Client
   4.HBase Thrift Server
   5.HBase REST Server

HBaseMaster
    HMaster 负责给HRegionServer分配区域,并且负责对集群环境中的HReginServer进行负载均衡,HMaster还负责监控集群环境中的HReginServer的运行状况,如果某一台HReginServer down机,HBaseMaster将会把不可用的HReginServer来提供服务的HLog和表进行重新分配转交给其他HReginServer来提供,HBaseMaster还负责对数据和表进行管理,处理表结构和表中数据的变更,因为在 META 系统表中存储了所有的相关表信息。并且HMaster实现了ZooKeeper的Watcher接口可以和zookeeper集群交互。

HRegionServer
    HReginServer负责处理用户的读和写的操作。HReginServer通过与HBaseMaster通信获取自己需要服务的数据表,并向HMaster反馈自己的运行状况。当一个写的请求到来的时候,它首先会写到一个叫做HLog的write-ahead log中。HLog被缓存在内存中,称为Memcache,每一个HStore只能有一个Memcache。当Memcache到达配置的大小以后,将会创建一个MapFile,将其写到磁盘中去。这将减少HReginServer的内存压力。当一起读取的请求到来的时候,HReginServer会先在Memcache中寻找该数据,当找不到的时候,才会去在MapFiles 中寻找。

HBase Client
    HBase Client负责寻找提供需求数据的HReginServer。在这个过程中,HBase Client将首先与HMaster通信,找到ROOT区域。这个操作是Client和Master之间仅有的通信操作。一旦ROOT区域被找到以后,Client就可以通过扫描ROOT区域找到相应的META区域去定位实际提供数据的HReginServer。当定位到提供数据的HReginServer以后,Client就可以通过这个HReginServer找到需要的数据了。这些信息将会被Client缓存起来,当下次请求的时候,就不需要走上面的这个流程了。

HBase服务接口
    HBase Thrift Server和HBase REST Server是通过非Java程序对HBase进行访问的一种途径。

进入正题

先来看一个HBase集群的模拟环境,此环境中一共有4台机器,分别包含zookeeper、HBaseMaster、HReginServer、HDSF 4个服务,为了展示失效转发的效果HBaseMaster、HReginServer各有2台,只是在一台机器上即运行了HBaseMaster,也运行了HReginServer。
注意,HBase的集群环境中HBaseMaster只有失效转发没有压力分载的功能,而HReginServer即提供失效转发也提供压力分载。

服务器清单如下:
    1、zookeeper              192.168.20.214
    2、HBaseMaster        192.168.20.213/192.168.20.215
    3、HReginServer        192.168.20.213/192.168.20.215
    4、HDSF                       192.168.20.212

整个模拟环境的架构如图所示:

注意,这里只是做了一个模拟环境,因为这个环境的重点是HBase,所以zookeeper和HDFS服务都是单台。

虽然说在整个HBase的集群环境中只能有一个HMaster,可是在集群环境中HMaster可以启动多个,但真正使用到的HMaster Server只有一个,他不down掉的时候,其他启动的HMasterServer并不会工作,直到与ZooKeeper服务器判断与当前运行的HMaster通讯超时,认为这个正在运行的HMaster服务器down掉了,Zookeeper才会去连接下一台HMaster Server。

简单来说,如果运行中HMaster服务器down掉了,那么zookeeper会从列表中选择下一个HMaster 服务器进行访问,让他接管down掉的HMaster任务,换而言之,用Java客户端对HBase进行操作是通过ZooKeeper的,也就是说如果zookeeper集群中的节点全挂了那么HBase的集群也挂了。本身HBase并不存储中的任何数据 真正的数据是保存在HDFS上,所以HBase的数据是一致的,但是HDFS文件系统挂了,HBase的集群也挂。

在一台HMaster失败后,客户端对HBase集群环境访问时,客户端先会通过zookeeper识别到HMaster运行异常,直到确认多次后,才连接到下一个HMaster,此时,备份的HMaster服务才生效,在IDE环境中的效果,如图所示:

上图中能看见抛出的一些异常和name:javahttp://www.javabloger.com和name:javahttp://www.javabloger.com1的结果集,因为我在serv215机器上用killall java命令把 HMaster和HReginServer都关掉,并且立刻用Java客户端对HBase的集群环境进行访问有异常抛出,但是retry到一定次数后查询出结果,前面已经说了访问HBase是通过zookeeper再和真正的数据打交道,也就是说zookeeper接管了一个standby 的 HMaster,让原先Standby的HMaster接替了失效的HMaster任务,而被接管的HBaseMaster再对HReginServer的任务进行分配,当 HReginServer失败后zookeeper会通知 HMaster对HReginServer的任务进行分配。这样充分的说明了HBase做到了实效转发的功能。
如图所示:
 

口水:
1、HBase的失效转发的效率比较慢了,不指望能在1-2秒切换和恢复完毕,也许是我暂时没有发现有什么参数可以提高失效转发和恢复过程的速度,将来会继续关注这个问题。
2、在官方网站上看见HBase0.89.20100924的版本有篇讲述关于数据同步的文章,我尝试了一下在一台机器上可以运行所谓的HBase虚拟集群环境,但是切换到多台机器的分布式环境中,单点失效转发的速度很慢比HBase0.20.6还要慢,我又检查了是否存在网络的问题,目前尚未找到正确的答案,对与HBase0.89.20100924 新版中的数据同步的原理,如图所示:(更多信息)

 

更多精彩内容请关注:http://bbs.superwu.cn

关注超人学院微信二维码:

© 著作权归作者所有

超人学院
粉丝 112
博文 335
码字总数 388917
作品 0
昌平
CTO(技术副总裁)
私信 提问
Hadoop上路_15-HBase0.98.0入门

以下操作在Hadoop分布式集群基础上进行。 一。分布式环境搭建 下载:http://www.apache.org/dyn/closer.cgi/hbase/ ,hbase-0.98.0-hadoop2-bin.tar.gz。 1.在master主控机安装HBase 1)解压...

vigiles
2014/04/03
0
0
HADOOP HBASE配置注意事项

1、yum安装的jdk工具1.8版本,在配置hbase1.2版本需要在hbase-env.sh配置文件中注释掉下面的内容: export HBASEMASTEROPTS="$HBASEMASTEROPTS -XX:PermSize=128m -XX:MaxPermSize=128m" exp......

断臂人
2018/07/11
0
0
一文读懂分布式数据库Hbase

一、 1、什么是Hbase。 是一个高可靠性、高性能、列存储、可伸缩、实时读写的分布式数据库系统。 适合于存储非结构化数据,基于列的而不是基于行的模式 如图:Hadoop生态中HBase与其他部分的...

hblt-j
2018/07/26
0
0
HBase解决Region Server Compact过程占用大量网络出口带宽的问题

HBase 0.92版本之后,RegionServer的Compact过程根据待合并的文件大小分为smallcompaction和large compaction两种,由此可能导致在集群写入量大的时候Compact占用过多的网络出口带宽。本文将...

超人学院
2015/05/26
0
0
HBase实操 | 使用Spark通过BulkLoad快速导入数据到HBase

HBase社区直播本期分享专家:明惠(网名:过往记忆)-阿里云数据架构师 视频地址: https://yq.aliyun.com/live/590?spm=a2c4e.11155435.0.0.460177969kCLxf PPT地址: https://yq.aliyun.com/...

hbase小能手
2018/11/16
0
0

没有更多内容

加载失败,请刷新页面

加载更多

哨兵作用

https://www.cnblogs.com/kaleidoscope/p/9636496.html

Java搬砖工程师
24分钟前
1
0
好程序员web前端教程分享CSS技巧!

好程序员web前端教程分享CSS技巧!现在学web人越来越多,小白的问题也越来越多,那么今天就为大家分享一下CSS学习技巧!在web前端工作中离不开css的使用。为了帮助大家提高自己的css使用技巧...

好程序员IT
26分钟前
1
0
PhpStudy升级MySQL5.5到5.7记录

1.下载mysql 5.7 https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.25-winx64.zip 2.备份目前的数据库数据,可以导出数据库文件,作为备份。 3.备份 PhpStudy 下的 MySQL 文件夹、以防升...

win_ball
28分钟前
1
0
Java8 JVM参数解读

摘要: 我们知道java虚拟机启动时会带有很多的启动参数,Java命令本身就是一个多参数的启动命令。那么具体JVM启动包含哪些参数呢?这篇文章针对java8的情况做一篇汇总解读,包含大多数常见和...

xiaomin0322
30分钟前
1
0
maven中关于scope依赖范围

既然,Maven的生命周期存在编译、测试、运行这些过程,那么显然有些依赖只用于测试,比如junit;有些依赖编译用不到,只有运行的时候才能用到,比如mysql的驱动包在编译期就用不到(编译期用...

syso_Null
33分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部