Master 为Region server 分配region 负责regionServer的负载均衡
RegionServer 维护region 切分region
Region 每个region中会保存一段连续的数据(按照行键排序)
store 一个region由多个store组成的 一个store对应一个列族 store包括内存中的memstore和磁盘上的storefile
Memstore 与 storefile 数据会先写进memstore 达到一定量时开启flashcache进程写入storefile
Cell单元格 是未解析的字节数组
读写流程
大合并和小合并 minor major
minor 负责将重写最后生成的几个文件到一个更大的文件中
major 把所有文件压缩成一个单独的文件 如果删除数据 将会给数据添加墓碑标记 在大合并时将标记了墓碑标记的数据真正删除
读路径 保证了三层b+树的查找结构 第一层 查找zookeeper中包含rootregion位置信息的节点 第二层是从root表中查找对应的
meta region的位置(表的元数据在哪个regionserver上的region中) 第三层是从.meta.表中查找用户对应region位置(指定
rowkey对应的region和regionserver)
写流程 要决定数据是否需要写到由Hlog类实现的预写日志中 一旦数据被写入到wal中 数据就会放到memstore中 同时还会检查
memstore是否已经满了 如果满了 就会被刷写到磁盘中去。 同时也会保存最后写入的序号
一个region 纵向切割多个 store 保存列族 先写 memstore 在内存 溢写到磁盘的 storeFile storefile 会合并
查找 先找memstore 再找blockcache 再找storefile
HBase api
HBaseAdmin //hbase管理者 HTable //表管理者
conf.set("hbase.zookeeper.quorum","node2,node3,node4");
创建hbase表
HTableDescriptor表描述对象(参数表名) HColumnDescriptor列族描述对象(列族名) 给表设置列族 然后admin去creatTable
(表)
Scan ResultScanner 获得迭代对象 result= rs.next() 用Cell去获取每个单元格的值
Put (构造中放行键)
Get(构造中放行键)
Delete