十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
MemStore简介:
在卡若等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供成都网站设计、网站建设 网站设计制作按需网站建设,公司网站建设,企业网站建设,品牌网站制作,网络营销推广,成都外贸网站建设公司,卡若网站建设费用合理。
上图为HBase的读写过程的大概描述;
写请求过程:client---------->WAL(Write Ahead LOG)----------->MemStore-------------> HFile--------->END
读请求过程:client---------->MemStore-------->BlockCache------->HFile------------>END
MemStore在HBase中的位置:
HBase是由Master和HRegionServer组成,而实际在读写的过程中,我们与Master打交道的机会不是很多,主要是HRegionServer,从上图可以看出每一个HRegionServer由一个HLog和多个Region构成,一个Region中存在多个Store,每一个Strore由一个MemStore和多个StoreFile构成,MemStore为HBase在内存中的一块区域,StoreFile的底层为HFile,其为HDFS中的文件。
MemStore在何时起作用:
写:当client端发起一个写操作时,写操作首先被写入到WAL中,然后写入到MemStore中,当达到一定的预设条件之后,MemStore中内容会刷写到StoreFile中,写操作完成。
(那么问题来了
1.为什么要先写入到WAL中呢?
WAL为HDFS中的文件,MemStore为内存中的一块区域,一提到内存我们就能想到,不安全,上面看到只有在MemStore中数据刷写到StoreFile中时,数据才会落盘,写入到磁盘中,所以当我们在由于系统宕机等情况下,MemStore中数据丢失,还未来得及刷写落盘,HBase会根据存储在HDFS中的WAL文件恢复数据。
2.Flush(刷写)的策略?
下文会进行详细讲解。
)
读:当client端发起一个读操作时,HBase会首先在对应Region的MemStore中查找,如果找不到,则会到BlockCache中查找(BlockCache为HBase的一个优化读的策略,下文会详解),如果还没有,则会到StoreFile(HFile)中查找,读操作完成。
2.Flush简介
Flush为HBase中的一个重要的操作,我们必须配置一个很好的flush的策略,从而保证HBase集群的稳定。
Flush为HBase数据落盘的一个操作,Flush后数据才会持久起来,每一次Flush会在Region中产生一个StoreFile并删除在WAL中的edits。
Flush为Region级,当一个Region中的一个Store中的MemStore达到预设条件后,一个Region中的所有的Sotre.
下面为在Flush一个表时的日志:
2014-10-18 16:58:28,801 INFO [Priority.RpcServer.handler=1,port=60020] regionserver.HRegionServer: Flushing t1,,1413622522846.58fd75078b4a47b8c6a20705f23209b7.
2014-10-18 16:58:28,816 DEBUG [Priority.RpcServer.handler=1,port=60020] regionserver.HRegion: Started memstore flush for t1,,1413622522846.58fd75078b4a47b8c6a20705f23209b7., current region memstore size 168
2014-10-18 16:58:29,457 INFO [Priority.RpcServer.handler=1,port=60020] regionserver.DefaultStoreFlusher: Flushed, sequenceid=3, memsize=168, hasBloomFilter=true, into tmp file hdfs://beh/hbase/data/default/t1/58fd75078b4a47b8c6a20705f23209b7/.tmp/6ad49d65c8b94b678bab3c892bdb0d03
2014-10-18 16:58:29,733 DEBUG [Priority.RpcServer.handler=1,port=60020] regionserver.HRegionFileSystem: Committing store file hdfs://beh/hbase/data/default/t1/58fd75078b4a47b8c6a20705f23209b7/.tmp/6ad49d65c8b94b678bab3c892bdb0d03 as hdfs://beh/hbase/data/default/t1/58fd75078b4a47b8c6a20705f23209b7/cf/6ad49d65c8b94b678bab3c892bdb0d03
2014-10-18 16:58:29,838 INFO [Priority.RpcServer.handler=1,port=60020] regionserver.HStore: Added hdfs://beh/hbase/data/default/t1/58fd75078b4a47b8c6a20705f23209b7/cf/6ad49d65c8b94b678bab3c892bdb0d03, entries=1, sequenceid=3, filesize=1021
2014-10-18 16:58:29,879 INFO [Priority.RpcServer.handler=1,port=60020] regionserver.HRegion: Finished memstore flush of ~168/168, currentsize=0/0 for region t1,,1413622522846.58fd75078b4a47b8c6a20705f23209b7. in 1063ms, sequenceid=3, compaction requested=false
可以看出,先将MemStore flush到.tmp下,然后移动到region目录下对应的columnFamily下。
另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。