组件及进程:
1.Client
1.整个Hbase集群的访问入口
2.Client当中包含了访问Hbase接口,此外,Client维护了对应了的cache加速Hbase访问,比如cache的.META.元数据的信息
3.与HRegionServer进行数据读写类操作
4.使用HBase RPC机制与HMaster和HRegionServer进行通信;
2.Zookeeper
1.高可用
通过Zookeeper来保证master的高可用,保证集群中只有一个master运行。
如果正在服务的master产生异常,通过竞争机制,产生新的master提供服务。
2.存储元数据的入口
这一功能减轻了master节点的“负担,把元数据交给zookeeper进行管理, 存储HBase的schema和table元数据,Zookeeper是存储元数据的统一入口地址
3.监控RegionServer
通过Zoopkeeper来监控RegionServer的状态,当RegionSevrer有异常的时候,通过回调的形式通知Master RegionServer上下线的信息
此外集群的一些维护工作也交给Zookeeper
3.HMaster
1.为RegionServer分配Region
2.维护整个集群的负载均衡,以及元数据信息
3.处理Region/RegionServer的分配或者转移
4.通过Zookeeper将自身位置发布给Client
4.HRegionServer
1.直接对接用户的读写请求,处理来自客户端的读写请求,是真正的“干活”的节点
2.管理master为其分配的Region。
3.负责存储HBase的实际数据
4.负责和底层HDFS的交互,刷新缓存到HDFS以及存储数据到HDFS
5.负责Region变大以后的拆分
6.负责Storefile的合并工作
7.维护Hlog
8.执行压缩
5.HRegion
Hbase表的分片,HBase表会根据RowKey值被切分成不同的region存储在RegionServer中,在一个RegionServer中可以有多个不同的region。
6.Hdfs
1.HDFS为Hbase提供最终的底层数据存储服务,同时为HBase提供高可用(Hlog存储在HDFS)的支持。
2.提供元数据和表数据的底层分布式存储服务,数据多副本,保证的高可靠和高可用性
2.其他组件
1.Write-Ahead logs
HBase的修改记录,当对HBase读写数据的时候,数据不是直接写进磁盘,它会在内存中保留一段时间(时间以及数据量阈值可以设定)。但把数据保存在内存中可能有更高的概率引起数据丢失,为了解决这个问题,数据会先写在一个叫做Write-Ahead logfile的文件中,然后再写入内存中。所以在系统出现故障的时候,数据可以通过这个日志文件重建。
用户所有的数据写入put等都会经过regionserver的log然后再去写
Wal解决的什么问题:
Hbaase ha的问题,hbase崩溃的时候,它可以恢复到崩溃前的状态
实现远程备份,客户端初始化一个对数据库改动的操作,比如,put,delete。
修改操作被封装在一个key,value实例里面然后通过rpc调用发送给regionserver,regionserver先写log再去写hregion
2.Hlog
Hlog是实现WAL的类,一个hregionserver对应一个Hlog的实例,一台服务器只有一个Hlog实例, 当region初始化的时候,Hlog会作为参数传递给hregion的构造函数,这样获取到Hlog的引用,可以实现打日志
Hlog最核心的是调用append方法,完成对于日志的追加写,出于对性能的考虑,put,delete,increment有一个开关函数set retowal函数传进布尔类型的参数,如果设置成false将禁用WAL,,
Hlog通过序列化的number追踪数据的改变,内部原子类型的log保证线程安全
3.Store
HFile存储在Store中,一个Store对应HBase表中的一个列族。
4.MemStore
顾名思义,就是内存存储,位于内存中,用来保存当前的数据操作,所以当数据保存在WAL中之后,RegsionServer会在内存中存储键值对。
5.HFile
这是在磁盘上保存原始数据的实际的物理文件,是实际的存储文件。StoreFile是以Hfile的形式存储在HDFS的。
端口号:
挂掉之后的影响:
Hbase挂掉的可能性有很多,主要由zk或者hdfs的问题导致,因此zk、hdfs的可用对于hbase极其重要
Hmaster挂掉:
Hmaster挂掉了,那么整个HBase集群将陷入不健康的状态,并且此时的工作状态并不会维持太久
解决:
配置高可用
HRegionServer挂掉:
HRegionServer无法处理hmaster为其分配的region
解决:
查看集群中/etc/ntp.conf的server配置是否合理,
利用service ntpd status来查看ntp的状态
利用service ntpd start启动ntp
利用ntpdate –u node1在三个节点立即进行时钟同步
利用chkconfig ntpd on设置所有节点ntp服务开机自启动。