Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÉîÈëÀí½âHBaseµÄϵͳ¼Ü¹¹
 
  2894  次浏览      30
 2018-10-19
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚ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¡£

   
2894 ´Îä¯ÀÀ       30
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ