1、客户端:本地存储已访问过的Region位置信息,加快访问;
2、ZooKeeper服务器:协调管理集群,避免单点失效,提供配置服务、域名服务、分布式同步、组服务等;
3、Master服务器:负责表和Region管理;
4、region服务器:维护Region,响应用户读写;
Region服务器工作原理:
Region服务器;Region;HLog;MemStore;StoreFile;
用户读写过程:
用户写入数据时,被分配到相应Region服务器去执行用户数据首先被写入到MemStore和Hlog中只有当操作写入Hlog之后,commit()调用才会将其返回给客户端当用户读取数据时,Region服务器会首先访问MemStore缓存,如果找不到,再去磁盘上面的StoreFile中寻找;
缓存刷新:
系统会周期性地把MemStore缓存里的内容刷写到磁盘的StoreFile文件中,清空缓存,并在Hlog里面写入一个标记每次刷写都生成一个新的StoreFile文件,因此,每个Store包含多个StoreFile文件;
每个Region服务器都有一个自己的HLog 文件,每次启动都检查该文件,确认最近一次执行缓存刷新操作之后是否发生新的写入操作;如果发现更新,则先写入MemStore,再刷写到StoreFile,最后删除旧的Hlog文件,开始为用户提供服务;
StoreFile合并:
每次刷写都生成一个新的StoreFile,数量太多,影响查找速度;
调用Store.compact()把多个合并成一个;
合并操作比较耗费资源,只有数量达到一个阈值才启动合并;
HLog:
共用日志优点:提高对表的写操作性能;
缺点:恢复时需要分拆日志;
以上为厦大林子雨博士课件摘要,方便学习;