1、", Helvetica, "Meiryo UI", "Malgun Gothic", "Segoe UI", "Trebuchet MS", Monaco, monospace, Tahoma, STXihei, 华文细黑, STHeiti, "Helvetica Neue", "Droid Sans", "wenquanyi micro hei", FreeSans, Arimo, Arial, SimSun, 宋体, Heiti, 黑体,
2、sans-serif;font-size: 14px;text-align: left;white-space: normal;列族:一组列的集合为列族。列族下的列可以N个。列名称:存在列族下的单个列,列族下的名称。RowKey:Hbase存储采用 key-value方式,RowKey就是Key,所有的修改,查询等操作都只能基于RowKey,必须唯一。HBase整体架构HBase由三种类型的服务器以主从模式构成Region Server:负责数据的读写服务,用户通过与Region server交互来实现对数据的访问。每个Region服务器中包含最多1000个Region,每个Region里面包
3、含了StartKey到EndKey的一个区间数据。HBase HMaster:分组分配Region和操作DDL,在集群处于数据恢复或者动态调整时,监控所有Region Server的状态。ZooKeeper:负责维护集群的状态(某台服务器是否在线,服务器之间数据的同步操作及Hmaster的选举等)。集群与协同工作Region Server,会通过心跳方式与Zookeeper保持连接,并创建一个临时节点,当无法监听到心跳时,会通知Zookeeper,同时删除临时节点,而HMaser会通过zookeeper得到Region Server服务器的状态,当服务器下线时,会进行数据恢复,容灾等操作。HM
4、aster同样会同Zookeeper保持心跳,用于监控HMaster状态,当HMaster下线时,会通过选举方式,将HMaster集群中的一台机器设置成Active,其他机器设置成InActive状态,来保证整个集群的高可用性。数据写入过程1.HBase客户端发起Put请求时,会先将数据写入预写日志(WAL)中,将操作记录写入WAL末尾。WAL用于Region Server服务器崩溃时,恢复MemStore中数据,WAL存储在Hadoop的HDFS中。2.数据在写入Wal后,会将数据先写入Region Server下Region中MemStore中(写入缓存,内存级别)3.在写入MemStor
5、e成功后,反馈给客户端本次写入已经完成。4.当MemStore达到一定量级时,会通过Flush方式,生成HFile,存入Hadoop的HDFS中。HFile在生成前,会在内存中对Key进行升序排序,将排序好的数据顺序写入HFile中,并在HFile中生成一个多级索引,还有一个尾部指针。数据读取过程1.客户端发起请求,从Zookeeper中获取一个叫MetaTable的元数据。注:如果本地有缓存会优先读取本地缓存。2.客户端通过MetaTable,得知RowKey所有在的Region Server服务器得到Region位置。3.客户端优先从Region中的BlockCache(读取缓存)中获取数据,如果BlockCache中不存在,会通过MemStore(写入缓存)中获取数据,如果还不存在,会通过HFile中读取,并将数据返回给客户端。4.读取HFIle时,会通过尾部指针中布隆过滤区域与时间区域,可以快读定位RowKey是否在HFile文件当中。p style=margin-bottom: 16px;box-sizing: border-box;font-family: "Microsoft YaHei", Helvetica, "Meiryo UI", "Malgun Gothic", &a