çä¸ä¸ä¸å¾å°±ç¥éäºå§ã
对äºç¨æ·çä¸ä¸ªè¡¨æ¯å¦Blogï¼å¯è½å æ¬æ°æ®å¤è¾¾äº¿çº§
该表çæ°æ®å¯ä»¥åå¸å¨å¤ä¸ªHRegion
èæ¯ä¸ªHRegionä¿å表çæä¸æ®µæ°æ®
UserTable (1)------HRegion(*)
对äºå¤ä¸ªçHRegionåæHRegion Serveræ¥ç»´æ¤
æ¯ä¸ªHRegionå¯ä¸å¯¹åºä¸ä¸ªHRegion Server
éè¿HRegion Serveræè½å¤è®¿é®å¯¹åºçHRegion
èä¸ä¸ªHRegionä»ç©çä¸å为å¦ä¸å 个é¨å
HMemCache(å åç¼å),HLog(æ¥å¿),HStore(æä¹ ååå¨)
ä¸ï¼HBaseçæ°æ®æä½æµç¨
a:读æ°æ®
ä¼å ä»HMemcacheä¸è¯»åï¼å¦æ没æ读å°ä»HStoreä¸è¯»å
å½ç¶è¿ééè¦å ³æ³¨ï¼è¯»ãååæ¥çé®é¢ï¼HBaseå¦ä½è§£å³ï¼è¿æ第ä¸ä¸ªå®¢æ·ç«¯è¯»åæ°æ®ä»HStore读ååï¼æ¯å¦ä¼å è½½å°HMemCacheä¸ï¼åç»ç客æ·ç«¯ï¼è¯»åæ¶ç´æ¥ä»HMemCacheä¸è¯»åï¼ä»¥åMemCacheä¸æ°æ®çè¿æåç®æ³
b:åæ°æ®
HBase åå ¥æ°æ®ä¼åå°HMemcache åHlog ä¸ï¼HMemcache 建ç«ç¼åï¼Hlog åæ¥HmemcacheåHstore çäºå¡æ¥å¿ï¼åèµ·Flush Cache æ¶ï¼æ°æ®æä¹ åå°Hstore ä¸ï¼å¹¶æ¸ 空HMemecacheã
æ¤å¤éè¦å ³æ³¨ï¼
HBaseåæ°æ®ï¼é¦å åå ¥Memcacheï¼å¹¶è®¡å ¥Logä¸ï¼æååå ¥HStoreä¸ï¼å¦æå¨åå ¥HStoreæ¯åçç³»ç»å¼å¸¸ï¼å°±å¯ä»¥ä»Logä¸æ¢å¤æ°æ®ï¼éæ°åå ¥HStoreä¸ãã该æºå¶è·BigTableä¸çSSTabl,MemTableåCommitLogçä½ç¨ä¸æ ·ã
c:客æ·ç«¯æä½æ°æ®æµç¨
客æ·ç«¯è®¿é®è¿äºæ°æ®çæ¶åéè¿Hmaster ï¼æ¯ä¸ªHregion æå¡å¨é½ä¼åHmaster æå¡å¨ä¿æä¸ä¸ªé¿è¿æ¥ï¼Hmaster æ¯HBase åå¸å¼ç³»ç»ä¸ç管çè ï¼ä»ç主è¦ä»»å¡å°±æ¯è¦åè¯æ¯ä¸ªHregion æå¡å¨å®è¦ç»´æ¤åªäºHregionãç¨æ·çè¿äºé½æ°æ®å¯ä»¥ä¿åå¨Hadoop åå¸å¼æ件系ç»ä¸
å¦æä¸ä¸ªHMasteræäºï¼Secondary NameNodeä¼èªå¨æ¿ä»£HMaster
ä½æ¯å¯¹åºç失æ转åçæçè¿éè¦è¿ä¸æ¥å°è¯ï¼å¯è½ä¾èµZooKeeperçç¸å ³é 置项
存在regionserver当中!!!
Region Server存储了三部分信息:
HFile,数据文件,存储在HDFS上
Write-Ahead Log,重做日志,类似于Oracle的Redo Log和MySQL的Binlog,也存在HDFS上。
Memstore,内存中的数据缓存,类似Oracle的Buffer Cache。
HBase的HRegion文件和HLog文件都存储在HDFS中的(一般有多份),RegionServer挂了,并不是数据文件就丢失了。RegionServer挂了后,HRegion和HLog都还在,Master重新分配Region,并读取Hlog进行恢复。
Region Server fail时重新分配Region,其中HFile和WAL都存储在HDFS上,当Region Server fail的时候,数据是不会丢失的,丢失的只是Memstore中尚没有写入HFile的部分。