±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚÍøÂ磬±¾ÎÄÖ÷Òª´ÓHbaseµÄÊý¾ÝÄ£ÐÍ¡¢ÏµÍ³¼Ü¹¹¡¢ÔËάºÍ¸ß¿ÉÓõÈÁù¸ö·½Ãæ½éÉÜÁËHbaseÔÀí¡£ |
|
Ò»¡¢HBase¼ò½é
HbaseÊÇʲô
HBaseÊÇÒ»ÖÖ¹¹½¨ÔÚHDFSÖ®Éϵķֲ¼Ê½¡¢ÃæÏòÁС¢¶à°æ±¾¡¢·Ç¹ØÏµÐ͵ÄÊý¾Ý¿â¡£ÔÚÐèҪʵʱ¶Áд¡¢Ëæ»ú·ÃÎʳ¬´ó¹æÄ£Êý¾Ý¼¯Ê±£¬¿ÉÒÔʹÓÃHBase¡£HBase
ÊÇGoogle Bigtable µÄ¿ªÔ´ÊµÏÖ¡£
HBaseµÄÌØµã
´ó£ºÒ»¸ö±í¿ÉÒÔÓÐÉÏÒÚÐУ¬ÉϰÙÍòÁС£
ÃæÏòÁУºÃæÏòÁУ¨×飩µÄ´æ´¢ºÍȨÏÞ¿ØÖÆ£¬ÁУ¨×飩¶ÀÁ¢¼ìË÷¡£
Ï¡Ê裺¶ÔÓÚΪ¿Õ£¨NULL£©µÄÁУ¬²¢²»Õ¼Óô洢¿Õ¼ä£¬Òò´Ë£¬±í¿ÉÒÔÉè¼ÆµÄ·Ç³£Ï¡Êè¡£
ÎÞģʽ£ºÃ¿Ò»Ðж¼ÓÐÒ»¸ö¿ÉÒÔÅÅÐòµÄÖ÷¼üºÍÈÎÒâ¶àµÄÁУ¬ÁпÉÒÔ¸ù¾ÝÐèÒª¶¯Ì¬Ôö¼Ó£¬Í¬Ò»ÕűíÖв»Í¬µÄÐпÉÒÔÓнØÈ»²»Í¬µÄÁС£
Êý¾Ý¶à°æ±¾£ºÃ¿¸öµ¥ÔªÖеÄÊý¾Ý¿ÉÒÔÓжà¸ö°æ±¾£¬Ä¬ÈÏÇé¿öÏ£¬°æ±¾ºÅ×Ô¶¯·ÖÅ䣬°æ±¾ºÅ¾ÍÊǵ¥Ôª¸ñ²åÈëʱµÄʱ¼ä´Á¡£
Êý¾ÝÀàÐ͵¥Ò»£ºHBaseÖеÄÊý¾Ý¶¼ÊÇ×Ö·û´®£¬Ã»ÓÐÀàÐÍ£¬´æ´¢ÔÚhbaseÉϵͼÊÇ×Ö½ÚÊý×é¡£
¶þ¡¢HBaseÊý¾ÝÄ£ÐÍ
HBase ÒÔ±íµÄÐÎʽ´æ´¢Êý¾Ý¡£±íÓÉÐкÍÁÐ×é³É¡£Áл®·ÖΪÈô¸É¸öÁÐ×壨row
family£©£¬ÈçÏÂͼËùʾ¡£

1) HBaseµÄÂß¼Êý¾ÝÄ£ÐÍ

2) HBaseµÄÎïÀíÊý¾ÝÄ£ÐÍ

Âß¼Êý¾ÝÄ£ÐÍÖпհ×cellÔÚÎïÀíÉÏÊDz»´æ´¢µÄ£¬Òò´ËÈôÒ»¸öÇëÇóΪҪ»ñÈ¡t8ʱ¼äµÄcontents:html£¬ËûµÄ½á¹û¾ÍÊǿա£ÏàËÆµÄ£¬ÈôÇëÇóΪ»ñÈ¡t9ʱ¼äµÄanchor:my.look.ca£¬½á¹ûÒ²Êǿա£µ«ÊÇ£¬Èç¹û²»Ö¸Ã÷ʱ¼ä£¬½«»á·µ»Ø×îÐÂʱ¼äµÄÐУ¬Ã¿¸ö×îÐµĶ¼»á·µ»Ø
Row Key
Óë NoSQL Êý¾Ý¿âÒ»Ñù£¬Row Key ÊÇÓÃÀ´¼ìË÷¼Ç¼µÄÖ÷¼ü¡£¼¸ÖÖ·ÃÎÊ HBase table
ÖеÄÐз½Ê½£º
1)ͨ¹ýµ¥¸ö Row Key ·ÃÎÊ¡£
2)ͨ¹ý Row Key µÄ range È«±íɨÃè¡£
3)Row Key ¿ÉÒÔʹÈÎÒâ×Ö·û´®£¨×î´ó³¤¶ÈÊÇ64KB£¬Êµ¼ÊÓ¦ÓÃÖ㤶ÈÒ»°ãΪ 10 ~ 100bytes£©£¬ÔÚHBase
ÄÚ²¿£¬Row Key ±£´æÎª×Ö½ÚÊý×é¡£
ÁÐ×å
HBase ±íÖеÄÿ¸öÁж¼¹éÊôÓÚij¸öÁÐ×å¡£ÁÐ×åÊDZíµÄ Schema µÄÒ»²¿·Ö£¨¶øÁв»ÊÇ£©£¬±ØÐëÔÚʹÓñí֮ǰ¶¨Òå¡£ÁÐÃû¶¼ÒÔÁÐ×å×÷Ϊǰ׺£¬ÀýÈç
courses:history¡¢courses:math ¶¼ÊôÓÚ courses Õâ¸öÁÐ×å¡£
·ÃÎÊ¿ØÖÆ¡¢´ÅÅ̺ÍÄÚ´æµÄʹÓÃͳ¼Æ¶¼ÊÇÔÚÁÐ×å²ãÃæ½øÐеġ£ÔÚʵ¼ÊÓ¦ÓÃÖУ¬ÁÐ×åÉϵĿØÖÆÈ¨ÏÞÄܰïÖúÎÒÃǹÜÀí²»Í¬ÀàÐ͵ÄÓ¦Óã¬
ÀýÈ磬ÔÊÐíһЩӦÓÿÉÒÔÌí¼ÓеĻù±¾Êý¾Ý¡¢Ò»Ð©Ó¦ÓÿÉÒÔ¶ÁÈ¡»ù±¾Êý¾Ý²¢´´½¨¼Ì³ÐµÄÁÐ×å¡¢ һЩӦÓÃÔòÖ»ÔÊÐíä¯ÀÀÊý¾Ý£¨ÉõÖÁ¿ÉÄÜÒòΪÒþ˽µÄÔÒò²»ÄÜä¯ÀÀËùÓÐÊý¾Ý£©¡£
Cell
ʱ¼ä´ÁHBase ÖÐͨ¹ý Row ºÍ Columns È·¶¨µÄÒ»¸ö´æ´¢µ¥Ôª³ÆÎª Cell¡£Ã¿¸ö Cell
¶¼±£´æ×Åͬһ·ÝÊý¾ÝµÄ¶à¸ö°æ±¾¡£ °æ±¾Í¨¹ýʱ¼ä´ÁÀ´Ë÷Òý£¬Ê±¼ä´ÁµÄÀàÐÍÊÇ 64 λÕûÐÍ¡£Ê±¼ä´Á¿ÉÒÔÓÉHBase£¨ÔÚÊý¾ÝдÈëʱ×Ô¶¯£©¸³Öµ£¬
´Ëʱʱ¼ä´ÁÊǾ«È·µ½ºÁÃëµÄµ±Ç°ÏµÍ³Ê±¼ä¡£Ê±¼ä´ÁÒ² ¿ÉÒÔÓɿͻ§ÏÔʾ¸³Öµ¡£Èç¹ûÓ¦ÓóÌÐòÒª±ÜÃâÊý¾Ý°æ±¾³åÍ»£¬¾Í±ØÐë×Ô¼ºÉú³É¾ßÓÐΨһÐÔµÄʱ¼ä´Á¡£Ã¿¸ö
Cell ÖУ¬²»Í¬°æ±¾µÄÊý¾Ý°´ÕÕʱ¼äµ¹ÐòÅÅÐò£¬¼´×îеÄÊý¾ÝÅÅÔÚ×îÇ°Ãæ¡£
ΪÁ˱ÜÃâÊý¾Ý´æÔÚ¹ý¶à°æ±¾Ôì³ÉµÄ¹ÜÀí£¨°üÀ¨´æ´¢ºÍË÷Òý£©¸ºµ££¬HBase ÌṩÁËÁ½ÖÖÊý¾Ý°æ±¾»ØÊÕ·½Ê½¡£
Ò»ÊDZ£´æÊý¾ÝµÄ×îºó n ¸ö°æ±¾£¬¶þÊDZ£´æ×î½üÒ»¶Îʱ¼äÄڵİ汾£¨±ÈÈç×î½üÆßÌ죩¡£Óû§¿ÉÒÔÕë¶Ôÿ¸öÁÐ×å½øÐÐÉèÖá£
3) HBaseÎïÀí´æ´¢
Table ÔÚÐеķ½ÏòÉÏ·Ö¸îΪ¶à¸öHRegion£¬Ã¿¸öHRegion·ÖÉ¢ÔÚ²»Í¬µÄRegionServerÖС£

ÿ¸öHRegionÓɶà¸öStore¹¹³É£¬Ã¿¸öStoreÓÉÒ»¸ömemStoreºÍ0»ò¶à¸öStoreFile×é³É£¬Ã¿¸öStore±£´æÒ»¸öColumns
Family

Èý¡¢HBaseϵͳ¼Ü¹¹
1) HBase¼Ü¹¹Í¼

´ÓHBaseµÄ¼Ü¹¹Í¼ÉÏ¿ÉÒÔ¿´³ö£¬HBaseÖеÄ×é¼þ°üÀ¨Client¡¢Zookeeper¡¢HMaster¡¢HRegionServer¡¢HRegion¡¢Store¡¢MemStore¡¢StoreFile¡¢HFile¡¢HLogµÈ£¬½ÓÏÂÀ´½éÉÜËûÃǵÄ×÷Óá£
HBaseÖеÄÿÕÅ±í¶¼Í¨¹ýÐмü°´ÕÕÒ»¶¨µÄ·¶Î§±»·Ö¸î³É¶à¸ö×Ó±í£¨HRegion£©£¬Ä¬ÈÏÒ»¸öHRegion³¬¹ý256M¾ÍÒª±»·Ö¸î³ÉÁ½¸ö£¬Õâ¸ö¹ý³ÌÓÉHRegionServer¹ÜÀí£¬¶øHRegionµÄ·ÖÅäÓÉHMaster¹ÜÀí¡£
Client
°üº¬·ÃÎÊHBaseµÄ½Ó¿Ú£¬²¢Î¬»¤cacheÀ´¼Ó¿ì¶ÔHBaseµÄ·ÃÎÊ¡£
Zookeeper
HBaseÒÀÀµZookeeper£¬Ä¬ÈÏÇé¿öÏÂHBase¹ÜÀíZookeeperʵÀý(Æô¶¯»ò¹Ø±ÕZookeeper),MasterÓëRegionServersÆô¶¯Ê±»áÏòZookeeper×¢²á¡£
±£Ö¤ÈκÎʱºò£¬¼¯ÈºÖÐÖ»ÓÐÒ»¸ömaster
ʵʱ¼à¿ØRegion serverµÄÉÏÏߺÍÏÂÏßÐÅÏ¢¡£²¢ÊµÊ±Í¨Öª¸ømaster
´æ´¢HBaseµÄschemaºÍtableÔªÊý¾Ý
HMaster
ΪRegion server·ÖÅäregion
¸ºÔðRegion serverµÄ¸ºÔؾùºâ
·¢ÏÖʧЧµÄRegion server²¢ÖØÐ·ÖÅäÆäÉϵÄregion¡£
´¦Àíschema¸üÐÂÇëÇó¡£
HRegionServer
ά»¤master·ÖÅ䏸ËûµÄregion£¬´¦Àí¶ÔÕâЩregionµÄioÇëÇó¡£
¸ºÔðÇзÖÕýÔÚÔËÐйý³ÌÖбäµÄ¹ý´óµÄregion¡£
×¢Ò⣺client·ÃÎÊhbaseÉϵÄÊý¾Ýʱ²»ÐèÒªmasterµÄ²ÎÓ룬ÒòΪÊý¾ÝѰַ·ÃÎÊzookeeperºÍregion
server£¬¶øÊý¾Ý¶Áд·ÃÎÊregion server¡£master½ö½öά»¤tableºÍregionµÄÔªÊý¾ÝÐÅÏ¢£¬¶øtableµÄÔªÊý¾ÝÐÅÏ¢±£´æÔÚzookeeperÉÏ£¬Òò´Ëmaster¸ºÔغܵ͡£
HRegion
tableÔÚÐеķ½ÏòÉÏ·Ö¸ôΪ¶à¸öRegion¡£RegionÊÇHBaseÖзֲ¼Ê½´æ´¢ºÍ¸ºÔؾùºâµÄ×îСµ¥Ôª£¬¼´²»Í¬µÄregion¿ÉÒÔ·Ö±ðÔÚ²»Í¬µÄRegion
ServerÉÏ£¬µ«Í¬Ò»¸öRegionÊDz»»á²ð·Öµ½¶à¸öserverÉÏ¡£
Region°´´óС·Ö¸ô£¬Ã¿¸ö±íÒ»°ãÊÇÖ»ÓÐÒ»¸öregion¡£Ëæ×ÅÊý¾Ý²»¶Ï²åÈë±í£¬region²»¶ÏÔö´ó£¬µ±regionµÄij¸öÁÐ×å´ïµ½Ò»¸öãÐֵʱ¾Í»á·Ö³ÉÁ½¸öеÄregion¡£
ÿ¸öregionÓÉÒÔÏÂÐÅÏ¢±êʶ£º< ±íÃû,startRowkey,´´½¨Ê±¼ä>
ÓÉĿ¼±í(-ROOT-ºÍ.META.)¼Ç¼¸ÃregionµÄendRowkey
Store
ÿһ¸öregionÓÉÒ»¸ö»ò¶à¸östore×é³É£¬ÖÁÉÙÊÇÒ»¸östore£¬hbase»á°ÑÒ»Æð·ÃÎʵÄÊý¾Ý·ÅÔÚÒ»¸östoreÀïÃæ£¬¼´ÎªÃ¿¸ö
ColumnFamily½¨Ò»¸östore£¬Èç¹ûÓм¸¸öColumnFamily£¬Ò²¾ÍÓм¸¸öStore¡£Ò»¸öStoreÓÉÒ»¸ömemStoreºÍ0»òÕß
¶à¸öStoreFile×é³É¡£ HBaseÒÔstoreµÄ´óСÀ´ÅжÏÊÇ·ñÐèÒªÇзÖregion
MemStore
memStore ÊÇ·ÅÔÚÄÚ´æÀïµÄ¡£±£´æÐ޸ĵÄÊý¾Ý¼´keyValues¡£µ±memStoreµÄ´óС´ïµ½Ò»¸ö·§Öµ£¨Ä¬ÈÏ128MB£©Ê±£¬memStore»á±»flushµ½ÎÄ
¼þ£¬¼´Éú³ÉÒ»¸ö¿ìÕÕ¡£Ä¿Ç°hbase »áÓÐÒ»¸öÏß³ÌÀ´¸ºÔðmemStoreµÄflush²Ù×÷¡£
StoreFile
memStoreÄÚ´æÖеÄÊý¾Ýдµ½Îļþºó¾ÍÊÇStoreFile£¬StoreFileµ×²ãÊÇÒÔHFileµÄ¸ñʽ±£´æ¡£
HFile
HBaseÖÐKeyValueÊý¾ÝµÄ´æ´¢¸ñʽ£¬HFileÊÇHadoopµÄ ¶þ½øÖƸñʽÎļþ£¬Êµ¼ÊÉÏStoreFile¾ÍÊǶÔHfile×öÁËÇáÁ¿¼¶°ü×°£¬¼´StoreFileµ×²ã¾ÍÊÇHFile
HFileµÄ´æ´¢¸ñʽÈçÏ£º

HFileÓɶà¸öData Block¡¢Meta Block¡¢FileInfo¡¢Data Index¡¢Meta
Index¡¢Trailer×é³É£¬ÆäÖÐData BlockÊÇHBaseµÄ×îС´æ´¢µ¥Ôª£¬ÔÚǰÎÄÖÐÌáµ½µÄBlockCache¾ÍÊÇ»ùÓÚData
BlockµÄ»º´æµÄ¡£Ò»¸öData BlockÓÉÒ»¸öħÊýºÍһϵÁеÄKeyValue(Cell)×é³É£¬Ä§ÊýÊÇÒ»¸öËæ»úµÄÊý×Ö£¬ÓÃÓÚ±íʾÕâÊÇÒ»¸öData
BlockÀàÐÍ£¬ÒÔ¿ìËÙ¼à²âÕâ¸öData BlockµÄ¸ñʽ£¬·ÀÖ¹Êý¾ÝµÄÆÆ»µ¡£Data BlockµÄ´óС¿ÉÒÔÔÚ´´½¨Column
FamilyʱÉèÖÃ(HColumnDescriptor.setBlockSize())£¬Ä¬ÈÏÖµÊÇ64KB£¬´óºÅµÄBlockÓÐÀûÓÚ˳ÐòScan£¬Ð¡ºÅBlockÀûÓÚËæ»ú²éѯ£¬Òò¶øÐèҪȨºâ¡£Meta¿éÊÇ¿ÉÑ¡µÄ£¬FileInfoÊǹ̶¨³¤¶ÈµÄ¿é£¬Ëü¼Í¼ÁËÎļþµÄһЩMetaÐÅÏ¢£¬ÀýÈ磺AVG_KEY_LEN,
AVG_VALUE_LEN, LAST_KEY, COMPARATOR, MAX_SEQ_ID_KEYµÈ¡£Data
IndexºÍMeta Index¼Í¼ÁËÿ¸öData¿éºÍMeta¿éµÄÆäʵµã¡¢Î´Ñ¹Ëõʱ´óС¡¢Key(ÆðʼRowKey£¿)µÈ¡£Trailer¼Í¼ÁËFileInfo¡¢Data
Index¡¢Meta Index¿éµÄÆðʼλÖã¬Data IndexºÍMeta IndexË÷ÒýµÄÊýÁ¿µÈ¡£ÆäÖÐFileInfoºÍTrailerÊǹ̶¨³¤¶ÈµÄ¡£
HFileÀïÃæµÄÿ¸öKeyValue¶Ô¾ÍÊÇÒ»¸ö¼òµ¥µÄbyteÊý×é¡£µ«ÊÇÕâ¸öbyteÊý×éÀïÃæ°üº¬Á˺ܶàÏ²¢ÇÒÓй̶¨µÄ½á¹¹¡£ÎÒÃÇÀ´¿´¿´ÀïÃæµÄ¾ßÌå½á¹¹£º

ÉÏͼ¿ÉÖª£¬¿ªÊ¼ÊÇÁ½¸ö¹Ì¶¨³¤¶ÈµÄÊýÖµ£¬·Ö±ð±íʾkeyµÄ³¤¶ÈºÍalueµÄ³¤¶È¡£½ô½Ó×ÅÊÇKey,¿ªÊ¼Êǹ̶¨³¤¶ÈµÄÊýÖµ£¬±íʾRowKeyµÄ³¤¶È£¬½ô½Ó×ÅÊÇRowKey£¬È»ºóÊǹ̶¨³¤¶ÈµÄÊýÖµ£¬±íʾFamilyµÄ³¤¶È£¬È»ºóÊÇFamily,½Ó×ÅÊÇQualifier£¬È»ºóÊÇÁ½¸ö¹Ì¶¨³¤¶ÈµÄÊýÖµ£¬±íʾTime
StampºÍKey Type(Put/Delete)¡£Value²¿·ÖûÓÐÄÇô¸´ÔӵĽṹ£¬¾ÍÊÇ´¿´âµÄ¶þ½øÖÆÊý¾Ý¡£
HLog
HLog(WAL log)£ºWALÒâΪwrite ahead log£¬ÓÃÀ´×öÔÖÄѻָ´Ê¹Óã¬HLog¼Ç¼Êý¾ÝµÄËùÓбä¸ü£¬Ò»µ©region
server å´»ú£¬¾Í¿ÉÒÔ´ÓlogÖнøÐлָ´¡£
HLogÎļþ¾ÍÊÇÒ»¸öÆÕͨµÄHadoop Sequence File£¬
Sequence FileµÄvalueÊÇkeyʱHLogKey¶ÔÏ󣬯äÖмǼÁËдÈëÊý¾ÝµÄ¹éÊôÐÅÏ¢£¬³ýÁËtableºÍregionÃû×ÖÍ⣬»¹Í¬Ê±°üÀ¨sequence
numberºÍtimestamp£¬timestampÊÇдÈëʱ¼ä£¬sequence numberµÄÆðʼֵΪ0£¬»òÕßÊÇ×î½üÒ»´Î´æÈëÎļþϵͳÖеÄsequence
number¡£ Sequence FileµÄvalueÊÇHBaseµÄKeyValue¶ÔÏ󣬼´¶ÔÓ¦HFileÖеÄKeyValue¡£

ÉÏͼÖÐÊÇHLogÎļþµÄ½á¹¹£¬ÆäʵHLogÎļþ¾ÍÊÇÒ»¸öÆÕͨµÄHadoop Sequence File£¬Sequence
FileµÄKeyÊÇHLogKey¶ÔÏó£¬HLogKeyÖмǼÁËдÈëÊý¾ÝµÄ¹éÊôÐÅÏ¢£¬³ýÁËtableºÍRegionÃû×ÖÍ⣬ͬʱ»¹°üÀ¨sequence
numberºÍtimestamp,timestampÊÇ¡±Ð´Èëʱ¼ä¡±£¬sequence number
µÄÆðʼֵΪ0£¬»òÕßÊÇ×î½üÒ»´Î´æÈëÎļþϵͳÖеÄsequence number¡£
HLog Sequence File µÄValueÊÇHBaseµÄKeyValue¶ÔÏ󰺣¬¼´¶ÔÓ¦HFileÖеÄKeyValue¡£
2) HRegion¶¨Î»

ͨ¹ýzkÀïµÄÎļþ/hbase/rsµÃµ½-ROOT-±íµÄλÖá£-ROOT-±íÖ»ÓÐÒ»¸öregion¡£
ͨ¹ý-ROOT-±í²éÕÒ.META.±íµÄµÚÒ»¸ö±íÖÐÏàÓ¦µÄregionµÄλÖá£Æäʵ-ROOT-±íÊÇ.META.±íµÄµÚÒ»¸öregion£».META.±íÖеÄÿһ¸öregion
ÔÚ-ROOT-±íÖж¼ÊÇÒ»ÐмǼ¡£
ͨ¹ý.META.±íÕÒµ½ËùÒªµÄÓû§±íregionµÄλÖá£Óû§±íÖеÄÿ¸öregionÔÚ.META.±íÖж¼ÊÇÒ»ÐмǼ¡£
-ROOT-±íÓÀÔ¶²»»á±»·Ö¸ôΪ¶à¸öregion£¬±£Ö¤ÁË×î¶àÐèÒªÈý´ÎÌø×ª£¬¾ÍÄܶ¨Î»µ½ÈÎÒâµÄregion¡£client»á½«²éѯµÄλÖÃ
ÐÅÏ¢±£´æ»º´æÆðÀ´£¬»º´æ²»»áÖ÷¶¯Ê§Ð§£¬Òò´ËÈç¹ûclientÉϵĻº´æÈ«²¿Ê§Ð§£¬ÔòÐèÒª½øÐÐ6´ÎÍøÂçÀ´»Ø£¬²ÅÄܶ¨Î»µ½ÕýÈ·µÄregion£¬ÆäÖÐÈý´ÎÓÃÀ´·¢ÏÖ
»º´æÊ§Ð§£¬ÁíÍâÈý´ÎÓÃÀ´»ñȡλÖÃÐÅÏ¢¡£
Ìáʾ£º
-ROOT-±í£º±í°üº¬.META.±íËùÔÚµÄregionÁÐ±í£¬¸Ã±íÖ»ÓÐÒ»¸öRegion;ZookeeperÖмǼÁË-ROOT-±íµÄlocation
.META.±í£º±í°üº¬ËùÓеÄÓû§¿Õ¼äregionÁÐ±í£¬ÒÔ¼°Region ServerµÄ·þÎñÆ÷µØÖ·
hbase:meta±í£º¸ß°æ±¾ÖÐÒѾÉáÆúÁËROOTºÍMETA±íÁË£¬²ÉÓÃÁËÕâ¸ö±í
ËÄ¡¢HBase¹¤×÷Á÷³Ì
HBaseµÄÁ÷³Ìͼ

Client
Ê×Ïȵ±Ò»¸öÇëÇó²úÉúʱ£¬HBase ClientʹÓÃRPC(Ô¶³Ì¹ý³Ìµ÷ÓÃ)»úÖÆÓëHMasterºÍHRegionServer½øÐÐͨÐÅ£¬¶ÔÓÚ¹ÜÀíÀà²Ù×÷£¬ClientÓëHMaster½øÐÐRPC;¶ÔÓÚÊý¾Ý¶Áд²Ù×÷£¬ClientÓëHRegionServer½øÐÐRPC¡£
Zookeeper
HBase ClientʹÓÃRPC(Ô¶³Ì¹ý³Ìµ÷ÓÃ)»úÖÆÓëHMasterºÍHRegionServer½øÐÐͨÐÅ£¬µ«ÈçºÎÑ°Ö·ÄØ£¿ÓÉÓÚZookeeperÖд洢ÁË-ROOT-±íµÄµØÖ·ºÍHMasterµÄµØÖ·£¬ËùÒÔÐèÒªÏȵ½ZookeeperÉϽøÐÐѰַ¡£
HRegionServerÒ²»á°Ñ×Ô¼ºÒÔEphemeral·½Ê½×¢²áµ½ZookeeperÖУ¬Ê¹HMaster¿ÉÒÔËæÊ±¸ÐÖªµ½¸÷¸öHRegionServerµÄ½¡¿µ×´Ì¬¡£´ËÍ⣬ZookeeperÒ²±ÜÃâÁËHMasterµÄµ¥µã¹ÊÕÏ¡£
HMaster
µ±Óû§ÐèÒª½øÐÐTableºÍRegionµÄ¹ÜÀí¹¤×÷ʱ£¬¾ÍÐèÒªºÍHMaster½øÐÐͨÐÅ¡£HBaseÖпÉÒÔÆô¶¯¶à¸öHMaster,ͨ¹ýZookeeperµÄMaster
Eletion»úÖÆ±£Ö¤×ÜÓÐÒ»¸öMasterÔËÐС£
¹ÜÀíÓû§¶ÔTableµÄÔöɾ¸Ä²é²Ù×÷
¹ÜÀíHRegionServerµÄ¸ºÔؾùºâ£¬µ÷ÕûRegionµÄ·Ö²¼
ÔÚRegion Splitºó£¬¸ºÔðÐÂRegionµÄ·ÖÅä
ÔÚHRegionServerÍ£»úºó£¬¸ºÔðʧЧHRegionServerÉϵÄRegionsÇ¨ÒÆ
HRegionServer
µ±Óû§ÐèÒª¶ÔÊý¾Ý½øÐжÁд²Ù×÷ʱ£¬ÐèÒª·ÃÎÊHRegionServer¡£HRegionServer´æÈ¡Ò»¸ö×Ó±íʱ£¬»á´´½¨Ò»¸öHRegion¶ÔÏó£¬È»ºó¶Ô±íµÄÿ¸öÁÐ×å´´½¨Ò»¸öStoreʵÀý£¬Ã¿¸öStore¶¼»áÓÐÒ»¸ö
MemStoreºÍ0¸ö»ò¶à¸öStoreFileÓëÖ®¶ÔÓ¦£¬Ã¿¸öStoreFile¶¼»á¶ÔÓ¦Ò»¸öHFile£¬
HFile¾ÍÊÇʵ¼ÊµÄ´æ´¢Îļþ¡£Òò´Ë£¬Ò»¸öHRegionÓжàÉÙ¸öÁÐ×å¾ÍÓжàÉÙ¸öStore¡£ Ò»¸öHRegionServer»áÓжà¸öHRegionºÍÒ»¸öHLog¡£
×¢Ò⣺HStore´æ´¢ÓÉÁ½²¿·Ö×é³É£ºMemStoreºÍStoreFiles¡£ MemStoreÊÇSorted
Memory Buffer,Óû§ дÈëÊý¾ÝÊ×ÏÈ »á·ÅÔÚMemStore,µ±MemStoreÂúÁËÒÔºó»áFlush³ÉÒ»¸ö
StoreFile£¨Êµ¼Ê´æ´¢ÔÚHDHSÉϵÄÊÇHFile£©£¬µ±StoreFileÎļþÊýÁ¿Ôö³¤µ½Ò»¶¨·§Öµ£¬¾Í»á´¥·¢CompactºÏ²¢²Ù×÷£¬²¢½«¶à¸öStoreFileºÏ²¢³ÉÒ»¸öStoreFile£¬ºÏ²¢¹ý³ÌÖÐ»á½øÐа汾ºÏ²¢ºÍÊý¾Ýɾ³ý£¬Òò´Ë¿ÉÒÔ¿´³öHBaseÆäʵֻÓÐÔö¼ÓÊý¾Ý£¬ËùÓеĸüкÍɾ³ý²Ù×÷¶¼ÊÇÔÚºóÐøµÄcompact¹ý³ÌÖнøÐеģ¬ÕâʹµÃÓû§µÄ
¶Áд²Ù×÷*Ö»Òª½øÈëÄÚ´æÖоͿÉÒÔÁ¢¼´·µ»Ø£¬±£Ö¤ÁËHBase I/OµÄ¸ßÐÔÄÜ¡£
Îå¡¢HBaseµÄ¸ß¿ÉÓÃ
HDFS»ú¼Üʶ±ð²ßÂÔ£ºµ±Êý¾ÝÎļþËð»µÊ±£¬»áÕÒÏàͬ»ú¼ÜÉϱ¸·ÝµÄÊý¾ÝÎļþ£¬Èç¹ûÏàͬ»ú¼ÜÉϵÄÊý¾ÝÎļþÒ²Ë𻵻áÕÒ²»Í¬»ú¼Ü±¸·ÝÊý¾ÝÎļþ¡£
HBaseµÄRegion¿ìËÙ»Ö¸´£ºµ±regionserverËð»µÊ±£¬master»á¶Ô¸ÃregionserverÉϵÄregion½øÐÐÖØÐ·ÖÅä£¬Ç¨ÒÆµ½ÆäËû¿ÉÓõÄregionserverÉϲ¢»Ö¸´region¡£
Master½ÚµãµÄHA»úÖÆ£ºMasterΪһÖ÷¶à±¸¡£µ±MasterÖ÷½Úµãå´»úºó£¬Ê£Ïµı¸½Úµãͨ¹ýÑ¡¾Ù£¬²úÉúÖ÷½Úµã¡£
Áù¡¢HBaseÔËά
ʱÖÓͬ²½
ÊÖ¶¯majorcompact
region holeÐÞ¸´
region overlapÐÞ¸´
¶Áд¼¯ÈºÅäÖÃ񻂿·Ö
memstore flushʱ»ú |