zookeeper:主要用于协调管理分布式应用程序;
1.实现master高可用;如果 active master由于异常宕机,zookeeper会检测到该宕机时间,并通过一定机制选举出新的master
2.管理系统核心元数据:当前系统中正常工作的regionserver集合,保存系统元数据表hbase:meta所在额regionserver地址等等
3.参与regionserver宕机恢复:zookeeper通过心跳可以感知到regionserver是否宕机,并在宕机后通知master进行宕机处理
4.实现分布式表锁:hbase对表进行操作时需要先加锁,防止其他用户对同一张表进行操作,造成表状态不一致;zookeeper可以通过特定机制实现分布式表锁
master:主要负责hbase系统的各种管理工作;
1.处理用户的各种管理请求;建表、修改表、切分表、数据合并、compaction
2.管理集群中所有regionserver;包括region的负载均衡,regionserver的宕机恢复,region的迁移
3.清理过期日志以及文件;会每隔一段时间检查hdfs中HLog是否过期、HFile是否已经被删除,并在过期后删除
RegionServer:(有几台机器就有几个regionserver)主要用来响应用户的IO请求。由WAL(HLog)、BlockCache、多个region构成
1.WAL(HLog):HLog在hbase中有两个核心作用:
一、用于实现数据的高可靠性;hbase在数据写入时,会先写入缓存,再异步刷新到磁盘,为防止缓存数据丢失,数据写入缓存之前首先顺序写入HLog;这样的话即使数据丢失,仍然可以通过HLog恢复。
二、用于实现hbase集群见主从复制,通过回访主集群推送过来的HLog日志实现主从复制
2.BlockCache:hbase系统中读缓存,客户端从磁盘读取数据之后通常会将数据缓存到系统内存中,后续访问同一行数据可以直接从内存中获取而不需要访问磁盘
3.Region:region是集群负载均衡的基本单位。
一个region由一个或者多个store构成。
store的个数取决于表中列簇的个数,多少个列簇就有多少个store
每个store由一个memstore和一个或者多个HFile组成。MemStore称为写缓存,首先会写到Memstore中,当MemStore写满之后(缓存数据超过阈值,默认128M)系统会异步将数据flush成一个HFile文件,HFile文件数超过一定阈值之后系统将会执行Compact操作,将这些小文件通过一定策略合并成一个或多个大文件
HDFS:hbase底层依赖hdfs组件存储时间数据,包括用户数据文件、HLog日志文件等最终都会写入hdfs落到磁盘。hdfs数据默认3副本存储策略可以有效保证数据的高可靠性。hbase内部封装了一个名为HDFSClient的HDFS客户端组件,负责对HDFS的实际数据进行读写访问