±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn£¬±¾ÎÄÖ÷Òª½éÉÜÁËHBaseµÄÓÅȱµã¡¢HBaseµÄд²Ù×÷²½Öè¡¢RegionµÄ·Ö¸î¡¢HBaseµÄÒì³£»Ö¸´µÈ·½Ãæ¡£ |
|
HBaseµÄ¹¹³É
ÎïÀíÉÏÀ´Ëµ£¬HBaseÊÇÓÉÈýÖÖÀàÐ͵ķþÎñÆ÷ÒÔÖ÷´Óģʽ¹¹³ÉµÄ¡£ÕâÈýÖÖ·þÎñÆ÷·Ö±ðÊÇ£ºRegion server£¬HBase
HMaster£¬ZooKeeper¡£
ÆäÖÐRegion server¸ºÔðÊý¾ÝµÄ¶Áд·þÎñ¡£Óû§Í¨¹ý¹µÍ¨Region serverÀ´ÊµÏÖ¶ÔÊý¾ÝµÄ·ÃÎÊ¡£
HBase HMaster¸ºÔðRegionµÄ·ÖÅä¼°Êý¾Ý¿âµÄ´´½¨ºÍɾ³ýµÈ²Ù×÷¡£
ZooKeeper×÷ΪHDFSµÄÒ»²¿·Ö£¬¸ºÔðά»¤¼¯ÈºµÄ״̬£¨Ä³Ì¨·þÎñÆ÷ÊÇ·ñÔÚÏߣ¬·þÎñÆ÷Ö®¼äÊý¾ÝµÄͬ²½²Ù×÷¼°masterµÄÑ¡¾ÙµÈ£©¡£
ÁíÍ⣬Hadoop DataNode¸ºÔð´æ´¢ËùÓÐRegion ServerËù¹ÜÀíµÄÊý¾Ý¡£HBaseÖеÄËùÓÐÊý¾Ý¶¼ÊÇÒÔHDFSÎļþµÄÐÎʽ´æ´¢µÄ¡£³öÓÚʹRegion
serverËù¹ÜÀíµÄÊý¾Ý¸ü¼Ó±¾µØ»¯µÄ¿¼ÂÇ£¬Region serverÊǸù¾ÝDataNode·Ö²¼µÄ¡£HBaseµÄÊý¾ÝÔÚдÈëµÄʱºò¶¼´æ´¢ÔÚ±¾µØ¡£µ«µ±Ä³Ò»¸öregion±»ÒƳý»ò±»ÖØÐ·ÖÅäµÄʱºò£¬¾Í¿ÉÄܲúÉúÊý¾Ý²»ÔÚ±¾µØµÄÇé¿ö¡£ÕâÖÖÇé¿öÖ»ÓÐÔÚËùνµÄcompactionÖ®ºó²ÅÄܽâ¾ö¡£
NameNode¸ºÔðά»¤¹¹³ÉÎļþµÄËùÓÐÎïÀíÊý¾Ý¿éµÄÔªÐÅÏ¢£¨metadata£©¡£
HBase½á¹¹ÈçÏÂͼËùʾ£º

Regions
HBaseÖеıíÊǸù¾Ýrow keyµÄֵˮƽ·Ö¸î³ÉËùνµÄregionµÄ¡£Ò»¸öregion°üº¬±íÖÐËùÓÐrow
keyλÓÚregionµÄÆðʼ¼üÖµºÍ½áÊø¼üÖµÖ®¼äµÄÐС£¼¯ÈºÖиºÔð¹ÜÀíRegionµÄ½áµã½Ð×öRegion
server¡£Region server¸ºÔðÊý¾ÝµÄ¶Áд¡£Ã¿Ò»¸öRegion server´óÔ¼¿ÉÒÔ¹ÜÀí1000¸öregion¡£RegionµÄ½á¹¹ÈçÏÂͼËùʾ£º

HBaseµÄHMaster
HMaster¸ºÔðregionµÄ·ÖÅ䣬Êý¾Ý¿âµÄ´´½¨ºÍɾ³ý²Ù×÷¡£
¾ßÌåÀ´Ëµ£¬HMasterµÄÖ°Ôð°üÀ¨£º
µ÷¿ØRegion serverµÄ¹¤×÷
ÔÚ¼¯ÈºÆô¶¯µÄʱºò·ÖÅäregion£¬¸ù¾Ý»Ö¸´·þÎñ»òÕ߸ºÔؾùºâµÄÐèÒªÖØÐ·ÖÅäregion¡£
¼à¿Ø¼¯ÈºÖеÄRegion serverµÄ¹¤×÷״̬¡££¨Í¨¹ý¼àÌýzookeeper¶ÔÓÚephemeral
node״̬µÄ֪ͨ£©¡£
¹ÜÀíÊý¾Ý¿â
Ìṩ´´½¨£¬É¾³ý»òÕ߸üбí¸ñµÄ½Ó¿Ú¡£
HMasterµÄ¹¤×÷ÈçÏÂͼËùʾ£º

ZooKeeper
HBaseÀûÓÃZooKeeperά»¤¼¯ÈºÖзþÎñÆ÷µÄ״̬²¢Ðµ÷·Ö²¼Ê½ÏµÍ³µÄ¹¤×÷¡£ZooKeeperά»¤·þÎñÆ÷ÊÇ·ñ´æ»î£¬ÊÇ·ñ¿É·ÃÎʵÄ״̬²¢Ìṩ·þÎñÆ÷¹ÊÕÏ/å´»úµÄ֪ͨ¡£ZooKeeperͬʱ»¹Ê¹ÓÃÒ»ÖÂÐÔËã·¨À´±£Ö¤·þÎñÆ÷Ö®¼äµÄͬ²½¡£Í¬Ê±Ò²¸ºÔðMasterÑ¡¾ÙµÄ¹¤×÷¡£ÐèҪעÒâµÄÊÇÒª±£Ö¤Á¼ºÃµÄÒ»ÖÂÐÔ¼°Ë³ÀûµÄMasterÑ¡¾Ù£¬¼¯ÈºÖеķþÎñÆ÷ÊýÄ¿±ØÐëÊÇÆæÊý¡£ÀýÈçÈý̨»òÎą̊¡£
ZooKeeperµÄ¹¤×÷ÈçÏÂͼËùʾ£º

HBase¸÷×é³É²¿·ÖÖ®¼äµÄºÏ×÷
ZooKeeperÓÃÀ´Ðµ÷·Ö²¼Ê½ÏµÍ³µÄ³ÉÔ±Ö®¼ä¹²ÏíµÄ״̬ÐÅÏ¢¡£Region Server¼°HMasterÒ²ÓëZooKeeperÁ¬½Ó¡£ZooKeeperͨ¹ýÐÄÌøÐÅϢΪ»îÔ¾µÄÁ¬½Óά³ÖÏàÓ¦µÄephemeral
node¡£ÈçÏÂͼËùʾ£º

ÿһ¸öRegion server¶¼ÔÚZooKeeperÖд´½¨ÏàÓ¦µÄephemeral node¡£HMasterͨ¹ý¼à¿ØÕâЩephemeral
nodeµÄ״̬À´·¢ÏÖÕý³£¹¤×÷µÄ»ò·¢Éú¹ÊÕÏÏÂÏßµÄRegion server¡£HMasterÖ®¼äͨ¹ý»¥ÏྺÕù´´½¨ephemeral
node½øÐÐMasterÑ¡¾Ù¡£ZooKeeper»áÑ¡³öÇøÖеÚÒ»¸ö´´½¨³É¹¦µÄ×÷ΪΨһһ¸ö»îÔ¾µÄHMaster¡£»îÔ¾µÄHMasterÏòZooKeeper·¢ËÍÐÄÌøÐÅÏ¢À´±íÃ÷×Ô¼ºÔÚÏßµÄ״̬¡£²»»îÔ¾µÄHMasterÔò¼àÌý»îÔ¾HMasterµÄ״̬£¬²¢ÔÚ»îÔ¾HMaster·¢Éú¹ÊÕÏÏÂÏßÖ®ºóÖØÐÂÑ¡¾Ù£¬´Ó¶øÊµÏÖÁËHBaseµÄ¸ß¿ÉÓÃÐÔ¡£
Èç¹ûRegion server»òÕßHMaster²»Äܳɹ¦ÏòZooKeeper·¢ËÍÐÄÌøÐÅÏ¢£¬ÔòÆäÓëZooKeeperµÄÁ¬½Ó³¬Ê±Ö®ºóÓëÖ®ÏàÓ¦µÄephemeral
node¾Í»á±»É¾³ý¡£¼àÌýZooKeeper״̬µÄÆäËû½Úµã¾Í»áµÃµ½ÏàÓ¦node²»´æÔÚµÄÐÅÏ¢£¬´Ó¶ø½øÐÐÏàÓ¦µÄ´¦Àí¡£»îÔ¾µÄHMaster¼àÌýRegion
ServerµÄÐÅÏ¢£¬²¢ÔÚÆäÏÂÏߺóÖØÐ·ÖÅäRegion serverÀ´»Ö¸´ÏàÓ¦µÄ·þÎñ¡£²»»îÔ¾µÄHMaster¼àÌý»îÔ¾HMasterµÄÐÅÏ¢£¬²¢ÔÚÆðÏÂÏߺóÖØÐÂÑ¡³ö»îÔ¾µÄHMaster½øÐзþÎñ¡£
HBaseµÄµÚÒ»´Î¶Áд
HBaseÖÐÓÐÒ»¸öÌØÊâµÄÆðĿ¼×÷Óõıí¸ñ£¬³ÆÎªMETA table¡£META tableÖб£´æ¼¯ÈºregionµÄµØÖ·ÐÅÏ¢¡£ZooKeeperÖлᱣ´æMETA
tableµÄλÖá£
µ±Óû§µÚÒ»´ÎÏëHBaseÖнøÐжÁ»òд²Ù×÷ʱ£¬ÒÔϲ½Ö轫±»Ö´ÐУº
¿Í»§´ÓZooKeeperÖеõ½±£´æMETA tableµÄRegion serverµÄÐÅÏ¢¡£
¿Í»§Ïò¸ÃRegion server²éѯ¸ºÔð¹ÜÀí×Ô¼ºÏëÒª·ÃÎʵÄrow keyµÄËùÔÚµÄregionµÄRegion
serverµÄµØÖ·¡£¿Í»§»á»º´æÕâÒ»ÐÅÏ¢ÒÔ¼°META tableËùÔÚλÖõÄÐÅÏ¢¡£
¿Í»§Ó븺ÔðÆärowËùÔÚregionµÄRegion ServerͨÐÅ£¬ÊµÏÖ¶Ô¸ÃÐеĶÁд²Ù×÷¡£
ÔÚδÀ´µÄ¶Áд²Ù×÷ÖУ¬¿Í»§»á¸ù¾Ý»º´æÑ°ÕÒÏàÓ¦µÄRegion serverµØÖ·¡£³ý·Ç¸ÃRegion server²»ÔÙ¿É´ï¡£Õâʱ¿Í»§»áÖØÐ·ÃÎÊMETA
table²¢¸üлº´æ¡£ÕâÒ»¹ý³ÌÈçÏÂͼËùʾ£º

HBaseµÄMETA table
META tableÖб£´æÁËHBaseÖÐËùÓÐregionµÄÐÅÏ¢¡£
META tableµÄ¸ñʽÀàËÆÓÚB tree¡£
META tableµÄ½á¹¹ÈçÏ£º
¼ü£ºregionµÄÆðʼ¼ü£¬region id¡£
Öµ£ºRegion server
ÈçÏÂͼËùʾ£º

Region ServerµÄ×é³É
ÔËÐÐÔÚHDFS DataNodeÉϵÄRegion server°üº¬Èçϼ¸¸ö²¿·Ö£º
WAL£º¼ÈWrite Ahead Log¡£WALÊÇHDFS·Ö²¼Ê½ÎļþϵͳÖеÄÒ»¸öÎļþ¡£WALÓÃÀ´´æ´¢ÉÐδдÈëÓÀ¾ÃÐÔ´æ´¢ÇøÖеÄÐÂÊý¾Ý¡£WALÒ²ÓÃÀ´ÔÚ·þÎñÆ÷·¢Éú¹ÊÕÏʱ½øÐÐÊý¾Ý»Ö¸´¡£
Block Cache£ºBlock cacheÊǶÁ»º´æ¡£Block cache½«¾³£±»¶ÁµÄÊý¾Ý´æ´¢ÔÚÄÚ´æÖÐÀ´Ìá¸ß¶ÁÈ¡Êý¾ÝµÄЧÂÊ¡£µ±Block
cacheµÄ¿Õ¼ä±»Õ¼Âúºó£¬ÆäÖб»¶ÁȡƵÂÊ×îµÍµÄÊý¾Ý½«»á±»É±³ö¡£
MemStore£ºMemStoreÊÇд»º´æ¡£ÆäÖд洢ÁË´ÓWALÖÐдÈ뵫ÉÐδдÈëÓ²Å̵ÄÊý¾Ý¡£MemStoreÖеÄÊý¾ÝÔÚдÈëÓ²ÅÌ֮ǰ»áÏȽøÐÐÅÅÐò²Ù×÷¡£Ã¿Ò»¸öregionÖеÄÿһ¸öcolumn
family¶ÔÓ¦Ò»¸öMemStore¡£
Hfiles£ºHfiles´æÔÚÓÚÓ²ÅÌÉÏ£¬¸ù¾ÝÅÅÐòºÅµÄ¼ü´æ´¢Êý¾ÝÐС£
Region serverµÄ½á¹¹ÈçÏÂͼËùʾ£º

HBaseµÄд²Ù×÷²½Öè
²½ÖèÒ»
µ±HBaseµÄÓû§·¢³öÒ»¸öPUTÇëÇóʱ£¨Ò²¾ÍÊÇHBaseµÄдÇëÇ󣩣¬HBase½øÐд¦ÀíµÄµÚÒ»²½Êǽ«Êý¾ÝдÈëHBaseµÄwrite-ahead
log£¨WAL£©ÖС£
WALÎļþÊÇ˳ÐòдÈëµÄ£¬Ò²¾ÍÊÇËùÓÐÐÂÌí¼ÓµÄÊý¾Ý¶¼±»¼ÓÈëWALÎļþµÄĩβ¡£WALÎļþ´æÔÚÓ²ÅÌÉÏ¡£
µ±server³öÏÖÎÊÌâÖ®ºó£¬WAL¿ÉÒÔ±»ÓÃÀ´»Ö¸´ÉÐδдÈëHBaseÖеÄÊý¾Ý£¨ÒòΪWALÊDZ£´æÔÚÓ²ÅÌÉϵģ©¡£
ÈçÏÂͼËùʾ£º

²½Öè¶þ
µ±Êý¾Ý±»³É¹¦Ð´ÈëWALºó£¬HBase½«Êý¾Ý´æÈëMemStore¡£ÕâʱHBase¾Í»á֪ͨÓû§PUT²Ù×÷ÒѾ³É¹¦ÁË¡£
¹ý³ÌÈçÏÂͼËùʾ£º

HBaseµÄMemStore
Memstore´æÔÚÓÚÄÚ´æÖУ¬ÆäÖд洢µÄÊǰ´¼üÅźÃÐòµÄ´ýдÈëÓ²Å̵ÄÊý¾Ý¡£Êý¾ÝÒ²Êǰ´¼üÅźÃÐòдÈëHFileÖеġ£Ã¿Ò»¸öRegionÖеÄÿһ¸öColumn
family¶ÔÓ¦Ò»¸öMemstoreÎļþ¡£Òò´Ë¶ÔÊý¾ÝµÄ¸üÐÂÒ²ÊǶÔÓ¦ÓÚÿһ¸öColumn family¡£
ÈçÏÂͼËùʾ£º

HBase Region Flush
µ±MemStoreÖлýÀÛÁË×ã¹»¶àµÄÊý¾ÝÖ®ºó£¬Õû¸öMemcacheÖеÄÊý¾Ý»á±»Ò»´ÎÐÔдÈëµ½HDFSÀïµÄÒ»¸öеÄHFileÖС£Òò´ËHDFSÖÐÒ»¸öColumn
family¿ÉÄܶÔÓ¦¶à¸öHFile¡£Õâ¸öHFileÖаüº¬ÁËÏàÓ¦µÄcell£¬»òÕß˵¼üÖµµÄʵÀý¡£ÕâЩÎļþËæ×ÅMemStoreÖлýÀ۵ĶÔÊý¾ÝµÄ²Ù×÷±»flushµ½Ó²ÅÌÉ϶ø´´½¨¡£
ÐèҪעÒâµÄÊÇ£¬MemStore´æ´¢ÔÚÄÚ´æÖУ¬ÕâÒ²ÊÇΪʲôHBaseÖÐColumn familyµÄÊýÄ¿ÓÐÏÞÖÆµÄÔÒò¡£Ã¿Ò»¸öColumn
family¶ÔÓ¦Ò»¸öMemStore£¬µ±MemStore´æÂúÖ®ºó£¬ÀïÃæËù»ýÀÛµÄÊý¾Ý¾Í»áÒ»´ÎÐÔflushµ½Ó²ÅÌÉÏ¡£Í¬Ê±£¬ÎªÁËʹHDFSÄܹ»ÖªµÀµ±Ç°ÄÄЩÊý¾ÝÒѾ±»´æ´¢ÁË£¬MemStoreÖл¹±£´æ×îºóÒ»´Îд²Ù×÷µÄÐòºÅ¡£
ÿ¸öHFileÖÐ×î´óµÄÐòºÅ×÷Ϊmeta field´æ´¢ÔÚÆäÖУ¬Õâ¸öÐòºÅ±êÃ÷ÁË֮ǰµÄÊý¾ÝÏòÓ²ÅÌ´æ´¢µÄÖÕÖ¹µãºÍ½ÓÏÂÀ´¼ÌÐø´æ´¢µÄ¿ªÊ¼µã¡£µ±Ò»¸öregionÆô¶¯µÄʱºò£¬Ëü»á¶Áȡÿһ¸öHFileÖеÄÐòºÅÀ´µÃÖªµ±Ç°regionÖÐ×îеIJÙ×÷ÐòºÅÊÇʲô£¨×î´óµÄÐòºÅ£©¡£
ÈçÏÂͼËùʾ£º

HFile
HBaseÖеļüÖµÊý¾Ý¶Ô´æ´¢ÔÚHFileÖС£ÉÏÃæÒѾ˵¹ý£¬µ±MemStoreÖлýÀÛ×ã¹»¶àµÄÊý¾ÝµÄʱºò¾Í»á½«ÆäÖеÄÊý¾ÝÕû¸öдÈëµ½HDFSÖеÄÒ»¸öеÄHFileÖС£ÒòΪMemStoreÖеÄÊý¾ÝÒѾ°´ÕÕ¼üÅźÃÐò£¬ËùÒÔÕâÊÇÒ»¸ö˳ÐòдµÄ¹ý³Ì¡£ÓÉÓÚ˳Ðòд²Ù×÷±ÜÃâÁË´ÅÅÌ´óÁ¿Ñ°Ö·µÄ¹ý³Ì£¬ËùÒÔÕâÒ»²Ù×÷·Ç³£¸ßЧ¡£
ÈçÏÂͼËùʾ£º

HFileµÄ½á¹¹
HFileÖаüº¬ÁËÒ»¸ö¶à²ãË÷Òýϵͳ¡£Õâ¸ö¶à²ãË÷ÒýÊǵÄHBase¿ÉÒÔÔÚ²»¶ÁÈ¡Õû¸öÎļþµÄÇé¿öϲéÕÒÊý¾Ý¡£ÕâÒ»¶à²ãË÷ÒýÀàËÆÓÚÒ»¸öB+Ê÷¡£
¼üÖµ¶Ô¸ù¾Ý¼ü´óСÉýÐòÅÅÁС£
Ë÷ÒýÖ¸Ïò64KB´óСµÄÊý¾Ý¿é¡£
ÿһ¸öÊý¾Ý¿é»¹ÓÐÆäÏàÓ¦µÄÒ¶Ë÷Òý£¨leaf-index£©¡£
ÿһ¸öÊý¾Ý¿éµÄ×îºóÒ»¸ö¼ü×÷ΪÖмäË÷Òý£¨intermediate index£©¡£
¸ùË÷Òý£¨root index£©Ö¸ÏòÖмäË÷Òý¡£
Îļþ½áβָÏòmeta block¡£ÒòΪmeta blockÊÇÔÚÊý¾ÝдÈëÓ²Å̲Ù×÷µÄ½áβдÈë¸ÃÎļþÖеġ£ÎļþµÄ½áβͬʱ»¹°üº¬Ò»Ð©±ðµÄÐÅÏ¢¡£±ÈÈçbloom
filter¼°Ê±¼äÐÅÏ¢¡£Bloom filter¿ÉÒÔ°ïÖúHBase¼ÓËÙÊý¾Ý²éѯµÄËÙ¶È¡£ÒòΪHBase¿ÉÒÔÀûÓÃBloom
filterÌø¹ý²»°üº¬µ±Ç°²éѯµÄ¼üµÄÎļþ¡£Ê±¼äÐÅÏ¢Ôò¿ÉÒÔ°ïÖúHBaseÔÚ²éÑ¯Ê±Ìø¹ý¶Á²Ù×÷ËùÆÚÍûµÄʱ¼äÇøÓòÖ®ÍâµÄÎļþ¡£
ÈçÏÂͼËùʾ£º

HFileµÄË÷Òý
HFileµÄË÷ÒýÔÚHFile±»´ò¿ªÊ±»á±»¶ÁÈ¡µ½ÄÚ´æÖС£ÕâÑù¾Í¿ÉÒÔ±£Ö¤Êý¾Ý¼ìË÷Ö»ÐèÒ»´ÎÓ²Å̲éѯ²Ù×÷¡£
ÈçÏÂͼËùʾ£º

HBaseµÄ¶ÁºÏ²¢£¨Read Merge£©ÒÔ¼°¶Á·Å´ó£¨Read amplification£©
ͨ¹ýÉÏÃæµÄÂÛÊö£¬ÎÒÃÇÒѾ֪µÀÁËHBaseÖжÔÓ¦ÓÚijһÐÐÊý¾ÝµÄcell¿ÉÄÜλÓÚ¶à¸ö²»Í¬µÄÎļþ»ò´æ´¢½éÖÊÖС£±ÈÈçÒѾ´æÈëÓ²Å̵ÄÐÐλÓÚÓ²ÅÌÉϵÄHFileÖУ¬Ð¼ÓÈë»ò¸üеÄÊý¾ÝλÓÚÄÚ´æÖеÄMemStoreÖУ¬×î½ü¶ÁÈ¡¹ýµÄÊý¾ÝÔòλÓÚÄÚ´æÖеÄBlock
cacheÖС£ËùÒÔµ±ÎÒÃǶÁȡijһÐеÄʱºò£¬ÎªÁË·µ»ØÏàÓ¦µÄÐÐÊý¾Ý£¬HBaseÐèÒª¸ù¾ÝBlock cache£¬MemStoreÒÔ¼°Ó²ÅÌÉϵÄHFileÖеÄÊý¾Ý½øÐÐËùνµÄ¶ÁºÏ²¢²Ù×÷¡£
HBase»áÊ×ÏÈ´ÓBlock cache£¨HBaseµÄ¶Á»º´æ£©ÖÐѰÕÒËùÐèµÄÊý¾Ý¡£
½ÓÏÂÀ´£¬HBase»á´ÓMemStoreÖÐѰÕÒÊý¾Ý¡£ÒòΪ×÷ΪHBaseµÄд»º´æ£¬MemStoreÖаüº¬ÁË×îа汾µÄÊý¾Ý¡£
Èç¹ûHBase´ÓBlock cacheºÍMemStoreÖÐûÓÐÕÒµ½ÐÐËù¶ÔÓ¦µÄcellËùÓеÄÊý¾Ý£¬ÏµÍ³»á½Óןù¾ÝË÷ÒýºÍbloom
filter´ÓÏàÓ¦µÄHFileÖжÁȡĿ±êÐеÄcellµÄÊý¾Ý¡£
ÈçÏÂͼËùʾ£º

ÕâÀïÒ»¸öÐèҪעÒâµÄµØ·½ÊÇËùνµÄ¶Á·Å´óЧӦ£¨Read amplification£©¡£¸ù¾ÝǰÎÄËù˵£¬Ò»¸öMemStore¶ÔÓ¦µÄÊý¾Ý¿ÉÄÜ´æ´¢ÓÚ¶à¸ö²»Í¬µÄHFileÖУ¨ÓÉÓÚ¶à´ÎµÄflush£©£¬Òò´ËÔÚ½øÐжÁ²Ù×÷µÄʱºò£¬HBase¿ÉÄÜÐèÒª¶ÁÈ¡¶à¸öHFileÀ´»ñÈ¡ÏëÒªµÄÊý¾Ý¡£Õâ»áÓ°ÏìHBaseµÄÐÔÄܱíÏÖ¡£
ÈçÏÂͼËùʾ£º

HBaseµÄCompaction
Minor Compaction
HBase»á×Ô¶¯Ñ¡È¡Ò»Ð©½ÏСµÄHFile½øÐкϲ¢£¬²¢½«½á¹ûдÈ뼸¸ö½Ï´óµÄHFileÖС£ÕâÒ»¹ý³Ì³ÆÎªMinor
compaction¡£Minor compactionͨ¹ýMerge sortµÄÐÎʽ½«½ÏСµÄÎļþºÏ²¢Îª½Ï´óµÄÎļþ£¬´Ó¶ø¼õÉÙÁË´æ´¢µÄHFileµÄÊýÁ¿£¬ÌáÉýHBaseµÄÐÔÄÜ¡£
ÕâÒ»¹ý³ÌÈçÏÂͼËùʾ£º

Major Compaction
ËùνMajor CompactionÖ¸µÄÊÇHBase½«¶ÔÓ¦ÓÚijһ¸öColumn familyµÄËùÓÐHFileÖØÐÂÕûÀí²¢ºÏ²¢ÎªÒ»¸öHFile£¬²¢ÔÚÕâÒ»¹ý³ÌÖÐɾ³ýÒѾɾ³ý»ò¹ýÆÚµÄcell£¬¸üÐÂÏÖÓÐcellµÄÖµ¡£ÕâÒ»²Ù×÷´ó´óÌáÉý¶ÁµÄЧÂÊ¡£µ«ÊÇÒòΪMajor
compactionÐèÒªÖØÐÂÕûÀíËùÓеÄHFile²¢Ð´ÈëÒ»¸öHFile£¬ÕâÒ»¹ý³Ì°üº¬´óÁ¿µÄÓ²ÅÌI/O²Ù×÷ÒÔ¼°ÍøÂçÊý¾ÝͨÐÅ¡£ÕâÒ»¹ý³ÌÒ²³ÆÎªÐ´·Å´ó£¨Write
amplification£©¡£ÔÚMajor compaction½øÐеĹý³ÌÖУ¬µ±Ç°Region»ù±¾ÊÇ´¦ÓÚ²»¿É·ÃÎʵÄ״̬¡£
Major compaction¿ÉÒÔÅäÖÃÔڹ涨µÄʱ¼ä×Ô¶¯ÔËÐС£Îª±ÜÃâÓ°ÏìÒµÎñ£¬Major compactionÒ»°ã°²ÅÅÔÚÒ¹¼ä»òÖÜÄ©½øÐС£
ÐèҪעÒâµÄÒ»µãÊ£¬Major compaction»á½«µ±Ç°RegionËù·þÎñµÄËùÓÐÔ¶³ÌÊý¾ÝÏÂÔØµ½±¾µØRegion
serverÉÏ¡£ÕâЩԶ³ÌÊý¾Ý¿ÉÄÜÓÉÓÚ·þÎñÆ÷¹ÊÕÏ»òÕ߸ºÔؾùºâµÈÔÒò¶ø´æ´¢ÔÚÓÚÔ¶¶Ë·þÎñÆ÷ÉÏ¡£
ÕâÒ»¹ý³ÌÈçÏÂͼËùʾ£º

RegionµÄ·Ö¸î£¨Region split£©
Ê×ÏÈÎÒÃÇ¿ìËÙ¸´Ï°Ò»ÏÂRegion£º
HBaseÖеıí¸ñ¿ÉÒÔ¸ù¾ÝÐмüˮƽ·Ö¸îΪһ¸ö»ò¼¸¸öregion¡£Ã¿¸öregionÖаüº¬ÁËÒ»¶Î´¦ÓÚijһÆðʼ¼üÖµºÍÖÕÖ¹¼üÖµÖ®¼äµÄÁ¬ÐøµÄÐмü¡£
ÿһ¸öregionµÄĬÈÏ´óСΪ1GB¡£
ÏàÓ¦µÄRegion server¸ºÔðÏò¿Í»§Ìṩ·ÃÎÊijһregionÖеÄÊý¾ÝµÄ·þÎñ¡£
ÿһ¸öRegion serverÄܹ»¹ÜÀí´óÔ¼1000¸öregion£¨ÕâЩregion¿ÉÄÜÀ´×Ôͬһ¸ö±í¸ñ£¬Ò²¿ÉÄÜÀ´×Ô²»Í¬µÄ±í¸ñ£©¡£
ÈçÏÂͼËùʾ£º

ÿһ¸ö±í¸ñ×î³õ¶¼¶ÔÓ¦ÓÚÒ»¸öregion¡£Ëæ×ÅregionÖÐÊý¾ÝÁ¿µÄÔö¼Ó£¬region»á±»·Ö¸î³ÉÁ½¸ö×Óregion¡£Ã¿Ò»¸ö×ÓregionÖд洢ÔÀ´Ò»°ëµÄÊý¾Ý¡£Í¬Ê±Region
server»á֪ͨHMasterÕâÒ»·Ö¸î¡£³öÓÚ¸ºÔؾùºâµÄÔÒò£¬HMaster¿ÉÄܻὫвúÉúµÄregion·ÖÅ䏸ÆäËûµÄRegion
server¹ÜÀí£¨ÕâÒ²¾Íµ¼ÖÂÁËRegion server·þÎñÔ¶¶ËÊý¾ÝµÄÇé¿öµÄ²úÉú£©¡£
ÈçÏÂͼËùʾ£º

¶Á²Ù×÷µÄ¸ºÔؾùºâ£¨Read Load Balancing£©
RegionµÄ·Ö¸î×î³õÊÇÔÚRegion server±¾µØ·¢ÉúµÄ¡£µ«ÊdzöÓÚ¸ºÔؾùºâµÄÔÒò£¬HMaster¿ÉÄܻὫвúÉúµÄregion·ÖÅ䏸ÆäËûµÄRegion
server½øÐйÜÀí¡£ÕâÒ²¾Íµ¼ÖÂÁËRegion server¹ÜÀí´æ´¢ÔÚÔ¶¶Ë·þÎñÆ÷ÉϵÄregionÇé¿öµÄ²úÉú¡£ÕâÒ»Çé¿ö»á³ÖÐøÖÁÏÂÒ»´ÎMajor
compaction֮ǰ¡£ÈçÉÏÎÄËùʾ£¬Major compaction»á½«Èκβ»ÔÚ±¾µØµÄÊý¾ÝÏÂÔØÖÁ±¾µØ¡£
Ò²¾ÍÊÇ˵£¬HBaseÖеÄÊý¾ÝÔÚдÈëʱ×ÜÊÇ´æ´¢ÔÚ±¾µØµÄ¡£µ«ÊÇËæ×ÅregionµÄÖØÐ·ÖÅ䣨ÓÉÓÚ¸ºÔؾùºâ»òÊý¾Ý»Ö¸´£©£¬Êý¾ÝÏà¶ÔÓÚRegion
server²»ÔÙÒ»¶¨ÊDZ¾µØµÄ¡£ÕâÖÖÇé¿ö»áÔÚMajor compactionºóµÃµ½½â¾ö¡£
ÈçÏÂͼËùʾ£º

HDFSµÄÊý¾Ý±¸·Ý£¨Data Replication£©
HDFSÖÐËùÓеÄÊý¾Ý¶Áд²Ù×÷¶¼ÊÇÕë¶ÔÖ÷½Úµã½øÐеġ£HDFS»á×Ô¶¯±¸·ÝWALºÍHFile¡£HBaseÒÔÀ´HDFSÀ´Ìṩ¿É¿¿µÄ°²È«µÄÊý¾Ý´æ´¢¡£µ±Êý¾Ý±»Ð´ÈëHDFS±¾µØÊ±£¬ÁíÍâÁ½·Ý±¸·ÝÊý¾Ý»á·Ö±ð´æ´¢ÔÚÁíÍâÁ½Ì¨·þÎñÆ÷ÉÏ¡£
ÈçÏÂͼËùʾ£º

HBaseµÄÒì³£»Ö¸´£¨Crash Recovery£©
WALÎļþºÍHFile¶¼´æ´¢ÓÚÓ²ÅÌÉÏÇÒ´æÔÚ±¸·Ý£¬Òò´Ë»Ö¸´ËüÃÇÊǷdz£ÈÝÒ׵ġ£ÄÇôHBaseÈçºÎ»Ö¸´Î»ÓÚÄÚ´æÖеÄMemStoreÄØ£¿

µ±Region serverå´»úµÄʱºò£¬ÆäËù¹ÜÀíµÄregionÔÚÕâÒ»¹ÊÕϱ»·¢ÏÖ²¢ÐÞ¸´Ö®Ç°ÊDz»¿É·ÃÎʵġ£ZooKeeper¸ºÔð¸ù¾Ý·þÎñÆ÷µÄÐÄÌøÐÅÏ¢À´¼à¿Ø·þÎñÆ÷µÄ¹¤×÷״̬¡£µ±Ä³Ò»·þÎñÆ÷ÏÂÏßÖ®ºó£¬ZooKeeper»á·¢Ë͸÷þÎñÆ÷ÏÂÏßµÄ֪ͨ¡£HMasterÊÕµ½Õâһ֪֮ͨºó»á½øÐлָ´²Ù×÷¡£
HMaster»áÊ×ÏȽ«å´»úµÄRegion serverËù¹ÜÀíµÄregion·ÖÅ䏸ÆäËûÈÔÔÚ¹¤×÷µÄ»îÔ¾µÄRegion
server¡£È»ºóHMaster»á½«¸Ã·þÎñÆ÷µÄWAL·Ö¸î²¢·Ö±ð·ÖÅ䏸ÏàÓ¦µÄзÖÅäµÄRegion server½øÐд洢¡£ÐµÄRegion
server»á¶ÁÈ¡²¢Ë³ÐòÖ´ÐÐWALÖеÄÊý¾Ý²Ù×÷£¬´Ó¶øÖØÐ´´½¨ÏàÓ¦µÄMemStore¡£
ÈçÏÂͼËùʾ£º

Êý¾Ý»Ö¸´£¨Data Recovery£©
WALÎļþÖ®Öд洢ÁËһϵÁÐÊý¾Ý²Ù×÷¡£Ã¿Ò»¸ö²Ù×÷¶ÔÓ¦WALÖеÄÒ»ÐС£ÐµIJÙ×÷»á˳ÐòдÔÚWALÎļþµÄĩβ¡£
ÄÇôµ±MemStoreÖд洢µÄÊý¾ÝÒòΪijÖÖÔÒò¶ªÊ§Ö®ºóÓ¦¸ÃÈçºÎ»Ö¸´ÄØ£¿HBaseÒÔÀ´WAL¶ÔÆä½øÐлָ´¡£ÏàÓ¦µÄRegion
server»á˳Ðò¶ÁÈ¡WAL²¢Ö´ÐÐÆäÖеIJÙ×÷¡£ÕâЩÊý¾Ý±»´æÈëÄÚ´æÖе±Ç°µÄMemStore²¢ÅÅÐò¡£×îÖÕµ±MemStore´æÂúÖ®ºó£¬ÕâЩÊý¾Ý±»flushµ½Ó²ÅÌÉÏ¡£
ÈçÏÂͼËùʾ£º

Apache HBaseµÄÓÅȱµã
Óŵã
ǿһÖÂÐÔÄ£ÐÍ
µ±Ò»¸öд²Ù×÷µÃµ½È·ÈÏʱ£¬ËùÓеÄÓû§¶¼½«¶Áµ½Í¬Ò»¸öÖµ¡£
¿É¿¿µÄ×Ô¶¯À©Õ¹
µ±regionÖеÄÊý¾ÝÌ«¶àʱ»á×Ô¶¯·Ö¸î¡£
ʹÓÃHDFS·Ö²¼´æ´¢²¢±¸·ÝÊý¾Ý¡£
ÄÚÖõĻָ´¹¦ÄÜ
ʹÓÃWAL½øÐÐÊý¾Ý»Ö¸´¡£
ÓëHadoop¼¯³ÉÁ¼ºÃ
MapReduceÔÚHBaseÉϷdz£Ö±¹Û¡£
ȱµã
WAL»Ø¸´½ÏÂý¡£
Òì³£»Ö¸´¸´ÔÓÇÒµÍЧ¡£
ÐèÒª½øÐÐÕ¼ÓôóÁ¿×ÊÔ´ºÍ´óÁ¿I/O²Ù×÷µÄMajor compaction¡£ |