±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn£¬±¾ÎĽáºÏ
Hbase ÔÚÌÔ±¦Êý¾Ýƽ̨µÄÓ¦Óó¡¾°£¬ÔÚ¸ü¶àϸ½ÚÉϽøÐÐÉîÈ룬¶ÔHbase½øÐÐÁ˼òµ¥µÄ½éÉÜ£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
|
|
Ò»¡¢ ¼ò½é
history
started by chad walters and jim
2006.11 G release paper on BigTable
2007.2 inital HBase prototype created as Hadoop contrib
2007.10 First useable Hbase
2008.1 Hadoop become Apache top-level project and
Hbase becomes subproject
2008.10 Hbase 0.18,0.19 released
hbaseÊÇbigtableµÄ¿ªÔ´É½Õ¯°æ±¾¡£Êǽ¨Á¢µÄhdfsÖ®ÉÏ£¬Ìṩ¸ß¿É¿¿ÐÔ¡¢¸ßÐÔÄÜ¡¢Áд洢¡¢¿ÉÉìËõ¡¢ÊµÊ±¶ÁдµÄÊý¾Ý¿âϵͳ¡£
Ëü½éÓÚnosqlºÍRDBMSÖ®¼ä£¬½öÄÜͨ¹ýÖ÷¼ü(row key)ºÍÖ÷¼üµÄrangeÀ´¼ìË÷Êý¾Ý£¬½öÖ§³Öµ¥ÐÐÊÂÎñ(¿Éͨ¹ýhiveÖ§³ÖÀ´ÊµÏÖ¶à±íjoinµÈ¸´ÔÓ²Ù×÷)¡£Ö÷ÒªÓÃÀ´´æ´¢·Ç½á¹¹»¯ºÍ°ë½á¹¹»¯µÄËÉÉ¢Êý¾Ý¡£
ÓëhadoopÒ»Ñù£¬HbaseÄ¿±êÖ÷ÒªÒÀ¿¿ºáÏòÀ©Õ¹£¬Í¨¹ý²»¶ÏÔö¼ÓÁ®¼ÛµÄÉÌÓ÷þÎñÆ÷£¬À´Ôö¼Ó¼ÆËãºÍ´æ´¢ÄÜÁ¦¡£
HBaseÖеıíÒ»°ãÓÐÕâÑùµÄÌØµã£º
1 ´ó£ºÒ»¸ö±í¿ÉÒÔÓÐÉÏÒÚÐУ¬ÉϰÙÍòÁÐ
2 ÃæÏòÁÐ:ÃæÏòÁÐ(×å)µÄ´æ´¢ºÍȨÏÞ¿ØÖÆ£¬ÁÐ(×å)¶ÀÁ¢¼ìË÷¡£
3 Ï¡Êè:¶ÔÓÚΪ¿Õ(null)µÄÁУ¬²¢²»Õ¼Óô洢¿Õ¼ä£¬Òò´Ë£¬±í¿ÉÒÔÉè¼ÆµÄ·Ç³£Ï¡Êè¡£
ÏÂÃæÒ»·ùͼÊÇHbaseÔÚHadoop EcosystemÖеÄλÖá£

¶þ¡¢ Âß¼ÊÓͼ
HBaseÒÔ±íµÄÐÎʽ´æ´¢Êý¾Ý¡£±íÓÐÐкÍÁÐ×é³É¡£Áл®·ÖΪÈô¸É¸öÁÐ×å(row family)

Row Key
ÓënosqlÊý¾Ý¿âÃÇÒ»Ñù,row keyÊÇÓÃÀ´¼ìË÷¼Ç¼µÄÖ÷¼ü¡£·ÃÎÊhbase tableÖеÄÐУ¬Ö»ÓÐÈýÖÖ·½Ê½£º
1 ͨ¹ýµ¥¸örow key·ÃÎÊ
2 ͨ¹ýrow keyµÄrange
3 È«±íɨÃè
Row keyÐмü (Row key)¿ÉÒÔÊÇÈÎÒâ×Ö·û´®(×î´ó³¤¶ÈÊÇ 64KB£¬Êµ¼ÊÓ¦ÓÃÖ㤶ÈÒ»°ãΪ
10-100bytes)£¬ÔÚhbaseÄÚ²¿£¬row key±£´æÎª×Ö½ÚÊý×é¡£
´æ´¢Ê±£¬Êý¾Ý°´ÕÕRow keyµÄ×ÖµäÐò(byte order)ÅÅÐò´æ´¢¡£Éè¼Ækeyʱ£¬Òª³ä·ÖÅÅÐò´æ´¢Õâ¸öÌØÐÔ£¬½«¾³£Ò»Æð¶ÁÈ¡µÄÐд洢·Åµ½Ò»Æð¡£(λÖÃÏà¹ØÐÔ)
×¢Ò⣺
×ÖµäÐò¶ÔintÅÅÐòµÄ½á¹ûÊÇ1,10,100,11,12,13,14,15,16,17,18,19,2,20,21,¡,9,91,92,93,94,95,96,97,98,99¡£Òª±£³ÖÕûÐεÄ×ÔÈ»Ðò£¬Ðмü±ØÐëÓÃ0×÷×óÌî³ä¡£
ÐеÄÒ»´Î¶ÁдÊÇÔ×Ó²Ù×÷ (²»ÂÛÒ»´Î¶Áд¶àÉÙÁÐ)¡£Õâ¸öÉè¼Æ¾ö²ßÄܹ»Ê¹Óû§ºÜÈÝÒ×µÄÀí½â³ÌÐòÔÚ¶Ôͬһ¸öÐнøÐв¢·¢¸üвÙ×÷ʱµÄÐÐΪ¡£
ÁÐ×å
hbase±íÖеÄÿ¸öÁУ¬¶¼¹éÊôÓëij¸öÁÐ×å¡£ÁÐ×åÊDZíµÄchemaµÄÒ»²¿·Ö(¶øÁв»ÊÇ)£¬±ØÐëÔÚʹÓñí֮ǰ¶¨Òå¡£ÁÐÃû¶¼ÒÔÁÐ×å×÷Ϊǰ׺¡£ÀýÈçcourses:history
£¬ courses:math ¶¼ÊôÓÚ courses Õâ¸öÁÐ×å¡£
·ÃÎÊ¿ØÖÆ¡¢´ÅÅ̺ÍÄÚ´æµÄʹÓÃͳ¼Æ¶¼ÊÇÔÚÁÐ×å²ãÃæ½øÐеġ£Êµ¼ÊÓ¦ÓÃÖУ¬ÁÐ×åÉϵĿØÖÆÈ¨ÏÞÄÜ
°ïÖúÎÒÃǹÜÀí²»Í¬ÀàÐ͵ÄÓ¦ÓãºÎÒÃÇÔÊÐíһЩӦÓÿÉÒÔÌí¼ÓеĻù±¾Êý¾Ý¡¢Ò»Ð©Ó¦ÓÿÉÒÔ¶ÁÈ¡»ù±¾Êý¾Ý²¢´´½¨¼Ì³ÐµÄÁÐ×塢һЩӦÓÃÔòÖ»ÔÊÐíä¯ÀÀÊý¾Ý£¨ÉõÖÁ¿ÉÄÜÒò
ΪÒþ˽µÄÔÒò²»ÄÜä¯ÀÀËùÓÐÊý¾Ý£©¡£
ʱ¼ä´Á
HBaseÖÐͨ¹ýrowºÍcolumnsÈ·¶¨µÄΪһ¸ö´æÖüµ¥Ôª³ÆÎªcell¡£Ã¿¸ö cell¶¼±£´æ×Åͬһ·ÝÊý¾ÝµÄ¶à¸ö°æ±¾¡£°æ±¾Í¨¹ýʱ¼ä´ÁÀ´Ë÷Òý¡£Ê±¼ä´ÁµÄÀàÐÍÊÇ
64λÕûÐÍ¡£Ê±¼ä´Á¿ÉÒÔÓÉhbase(ÔÚÊý¾ÝдÈëʱ×Ô¶¯ )¸³Öµ£¬´Ëʱʱ¼ä´ÁÊǾ«È·µ½ºÁÃëµÄµ±Ç°ÏµÍ³Ê±¼ä¡£Ê±¼ä´ÁÒ²¿ÉÒÔÓɿͻ§ÏÔʽ¸³Öµ¡£Èç¹ûÓ¦ÓóÌÐòÒª±ÜÃâÊý¾Ý°æ±¾³åÍ»£¬¾Í±ØÐë×Ô¼ºÉú³É¾ßÓÐΨһÐÔµÄʱ¼ä´Á¡£Ã¿¸ö
cellÖУ¬²»Í¬°æ±¾µÄÊý¾Ý°´ÕÕʱ¼äµ¹ÐòÅÅÐò£¬¼´×îеÄÊý¾ÝÅÅÔÚ×îÇ°Ãæ¡£
ΪÁ˱ÜÃâÊý¾Ý´æÔÚ¹ý¶à°æ±¾Ôì³ÉµÄµÄ¹ÜÀí (°üÀ¨´æÖüºÍË÷Òý)¸ºµ££¬hbaseÌṩÁËÁ½ÖÖÊý¾Ý°æ±¾»ØÊÕ·½Ê½¡£Ò»ÊDZ£´æÊý¾ÝµÄ×îºón¸ö°æ±¾£¬¶þÊDZ£´æ×î½üÒ»¶Îʱ¼äÄڵİ汾£¨±ÈÈç×î½üÆßÌ죩¡£Óû§¿ÉÒÔÕë¶Ôÿ¸öÁÐ×å½øÐÐÉèÖá£
Cell
ÓÉ{row key, column( =<family>
+ <label>), version} Ψһȷ¶¨µÄµ¥Ôª¡£cellÖеÄÊý¾ÝÊÇûÓÐÀàÐ͵ģ¬È«²¿ÊÇ×Ö½ÚÂëÐÎʽ´æÖü¡£
Èý¡¢ ÎïÀí´æ´¢
1 ÒѾÌáµ½¹ý£¬TableÖеÄËùÓÐÐж¼°´ÕÕrow keyµÄ×ÖµäÐòÅÅÁС£
2 Table ÔÚÐеķ½ÏòÉÏ·Ö¸îΪ¶à¸öHregion¡£

3 region°´´óС·Ö¸îµÄ£¬Ã¿¸ö±íÒ»¿ªÊ¼Ö»ÓÐÒ»¸öregion£¬Ëæ×ÅÊý¾Ý²»¶Ï²åÈë±í£¬region²»¶ÏÔö´ó£¬µ±Ôö´óµ½Ò»¸ö·§ÖµµÄʱºò£¬Hregion¾Í»áµÈ·Ö»áÁ½¸öеÄHregion¡£µ±tableÖеÄÐв»¶ÏÔö¶à£¬¾Í»áÓÐÔ½À´Ô½¶àµÄHregion¡£

4 HregionÊÇHbaseÖзֲ¼Ê½´æ´¢ºÍ¸ºÔؾùºâµÄ×îСµ¥Ôª¡£×îСµ¥Ôª¾Í±íʾ²»Í¬µÄHregion¿ÉÒÔ·Ö²¼ÔÚ²»Í¬µÄHRegion
serverÉÏ¡£µ«Ò»¸öHregionÊDz»»á²ð·Öµ½¶à¸öserverÉϵġ£

5 HRegionËäÈ»ÊÇ·Ö²¼Ê½´æ´¢µÄ×îСµ¥Ôª£¬µ«²¢²»ÊÇ´æ´¢µÄ×îСµ¥Ôª¡£
ÊÂʵÉÏ£¬HRegionÓÉÒ»¸ö»òÕß¶à¸öStore×é³É£¬Ã¿¸östore±£´æÒ»¸öcolumns family¡£
ÿ¸öStroreÓÖÓÉÒ»¸ömemStoreºÍ0ÖÁ¶à¸öStoreFile×é³É¡£Èçͼ£º
StoreFileÒÔHFile¸ñʽ±£´æÔÚHDFSÉÏ¡£

HFileµÄ¸ñʽΪ£º

Trailer²¿·ÖµÄ¸ñʽ:

HFile·ÖΪÁù¸ö²¿·Ö£º
1.Data Block ¶Î¨C±£´æ±íÖеÄÊý¾Ý£¬Õⲿ·Ö¿ÉÒÔ±»Ñ¹Ëõ
2.Meta Block ¶Î (¿ÉÑ¡µÄ)¨C±£´æÓû§×Ô¶¨ÒåµÄkv¶Ô£¬¿ÉÒÔ±»Ñ¹Ëõ¡£
3.File Info ¶Î¨CHfileµÄÔªÐÅÏ¢£¬²»±»Ñ¹Ëõ£¬Óû§Ò²¿ÉÒÔÔÚÕâÒ»²¿·ÖÌí¼Ó×Ô¼ºµÄÔªÐÅÏ¢¡£
4.Data Block Index ¶Î¨CData BlockµÄË÷Òý¡£Ã¿ÌõË÷ÒýµÄkeyÊDZ»Ë÷ÒýµÄblockµÄµÚÒ»Ìõ¼Ç¼µÄkey¡£
5.Meta Block Index¶Î (¿ÉÑ¡µÄ)¨CMeta BlockµÄË÷Òý¡£
Trailer¨CÕâÒ»¶ÎÊǶ¨³¤µÄ¡£±£´æÁËÿһ¶ÎµÄÆ«ÒÆÁ¿£¬¶Áȡһ¸öHFileʱ£¬»áÊ×ÏÈ ¶ÁÈ¡Trailer£¬Trailer±£´æÁËÿ¸ö¶ÎµÄÆðʼλÖÃ(¶ÎµÄMagic
NumberÓÃÀ´×ö°²È«check)£¬È»ºó£¬DataBlock Index»á±»¶ÁÈ¡µ½ÄÚ´æÖУ¬ÕâÑù£¬µ±¼ìË÷ij¸ökeyʱ£¬²»ÐèҪɨÃèÕû¸öHFile£¬¶øÖ»Ðè´ÓÄÚ´æÖÐÕÒµ½keyËùÔÚµÄblock£¬Í¨¹ýÒ»´Î´ÅÅÌio½«Õû¸ö
block¶ÁÈ¡µ½ÄÚ´æÖУ¬ÔÙÕÒµ½ÐèÒªµÄkey¡£DataBlock Index²ÉÓÃLRU»úÖÆÌÔÌ¡£
HFileµÄData Block£¬Meta Blockͨ³£²ÉÓÃѹËõ·½Ê½´æ´¢£¬Ñ¹ËõÖ®ºó¿ÉÒÔ´ó´ó¼õÉÙÍøÂçIOºÍ´ÅÅÌIO£¬ËæÖ®¶øÀ´µÄ¿ªÏúµ±È»ÊÇÐèÒª»¨·Ñcpu½øÐÐѹËõºÍ½âѹËõ¡£
Ä¿±êHfileµÄѹËõÖ§³ÖÁ½ÖÖ·½Ê½£ºGzip£¬Lzo¡£
HLog(WAL log)
WAL ÒâΪWrite ahead log(http://en.wikipedia.org/wiki/Write-ahead_logging)£¬ÀàËÆmysqlÖеÄbinlog,ÓÃÀ´
×öÔÖÄѻָ´Ö»Óã¬Hlog¼Ç¼Êý¾ÝµÄËùÓбä¸ü,Ò»µ©Êý¾ÝÐ޸ģ¬¾Í¿ÉÒÔ´ÓlogÖнøÐлָ´¡£
ÿ¸öRegion Serverά»¤Ò»¸öHlog,¶ø²»ÊÇÿ¸öRegionÒ»¸ö¡£ÕâÑù²»Í¬region(À´×Ô²»Í¬table)µÄÈÕÖ¾»á»ìÔÚÒ»Æð£¬ÕâÑù×öµÄÄ¿µÄÊDz»¶Ï×·¼Óµ¥¸ö
ÎļþÏà¶ÔÓÚͬʱд¶à¸öÎļþ¶øÑÔ£¬¿ÉÒÔ¼õÉÙ´ÅÅÌѰַ´ÎÊý£¬Òò´Ë¿ÉÒÔÌá¸ß¶ÔtableµÄдÐÔÄÜ¡£´øÀ´µÄÂé·³ÊÇ£¬Èç¹ûһ̨region
serverÏÂÏߣ¬ÎªÁ˻ָ´ÆäÉϵÄregion£¬ÐèÒª½«region serverÉϵÄlog½øÐвð·Ö£¬È»ºó·Ö·¢µ½ÆäËüregion
serverÉϽøÐлָ´¡£
HLogÎļþ¾ÍÊÇÒ»¸öÆÕͨµÄHadoop Sequence File£¬Sequence
File µÄKeyÊÇHLogKey¶ÔÏó£¬HLogKeyÖмǼÁËдÈëÊý¾ÝµÄ¹éÊôÐÅÏ¢£¬³ýÁËtableºÍregionÃû×ÖÍ⣬ͬʱ»¹°üÀ¨
sequence numberºÍtimestamp£¬timestampÊÇ¡±Ð´Èëʱ¼ä¡±£¬sequence
numberµÄÆðʼֵΪ0£¬»òÕßÊÇ×î½üÒ»´Î´æÈëÎļþϵͳÖÐsequence number¡£HLog Sequece
FileµÄValueÊÇHBaseµÄKeyValue¶ÔÏ󣬼´¶ÔÓ¦HFileÖеÄKeyValue£¬¿É²Î¼ûÉÏÎÄÃèÊö¡£
ËÄ¡¢ ϵͳ¼Ü¹¹

Client
1 °üº¬·ÃÎÊhbaseµÄ½Ó¿Ú£¬clientά»¤×ÅһЩcacheÀ´¼Ó¿ì¶ÔhbaseµÄ·ÃÎÊ£¬±ÈÈçregioneµÄλÖÃÐÅÏ¢¡£
Zookeeper
1 ±£Ö¤ÈκÎʱºò£¬¼¯ÈºÖÐÖ»ÓÐÒ»¸ömaster
2 ´æÖüËùÓÐRegionµÄѰַÈë¿Ú¡£
3 ʵʱ¼à¿ØRegion ServerµÄ״̬£¬½«Region serverµÄÉÏÏߺÍÏÂÏßÐÅϢʵʱ֪ͨ¸øMaster
4 ´æ´¢HbaseµÄschema,°üÀ¨ÓÐÄÄЩtable£¬Ã¿¸ötableÓÐÄÄЩcolumn
family
Master
1 ΪRegion server·ÖÅäregion
2 ¸ºÔðregion serverµÄ¸ºÔؾùºâ
3 ·¢ÏÖʧЧµÄregion server²¢ÖØÐ·ÖÅäÆäÉϵÄregion
4 GFSÉϵÄÀ¬»øÎļþ»ØÊÕ
5 ´¦Àíschema¸üÐÂÇëÇó
Region Server
1 Region serverά»¤Master·ÖÅ䏸ËüµÄregion£¬´¦Àí¶ÔÕâЩregionµÄIOÇëÇó
2 Region server¸ºÔðÇзÖÔÚÔËÐйý³ÌÖбäµÃ¹ý´óµÄregion
¿ÉÒÔ¿´µ½£¬client·ÃÎÊhbaseÉÏÊý¾ÝµÄ¹ý³Ì²¢²»ÐèÒªmaster²ÎÓ루Ѱַ·ÃÎÊzookeeperºÍregion
server£¬Êý¾Ý¶Áд·ÃÎÊregione server£©£¬master½ö½öά»¤ÕßtableºÍregionµÄÔªÊý¾ÝÐÅÏ¢£¬¸ºÔغܵ͡£
Îå¡¢¹Ø¼üËã·¨ / Á÷³Ì
region¶¨Î»
ϵͳÈçºÎÕÒµ½Ä³¸örow key (»òÕßij¸ö row key range)ËùÔÚµÄregion
bigtable ʹÓÃÈý²ãÀàËÆB+Ê÷µÄ½á¹¹À´±£´æregionλÖá£
µÚÒ»²ãÊDZ£´æzookeeperÀïÃæµÄÎļþ£¬Ëü³ÖÓÐroot regionµÄλÖá£
µÚ¶þ²ãroot regionÊÇ.META.±íµÄµÚÒ»¸öregionÆäÖб£´æÁË.META.z±íÆäËüregionµÄλÖá£Í¨¹ýroot
region£¬ÎÒÃǾͿÉÒÔ·ÃÎÊ.META.±íµÄÊý¾Ý¡£
.META.ÊǵÚÈý²ã£¬ËüÊÇÒ»¸öÌØÊâµÄ±í£¬±£´æÁËhbaseÖÐËùÓÐÊý¾Ý±íµÄregion λÖÃÐÅÏ¢¡£

˵Ã÷£º
1 root regionÓÀÔ¶²»»á±»split£¬±£Ö¤ÁË×îÐèÒªÈý´ÎÌø×ª£¬¾ÍÄܶ¨Î»µ½ÈÎÒâregion
¡£
2.META.±íÿÐб£´æÒ»¸öregionµÄλÖÃÐÅÏ¢£¬row key ²ÉÓñíÃû+±íµÄ×îºóÒ»Ñù±àÂë¶ø³É¡£
3 ΪÁ˼ӿì·ÃÎÊ£¬.META.±íµÄÈ«²¿region¶¼±£´æÔÚÄÚ´æÖС£
¼ÙÉ裬.META.±íµÄÒ»ÐÐÔÚÄÚ´æÖдóÔ¼Õ¼ÓÃ1KB¡£²¢ÇÒÿ¸öregionÏÞÖÆÎª128MB¡£
ÄÇôÉÏÃæµÄÈý²ã½á¹¹¿ÉÒÔ±£´æµÄregionÊýĿΪ£º
(128MB/1KB) * (128MB/1KB) = = 2(34)¸öregion
4 client»á½«²éѯ¹ýµÄλÖÃÐÅÏ¢±£´æ»º´æÆðÀ´£¬»º´æ²»»áÖ÷¶¯Ê§Ð§£¬Òò´ËÈç¹ûclientÉϵĻº´æÈ«²¿Ê§Ð§£¬ÔòÐèÒª½øÐÐ6´ÎÍøÂçÀ´»Ø£¬²ÅÄܶ¨Î»µ½ÕýÈ·µÄregion(ÆäÖÐÈý´ÎÓÃÀ´·¢ÏÖ»º´æÊ§Ð§£¬ÁíÍâÈý´ÎÓÃÀ´»ñȡλÖÃÐÅÏ¢)¡£
¶Áд¹ý³Ì
ÉÏÎÄÌáµ½£¬hbaseʹÓÃMemStoreºÍStoreFile´æ´¢¶Ô±íµÄ¸üС£
Êý¾ÝÔÚ¸üÐÂʱÊ×ÏÈдÈëLog(WAL log)ºÍÄÚ´æ(MemStore)ÖУ¬MemStoreÖеÄÊý¾ÝÊÇÅÅÐòµÄ£¬µ±MemStoreÀۼƵ½Ò»¶¨ãÐֵʱ£¬¾Í»á´´½¨Ò»¸öеÄMemStore£¬²¢
ÇÒ½«ÀϵÄMemStoreÌí¼Óµ½flush¶ÓÁУ¬Óɵ¥¶ÀµÄÏß³Ìflushµ½´ÅÅÌÉÏ£¬³ÉΪһ¸öStoreFile¡£ÓÚ´Ëͬʱ£¬ÏµÍ³»áÔÚzookeeperÖÐ
¼Ç¼һ¸öredo point£¬±íʾÕâ¸öʱ¿Ì֮ǰµÄ±ä¸üÒѾ³Ö¾Ã»¯ÁË¡£(minor compact)
µ±ÏµÍ³³öÏÖÒâÍâʱ£¬¿ÉÄܵ¼ÖÂÄÚ´æ(MemStore)ÖеÄÊý¾Ý¶ªÊ§£¬´ËʱʹÓÃLog(WAL log)À´»Ö¸´checkpointÖ®ºóµÄÊý¾Ý¡£
Ç°ÃæÌáµ½¹ýStoreFileÊÇÖ»¶ÁµÄ£¬Ò»µ©´´½¨ºó¾Í²»¿ÉÒÔÔÙÐ޸ġ£Òò´ËHbaseµÄ¸ü ÐÂÆäʵÊDz»¶Ï×·¼ÓµÄ²Ù×÷¡£µ±Ò»¸öStoreÖеÄStoreFile´ïµ½Ò»¶¨µÄãÐÖµºó£¬¾Í»á½øÐÐÒ»´ÎºÏ²¢(major
compact),½«¶Ôͬһ¸ökeyµÄÐ޸ĺϲ¢µ½Ò»Æð£¬ÐγÉÒ»¸ö´óµÄStoreFile£¬µ±StoreFileµÄ´óС´ïµ½Ò»¶¨ãÐÖµºó£¬ÓÖ»á¶Ô
StoreFile½øÐÐsplit£¬µÈ·ÖΪÁ½¸öStoreFile¡£
ÓÉÓÚ¶Ô±íµÄ¸üÐÂÊDz»¶Ï×·¼ÓµÄ£¬´¦Àí¶ÁÇëÇóʱ£¬ÐèÒª·ÃÎÊStoreÖÐÈ«²¿µÄ StoreFileºÍMemStore£¬½«ËûÃǵİ´ÕÕrow
key½øÐкϲ¢£¬ÓÉÓÚStoreFileºÍMemStore¶¼ÊǾ¹ýÅÅÐòµÄ£¬²¢ÇÒStoreFile´øÓÐÄÚ´æÖÐË÷Òý£¬ºÏ²¢µÄ¹ý³Ì»¹ÊDZȽϿ졣
дÇëÇó´¦Àí¹ý³Ì

1 clientÏòregion serverÌύдÇëÇó
2 region serverÕÒµ½Ä¿±êregion
3 region¼ì²éÊý¾ÝÊÇ·ñÓëschemaÒ»ÖÂ
4 Èç¹û¿Í»§¶ËûÓÐÖ¸¶¨°æ±¾£¬Ôò»ñÈ¡µ±Ç°ÏµÍ³Ê±¼ä×÷ΪÊý¾Ý°æ±¾
5 ½«¸üÐÂдÈëWAL log
6 ½«¸üÐÂдÈëMemstore
7 ÅжÏMemstoreµÄÊÇ·ñÐèÒªflushΪStoreÎļþ¡£
region·ÖÅä
ÈκÎʱ¿Ì£¬Ò»¸öregionÖ»ÄÜ·ÖÅä¸øÒ»¸öregion server¡£master¼Ç¼Á˵±Ç°ÓÐÄÄЩ¿ÉÓõÄregion
server¡£ÒÔ¼°µ±Ç°ÄÄЩregion·ÖÅ䏸ÁËÄÄЩregion server£¬ÄÄЩregion»¹Ã»ÓзÖÅä¡£µ±´æÔÚδ·ÖÅäµÄregion£¬²¢ÇÒÓÐÒ»¸öregion
serverÉÏÓпÉÓÿռäʱ£¬master¾Í¸øÕâ¸öregion server·¢ËÍÒ»¸ö×°ÔØÇëÇ󣬰Ñregion·ÖÅ䏸Õâ¸öregion
server¡£region serverµÃµ½ÇëÇóºó£¬¾Í¿ªÊ¼¶Ô´ËregionÌṩ·þÎñ¡£
region serverÉÏÏß
masterʹÓÃzookeeperÀ´¸ú×Ùregion server״̬¡£µ±Ä³¸öregion
serverÆô¶¯Ê±£¬»áÊ×ÏÈÔÚzookeeperÉϵÄserverĿ¼Ï½¨Á¢´ú±í×Ô¼ºµÄÎļþ£¬²¢»ñµÃ¸ÃÎļþµÄ¶ÀÕ¼Ëø¡£ÓÉÓÚmaster¶©ÔÄÁËserver
Ŀ¼Éϵıä¸üÏûÏ¢£¬µ±serverĿ¼ÏµÄÎļþ³öÏÖÐÂÔö»òɾ³ý²Ù×÷ʱ£¬master¿ÉÒԵõ½À´×ÔzookeeperµÄʵʱ֪ͨ¡£Òò´ËÒ»µ©region
serverÉÏÏߣ¬masterÄÜÂíÉϵõ½ÏûÏ¢¡£
region serverÏÂÏß
µ±region serverÏÂÏßʱ£¬ËüºÍzookeeperµÄ»á»°¶Ï¿ª£¬zookeeper¶ø×Ô¶¯ÊÍ·Å´ú±íÕą̂serverµÄÎļþÉϵĶÀÕ¼Ëø¡£¶ømaster²»¶ÏÂÖѯ
serverĿ¼ÏÂÎļþµÄËø×´Ì¬¡£Èç¹ûmaster·¢ÏÖij¸öregion server¶ªÊ§ÁËËü×Ô¼ºµÄ¶ÀÕ¼Ëø£¬(»òÕßmasterÁ¬Ðø¼¸´ÎºÍregion
serverͨÐŶ¼ÎÞ·¨³É¹¦),master¾ÍÊdz¢ÊÔÈ¥»ñÈ¡´ú±íÕâ¸öregion serverµÄ¶ÁÐ´Ëø£¬Ò»µ©»ñÈ¡³É¹¦£¬¾Í¿ÉÒÔÈ·¶¨£º
1 region serverºÍzookeeperÖ®¼äµÄÍøÂç¶Ï¿ªÁË¡£
2 region server¹ÒÁË¡£
µÄÆäÖÐÒ»ÖÖÇé¿ö·¢ÉúÁË£¬ÎÞÂÛÄÄÖÖÇé¿ö£¬region server¶¼ÎÞ·¨¼ÌÐøÎªËüµÄregionÌṩ·þÎñÁË£¬´Ëʱmaster»áɾ³ýserverĿ¼Ï´ú±íÕą̂region
serverµÄÎļþ£¬²¢½«Õą̂region serverµÄregion·ÖÅ䏸ÆäËü»¹»î×ŵÄͬ־¡£
Èç¹ûÍøÂç¶ÌÔݳöÏÖÎÊÌâµ¼ÖÂregion server¶ªÊ§ÁËËüµÄËø£¬ÄÇôregion
serverÖØÐÂÁ¬½Óµ½zookeeperÖ®ºó£¬Ö»Òª´ú±íËüµÄÎļþ»¹ÔÚ£¬Ëü¾Í»á²»¶Ï³¢ÊÔ»ñÈ¡Õâ¸öÎļþÉϵÄËø£¬Ò»µ©»ñÈ¡µ½ÁË£¬¾Í¿ÉÒÔ¼ÌÐøÌṩ·þÎñ¡£
masterÉÏÏß
masterÆô¶¯½øÐÐÒÔϲ½Öè:
1 ´ÓzookeeperÉÏ»ñȡΨһһ¸ö´úÂëmasterµÄËø£¬ÓÃÀ´×èÖ¹ÆäËümaster³ÉΪmaster¡£
2 ɨÃèzookeeperÉϵÄserverĿ¼£¬»ñµÃµ±Ç°¿ÉÓõÄregion serverÁÐ±í¡£
3 ºÍ2ÖеÄÿ¸öregion serverͨÐÅ£¬»ñµÃµ±Ç°ÒÑ·ÖÅäµÄregionºÍregion serverµÄ¶ÔÓ¦¹ØÏµ¡£
4 ɨÃè.META.regionµÄ¼¯ºÏ£¬¼ÆËãµÃµ½µ±Ç°»¹Î´·ÖÅäµÄregion£¬½«ËûÃÇ·ÅÈë´ý·ÖÅäregionÁÐ±í¡£
masterÏÂÏß
ÓÉÓÚmasterֻά»¤±íºÍregionµÄÔªÊý¾Ý£¬¶ø²»²ÎÓë±íÊý¾ÝIOµÄ¹ý
³Ì£¬masterÏÂÏß½öµ¼ÖÂËùÓÐÔªÊý¾ÝµÄÐ޸ı»¶³½á(ÎÞ·¨´´½¨É¾³ý±í£¬ÎÞ·¨Ð޸ıíµÄschema£¬ÎÞ·¨½øÐÐregionµÄ¸ºÔؾùºâ£¬ÎÞ·¨´¦Àíregion
ÉÏÏÂÏߣ¬ÎÞ·¨½øÐÐregionµÄºÏ²¢£¬Î¨Ò»ÀýÍâµÄÊÇregionµÄsplit¿ÉÒÔÕý³£½øÐУ¬ÒòΪֻÓÐregion
server²ÎÓë)£¬±íµÄÊý¾Ý¶Áд»¹¿ÉÒÔÕý³£½øÐС£Òò´ËmasterÏÂÏß¶Ìʱ¼äÄÚ¶ÔÕû¸öhbase¼¯ÈºÃ»ÓÐÓ°Ïì¡£´ÓÉÏÏß¹ý³Ì¿ÉÒÔ¿´µ½£¬master±£´æµÄ
ÐÅϢȫÊÇ¿ÉÒÔÈßÓàÐÅÏ¢£¨¶¼¿ÉÒÔ´ÓϵͳÆäËüµØ·½ÊÕ¼¯µ½»òÕß¼ÆËã³öÀ´£©£¬Òò´Ë£¬Ò»°ãhbase¼¯ÈºÖÐ×ÜÊÇÓÐÒ»¸ömasterÔÚÌṩ·þÎñ£¬»¹ÓÐÒ»¸öÒÔÉÏ
µÄ¡¯master¡¯Ôڵȴýʱ»úÇÀÕ¼ËüµÄλÖá£
Áù¡¢·ÃÎʽӿÚ
HBase
Shell
Java clietn API
HBase non-java access
languages talking to the JVM
Jython interface to HBase
Groovy DSL for HBase
Scala interface to HBase
languages with a custom protocol
REST gateway specification for HBase
³ä·ÖÀûÓÃHTTPÐÒ飺GET POST PUT DELETE
text/plain
text/xml
application/json
application/x-protobuf
Thrift gateway specification for HBase
java
cpp
rb
py
perl
php
HBase Map Reduce
Hive/Pig |
|