±à¼ÍƼö: |
±¾ÎÄÊ×ÏȶÔHBase×ö³ö»ù±¾½éÉÜ£¬Æä´Î½éÉÜÁËHBaseµÄÊý¾ÝÄ£ÐÍ¡¢ÊµÏÖÔÀí¡¢ÏµÍ³¼Ü¹¹ºÍÓ¦Ó÷½°¸£¬×îºó½éÉÜÁË»ªÎªµÄÔöÇ¿ÌØÐÔ£¬¸ü¶àÁ˽âÇëÔĶÁÏÂÎÄ¡£
±¾ÎÄÀ´×Ô¸öÈ˲©¿Í£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼¡¢ÍƼö¡£ |
|
HBase»ù±¾½éÉÜ
BigTable¼ò½é£º
BigTableÊÇÒ»¸ö·Ö²¼Ê½´æ´¢ÏµÍ³£¬BigTableÆð³õÓÃÓÚ½â¾öµäÐ͵Ļ¥ÁªÍøËÑË÷ÎÊÌâ¡£
BigTableÊÇÒ»¸ö·Ö²¼Ê½´æ´¢ÏµÍ³¡£
ÀûÓùȸèÌá³öµÄMapReduce·Ö²¼Ê½²¢ÐмÆËãÄ£ÐÍÀ´´¦Àíº£Á¿Êý¾Ý¡£
ʹÓùȸè·Ö²¼Ê½ÎļþϵͳGFS×÷Ϊµ×²ãÊý¾Ý´æ´¢¡£
²ÉÓÃChubbyÌṩÐͬ·þÎñ¹ÜÀí¡£
¿ÉÒÔÀ©Õ¹µ½PB¼¶±ðµÄÊý¾ÝºÍÉÏǧ̨»úÆ÷£¬¾ß±¸¹ã·ºÓ¦ÓÃÐÔ¡¢¿ÉÀ©Õ¹ÐÔ¡¢¸ßÐÔÄܺ͸߿ÉÓÃÐÔµÈÌØµã¡£
¹È¸èµÄÐí¶àÏîÄ¿¶¼´æ´¢ÔÚBigTableÖУ¬°üÀ¨ËÑË÷¡¢µØÍ¼¡¢²Æ¾¡£
HBase¼ò½é£º
HBaseÊÇÒ»¸ö¸ß¿É¿¿¡¢¸ßÐÔÄÜ¡¢ÃæÏòÁС¢¿ÉÉìËõµÄ·Ö²¼Ê½Êý¾Ý¿â£¬ÊǹȸèBigTableµÄ¿ªÔ´ÊµÏÖ£¬Ö÷ÒªÓÃÀ´´æ´¢·Ç½á¹¹»¯ºÍ°ë½á¹¹»¯µÄËÉÉ¢Êý¾Ý¡£HBaseµÄÄ¿±êÊÇ´¦Àí·Ç³£ÅÓ´óµÄ±í£¬¿ÉÒÔͨ¹ýˮƽÀ©Õ¹µÄ·½Ê½£¬ÀûÓÃÁ®¼Û¼ÆËã»ú¼¯Èº´¦ÀíÓɳ¬¹ý10ÒÚÐÐÊý¾ÝºÍÊý°ÙÍòÁÐÔªËØ×é³ÉµÄÊý¾Ý±í¡£

ͼ£ºHadoopÉú̬ϵͳÖÐHBaseÓëÆäËû²¿·ÖµÄ¹ØÏµ
ÊʺÏÓÃÓÚ´ó±íÊý¾Ý£¨±íµÄ¹æÄ£¿ÉÒÔ´ïµ½ÊýÊ®ÒÚÐÐÒÔ¼°Êý°ÙÍòÁУ©£¬²¢ÇÒ¶Ô´ó±íÊý¾ÝµÄ¶Áд·ÃÎÊ¿ÉÒԴﵽʵʱ¼¶±ð¡£
ÀûÓÃHadoop HDFS×÷ΪÆäÎļþ´æ´¢ÏµÍ³£¬Ìṩʵʱ¶ÁдµÄ·Ö²¼Ê½Êý¾Ý¿âϵͳ¡£
ÀûÓÃZooKeeper×÷ΪÐͬ·þÎñ¡£
HBaseºÍBigTableµÄµ×²ã¼¼Êõ¶ÔÓ¦¹ØÏµ£º

HBase³öÏÖµÄÔÒò£º
¹ØÏµÊý¾Ý¿âÒѾÁ÷ÐкܶàÄ꣬²¢ÇÒHadoopÒѾÓÐÁËHDFSºÍMapReduce£¬ÎªÊ²Ã´ÐèÒªHBase?
Hadoop¿ÉÒԺܺõؽâ¾ö´ó¹æÄ£Êý¾ÝµÄÀëÏßÅúÁ¿´¦ÀíÎÊÌ⣬µ«ÊÇ£¬ÊÜÏÞÓÚHadoop MapReduce±à³Ì¿ò¼ÜµÄ¸ßÑÓ³ÙÊý¾Ý´¦Àí»úÖÆ£¬Ê¹µÃHadoopÎÞ·¨Âú×ã´ó¹æÄ£Êý¾Ýʵʱ´¦ÀíÓ¦ÓõÄÐèÇó¡£
HDFSÃæÏòÅúÁ¿·ÃÎÊģʽ£¬²»ÊÇËæ»ú·ÃÎÊģʽ¡£
´«Í³µÄͨÓùØÏµÐÍÊý¾Ý¿âÎÞ·¨Ó¦¶ÔÔÚÊý¾Ý¹æÄ£¾çÔöʱµ¼ÖµÄϵͳÀ©Õ¹ÐÔºÍÐÔÄÜÎÊÌ⣨·Ö¿â·Ö±íÒ²²»Äܺܺýâ¾ö£©¡£
´«Í³¹ØÏµÊý¾Ý¿âÔÚÊý¾Ý½á¹¹±ä»¯Ê±Ò»°ãÐèҪͣ»úά»¤£»¿ÕÁÐÀË·Ñ´æ´¢¿Õ¼ä¡£
Òò´Ë£¬Òµ½ç³öÏÖÁËÒ»ÀàÃæÏò°ë½á¹¹»¯Êý¾Ý´æ´¢ºÍ´¦ÀíµÄ¸ß¿ÉÀ©Õ¹¡¢µÍдÈë/²éѯÑÓ³ÙµÄϵͳ£¬ÀýÈ磬¼üÖµÊý¾Ý¿â¡¢ÎĵµÊý¾Ý¿âºÍÁÐ×åÊý¾Ý¿â£¨ÈçBigTableºÍHBaseµÈ£©¡£
HBaseÒѾ³É¹¦Ó¦ÓÃÓÚ»¥ÁªÍø·þÎñÁìÓòºÍ´«Í³ÐÐÒµµÄÖÚ¶àÔÚÏßʽÊý¾Ý·ÖÎö´¦ÀíϵͳÖС£
HBaseÓ봫ͳ¹ØÏµÊý¾Ý¿â¶Ô±È·ÖÎö£º
HBaseÓ봫ͳµÄ¹ØÏµÊý¾Ý¿âµÄÇø±ðÖ÷ÒªÌåÏÖÔÚÒÔϼ¸¸ö·½Ã棺
Êý¾ÝÀàÐÍ£º¹ØÏµÊý¾Ý¿â²ÉÓùØÏµÄ£ÐÍ£¬¾ßÓзḻµÄÊý¾ÝÀàÐͺʹ洢·½Ê½£¬HBaseÔò²ÉÓÃÁ˸ü¼Ó¼òµ¥µÄÊý¾ÝÄ£ÐÍ£¬Ëü°ÑÊý¾Ý´æ´¢ÎªÎ´¾½âÊ͵Ä×Ö·û´®¡£
Êý¾Ý²Ù×÷£º¹ØÏµÊý¾Ý¿âÖаüº¬Á˷ḻµÄ²Ù×÷£¬ÆäÖлáÉæ¼°¸´ÔӵĶà±íÁ¬½Ó¡£HBase²Ù×÷Ôò²»´æÔÚ¸´ÔӵıíÓë±íÖ®¼äµÄ¹ØÏµ£¬Ö»Óмòµ¥µÄ²åÈë¡¢²éѯ¡¢É¾³ý¡¢Çå¿ÕµÈ£¬ÒòΪHBaseÔÚÉè¼ÆÉϾͱÜÃâÁ˸´ÔӵıíºÍ±íÖ®¼äµÄ¹ØÏµ¡£
´æ´¢Ä£Ê½£º¹ØÏµÊý¾Ý¿âÊÇ»ùÓÚÐÐģʽ´æ´¢µÄ¡£HBaseÊÇ»ùÓÚÁд洢µÄ£¬Ã¿¸öÁÐ×å¶¼Óɼ¸¸öÎļþ±£´æ£¬²»Í¬ÁÐ×åµÄÎļþÊÇ·ÖÀëµÄ¡£
Êý¾ÝË÷Òý£º¹ØÏµÊý¾Ý¿âͨ³£¿ÉÒÔÕë¶Ô²»Í¬Áй¹½¨¸´ÔӵĶà¸öË÷Òý£¬ÒÔÌá¸ßÊý¾Ý·ÃÎÊÐÔÄÜ¡£HBaseÖ»ÓÐÒ»¸öË÷Òý¡ª¡ªÐмü£¬Í¨¹ýÇÉÃîµÄÉè¼Æ£¬HBaseÖеÄËùÓзÃÎÊ·½·¨£¬»òÕßͨ¹ýÐмü·ÃÎÊ£¬»òÕßͨ¹ýÐмüɨÃ裬´Ó¶øÊ¹µÃÕû¸öϵͳ²»»áÂýÏÂÀ´¡£
Êý¾Ýά»¤£ºÔÚ¹ØÏµÊý¾Ý¿âÖУ¬¸üвÙ×÷»áÓÃ×îеĵ±Ç°ÖµÈ¥Ìæ»»¼Ç¼ÖÐÔÀ´µÄ¾ÉÖµ£¬¾ÉÖµ±»¸²¸Çºó¾Í²»»á´æÔÚ¡£¶øÔÚHBaseÖÐÖ´ÐиüвÙ×÷ʱ£¬²¢²»»áɾ³ýÊý¾Ý¾ÉµÄ°æ±¾£¬¶øÊÇÉú³ÉÒ»¸öеİ汾£¬¾ÉÓеİ汾ÈÔÈ»±£Áô¡£
¿ÉÉìËõÐÔ£º¹ØÏµÊý¾Ý¿âºÜÄÑʵÏÖºáÏòÀ©Õ¹£¬×ÝÏòÀ©Õ¹µÄ¿Õ¼äÒ²±È½ÏÓÐÏÞ¡£Ïà·´£¬HBaseºÍBigTableÕâЩ·Ö²¼Ê½Êý¾Ý¿â¾ÍÊÇΪÁËʵÏÖÁé»îµÄˮƽÀ©Õ¹¶ø¿ª·¢µÄ£¬Äܹ»ÇáÒ×µØÍ¨¹ýÔÚ¼¯ÈºÖÐÔö¼Ó»òÕß¼õÉÙÓ²¼þÊýÁ¿À´ÊµÏÖÐÔÄܵÄÉìËõ
HBaseÓ¦Óó¡¾°£º
HBaseÊʺϾßÓÐÈçÏÂÐèÇóµÄÓ¦Óãº
º£Á¿Êý¾Ý£¨TB£¬PB£©¡£
²»ÐèÒªÍêȫӵÓд«Í³¹ØÏµÐÍÊý¾Ý¿âËù¾ß±¸µÄACIDÌØÐÔ¡£
¸ßÍÌÍÂÁ¿¡£
ÐèÒªÔÚº£Á¿Êý¾ÝÖÐʵÏÖ¸ßЧµÄËæ»ú¶ÁÈ¡¡£
ÐèÒªºÜºÃµÄÐÔÄÜÉìËõÐÔ¡£
Äܹ»Í¬Ê±´¦Àí½á¹¹»¯ºÍ·Ç½á¹¹»¯Êý¾Ý¡£
HBase·ÃÎʽӿڣº

HBaseÔÚFusionInsightÖеÄλÖãº
HBase×÷Ϊһ¸ö¸ß¿É¿¿ÐÔ¡¢¸ßÐÔÄÜ¡¢ÃæÏòÁС¢¿ÉÉìËõµÄ·Ö²¼Ê½Êý¾Ý¿â£¬Ìṩº£Á¿Êý¾Ý´æ´¢¹¦ÄÜ£¬ÓÃÀ´½â¾ö¹ØÏµÐÍÊý¾Ý¿âÔÚº£Á¿Êý¾ÝʱµÄ¾ÖÏÞÐÔ¡£

ͼ£º HBaseÔÚFusionInsightÖеÄλÖÃ
HBaseÊý¾ÝÄ£ÐÍ
Êý¾ÝÄ£Ð͸ÅÊö£º
HBaseÊÇÒ»¸öÏ¡Êè¡¢¶àά¶È¡¢ÅÅÐòµÄÓ³Éä±í£¬ÕâÕűíµÄË÷ÒýÊÇÐмü¡¢ÁÐ×å¡¢ÁÐÏÞ¶¨·ûºÍʱ¼ä´Á¡£
ÿ¸öÖµÊÇÒ»¸öδ¾½âÊ͵Ä×Ö·û´®£¬Ã»ÓÐÊý¾ÝÀàÐÍ¡£
Óû§ÔÚ±íÖд洢Êý¾Ý£¬Ã¿Ò»Ðж¼ÓÐÒ»¸ö¿ÉÅÅÐòµÄÐмüºÍÈÎÒâ¶àµÄÁС£
±íÔÚˮƽ·½ÏòÓÉÒ»¸ö»òÕß¶à¸öÁÐ×å×é³É£¬Ò»¸öÁÐ×åÖпÉÒÔ°üº¬ÈÎÒâ¶à¸öÁУ¬Í¬Ò»¸öÁÐ×åÀïÃæµÄÊý¾Ý´æ´¢ÔÚÒ»Æð¡£
ÁÐ×åÖ§³Ö¶¯Ì¬À©Õ¹£¬¿ÉÒÔºÜÇáËɵØÌí¼ÓÒ»¸öÁÐ×å»òÁУ¬ÎÞÐèÔ¤Ïȶ¨ÒåÁеÄÊýÁ¿ÒÔ¼°ÀàÐÍ£¬ËùÓÐÁоùÒÔ×Ö·û´®ÐÎʽ´æ´¢£¬Óû§ÐèÒª×ÔÐнøÐÐÊý¾ÝÀàÐÍת»»¡£
HBaseÖÐÖ´ÐиüвÙ×÷ʱ£¬²¢²»»áɾ³ýÊý¾Ý¾ÉµÄ°æ±¾£¬¶øÊÇÉú³ÉÒ»¸öеİ汾£¬¾ÉÓеİ汾ÈÔÈ»±£Áô£¨ÕâÊǺÍHDFSÖ»ÔÊÐí×·¼Ó²»ÔÊÐíÐ޸ĵÄÌØÐÔÏà¹ØµÄ£©¡£
Êý¾ÝÄ£ÐÍÏà¹Ø¸ÅÄ
±í£ºHBase²ÉÓñíÀ´×éÖ¯Êý¾Ý£¬±íÓÉÐкÍÁÐ×é³É£¬Áл®·ÖΪÈô¸É¸öÁÐ×å¡£
ÐУºÃ¿¸öHBase±í¶¼ÓÉÈô¸ÉÐÐ×é³É£¬Ã¿¸öÐÐÓÉÐмü£¨row key£©À´±êʶ¡£
ÁÐ×壺һ¸öHBase±í±»·Ö×é³ÉÐí¶à¡°ÁÐ×塱£¨Column Family£©µÄ¼¯ºÏ£¬ËüÊÇ»ù±¾µÄ·ÃÎÊ¿ØÖƵ¥Ôª¡£
ÁÐÏÞ¶¨·û£ºÁÐ×åÀïµÄÊý¾Ýͨ¹ýÁÐÏÞ¶¨·û£¨»òÁУ©À´¶¨Î»¡£
µ¥Ôª¸ñ£ºÔÚHBase±íÖУ¬Í¨¹ýÐС¢ÁÐ×åºÍÁÐÏÞ¶¨·ûÈ·¶¨Ò»¸ö¡°µ¥Ôª¸ñ¡±£¨cell£©£¬µ¥Ôª¸ñÖд洢µÄÊý¾ÝûÓÐÊý¾ÝÀàÐÍ£¬×ܱ»ÊÓΪ×Ö½ÚÊý×ébyte[]¡£
ʱ¼ä´Á£ºÃ¿¸öµ¥Ôª¸ñ¶¼±£´æ×Åͬһ·ÝÊý¾ÝµÄ¶à¸ö°æ±¾£¬ÕâЩ°æ±¾²ÉÓÃʱ¼ä´Á½øÐÐË÷Òý¡£

ͼ£º±íʾÀý
ÈçÉÏͼ£º¸Ãµ¥Ôª¸ñÓÐ2¸öʱ¼ä´Áts1ºÍts2£¬Ã¿¸öʱ¼ä´Á¶ÔÓ¦Ò»¸öÊý¾Ý°æ±¾¡£
Êý¾Ý×ø±ê£º
HBaseÖÐÐèÒª¸ù¾ÝÐмü¡¢ÁÐ×å¡¢ÁÐÏÞ¶¨·ûºÍʱ¼ä´ÁÀ´È·¶¨Ò»¸öµ¥Ôª¸ñ£¬Òò´Ë£¬¿ÉÒÔÊÓΪһ¸ö¡°ËÄÎ¬×ø±ê¡±£¬¼´[Ðмü,
ÁÐ×å, ÁÐÏÞ¶¨·û, ʱ¼ä´Á]¡£

ͼ£ºÊý¾Ý±íʾ·¨Ê¾Àý
¸ÅÄîÊÓͼ£º

ͼ£ºHBaseÊý¾ÝµÄ¸ÅÄîÊÓͼ
ÎïÀíÊÓͼ:

ͼ£ºHBaseÊý¾ÝµÄÎïÀíÊÓͼ
ÃæÏòÁеĴ洢£º

ͼ£ºº»ÊµÊý¾Ý¿âºÍÁÐʽÊý¾Ý¿âʾÒâͼ
Ðд洢£ºÊý¾Ý°´Ðд洢ÔڵײãÎļþϵͳÖС£Í¨³££¬Ã¿Ò»Ðлᱻ·ÖÅä¹Ì¶¨µÄ¿Õ¼ä¡£
Óŵ㣺ÓÐÀûÓÚÔö¼Ó¡¢ÐÞ¸ÄÕûÐмǼµÈ²Ù×÷£»ÓÐÀíÓÉÊý¾ÝµÄ¶ÁÈ¡²Ù×÷¡£
ȱµã£ºµ¥Áвéѯʱ£¬»á¶ÁȡһЩ²»±ØÒªµÄÊý¾Ý¡£
Áд洢£ºÊý¾ÝÒÔÁÐΪµ¥Î»£¬´æ´¢ÔڵײãÎļþϵͳÖС£
Óŵ㣺ÓÐÀûÓÚÃæÏòµ¥ÁÐÊý¾ÝµÄ¶ÁÈ¡¡¢Í³¼ÆµÈ²Ù×÷¡£
ȱµã£ºÕûÐжÁȡʱ£¬¿ÉÄÜÐèÒª¶à´ÎI/O²Ù×÷¡£
KeyValue´æ´¢Ä£ÐÍ£º

ͼ£ºKeyValue´æ´¢Ä£ÐÍ
KeyValue¾ßÓÐÌØÐԵĽṹ¡£Key²¿·Ö±»ÓÃÀ´¿ìËÙ¼ìË÷Ò»ÌõÊý¾Ý¼Ç¼£¬Value²¿·ÖÓÃÀ´´æ´¢Êµ¼ÊµÄÓû§Êý¾ÝÐÅÏ¢¡£
KeyValue×÷Ϊ³ÐÔØÓû§Êý¾ÝµÄ»ù±¾µ¥Ôª£¬ÐèÒª±£´æÒ»Ð©¶Ô×ÔÉíµÄÃèÊöÐÅÏ¢¡£ÀýÈ磬ʱ¼ä´Á£¬ÀàÐ͵ȵȡ£ÄÇÃ´ÊÆ±Ø»áÓÐÒ»¶¨µÄ½á¹¹»¯¿Õ¼ä¿ªÏú¡£
Ö§³Ö¶¯Ì¬Ôö¼ÓÁУ¬ÈÝÒ×ÊÊÓ¦Êý¾ÝÀàÐͺͽṹµÄ±ä»¯¡£ÒÔ¿éΪµ¥Ôª²Ù×÷Êý¾Ý£¬Áм䡢±í¼ä²¢ÎÞ¹ØÁª¹ØÏµ¡£
KeyValueÐÍÊý¾Ý¿âÊý¾Ý·ÖÇø·½Ê½¨C°´KeyÖµÁ¬Ðø·¶Î§·ÖÇø¡£ÈçÏÂͼ£º

Êý¾Ý°´ÕÕRowKeyµÄ·¶Î§£¨°´RowKeyµÄ×Öµä˳Ðò£©£¬»®·ÖΪһ¸ö¸öµÄ×ÓÇø¼ä¡£Ã¿Ò»¸ö×ÓÇø¼ä¶¼ÊÇÒ»¸ö·Ö²¼Ê½´æ´¢µÄ»ù±¾µ¥Ôª¡£
HBaseµÄµ×²ãÊý¾ÝÒÔKeyValueµÄÐÎʽ´æÔÚ£¬KeyValue¾ßÓÐÌØ¶¨µÄ¸ñʽ¡£
KeyValueÖÐÓµÓÐʱ¼ä´Á¡¢ÀàÐ͵ȹؼüÐÅÏ¢¡£
ͬһ¸öKeyÖµ¿ÉÒÔ¹ØÁª¶à¸öValue£¬Ã¿Ò»¸öKeyValue¶¼ÓµÓÐÒ»¸öQualifier±êʶ¡£
¼´Ê¹ÊÇKeyÖµÏàͬ£¬QualifierÒ²ÏàͬµÄ¶à¸öKeyValue£¬Ò²¿ÉÄÜÓжà¸ö£¬´ËʱʹÓÃʱ¼ä´ÁÀ´Çø·Ö£¬Õâ¾ÍÊÇͬһÌõÊý¾Ý¼Ç¼µÄ¶à°æ±¾¡£
HBaseʵÏÖÔÀí
HBase¹¦ÄÜ×é¼þ£º
HBaseµÄʵÏÖ°üÀ¨Èý¸öÖ÷ÒªµÄ¹¦ÄÜ×é¼þ£º
¿âº¯Êý£ºÁ´½Óµ½Ã¿¸ö¿Í»§¶Ë
Ò»¸öMasterÖ÷·þÎñÆ÷
Ðí¶à¸öRegion·þÎñÆ÷
Ö÷·þÎñÆ÷Master¸ºÔð¹ÜÀíºÍά»¤HBase±íµÄ·ÖÇøÐÅÏ¢£¬Î¬»¤Region·þÎñÆ÷ÁÐ±í£¬·ÖÅäRegion£¬¸ºÔؾùºâ¡£
Region·þÎñÆ÷¸ºÔð´æ´¢ºÍά»¤·ÖÅ䏸×Ô¼ºµÄRegion£¬´¦ÀíÀ´×Ô¿Í»§¶ËµÄ¶ÁдÇëÇó¡£
¿Í»§¶Ë²¢²»ÊÇÖ±½Ó´ÓMasterÖ÷·þÎñÆ÷É϶ÁÈ¡Êý¾Ý£¬¶øÊÇÔÚ»ñµÃRegionµÄ´æ´¢Î»ÖÃÐÅÏ¢ºó£¬Ö±½Ó´ÓRegion·þÎñÆ÷É϶ÁÈ¡Êý¾Ý¡£
¿Í»§¶Ë²¢²»ÒÀÀµMaster£¬¶øÊÇͨ¹ýZookeeperÀ´»ñµÃRegionλÖÃÐÅÏ¢£¬´ó¶àÊý¿Í»§¶ËÉõÖÁ´ÓÀ´²»ºÍMasterͨÐÅ£¬ÕâÖÖÉè¼Æ·½Ê½Ê¹µÃMaster¸ºÔغÜС¡£
Region»ù±¾¸ÅÄ
Region

ͼ£ºRegionµÄÀ´Ô´
½«Ò»¸öÊý¾Ý±í°´KeyÖµ·¶Î§ºáÏò»®·ÖΪһ¸ö¸öµÄ×Ó±í£¬ÊµÏÖ·Ö²¼Ê½´æ´¢¡£
Õâ¸ö×Ó±í£¬ÔÚHBaseÖб»³Æ×÷¡°Region¡±¡£
ÿһ¸öRegion¶¼¹ØÁªÒ»¸öKeyÖµ·¶Î§£¬¼´Ò»¸öʹÓÃStartKeyºÍEndKeyÃèÊöµÄÇø¼ä£¬ÊÂʵÉÏ£¬Ã¿Ò»¸öRegion½ö½ö¼Ç¼StartKey¾Í¿ÉÒÔ£¬ÒòΪËüµÄEndKey¾ÍÊÇÏÂÒ»¸öRegionµÄStartKey¡£
RegionÊÇHBase·Ö²¼Ê½´æ´¢µÄ×î»ù±¾µ¥Ôª¡£

ͼ£ºRegion·ÖÀà
Region·ÖΪԪÊý¾ÝRegionÒÔ¼°Óû§RegionÁ½Àà¡£
Meta Region¼Ç¼ÁËÿһ¸öUser RegionµÄ·ÓÉÐÅÏ¢¡£
¶ÁдRegionÊý¾ÝµÄ·ÓÉ£¬°üÀ¨Èçϼ¸²½£º
ѰÕÒMeta RegionµØÖ·¡£
ÔÙÓÉMeta RegionѰÕÒUser RegionµØÖ·¡£
Column Family(ÁÐ×å)£º

ͼ£ºÁÐ×å
ColumnFamilyÊÇRegionµÄÒ»¸öÎïÀí´æ´¢µ¥Ôª¡£Í¬Ò»¸öRegionÏÂÃæµÄ¶à¸öColumnFamily£¬Î»ÓÚ²»Í¬µÄ·¾¶ÏÂÃæ¡£
ColumnFamilyÐÅÏ¢ÊÇ±í¼¶±ðµÄÅäÖá£Ò²¾ÍÊÇ˵£¬Í¬Ò»¸ö±íµÄ¶à¸öRegion£¬¶¼ÓµÓÐÏàͬµÄColumnFamilyÐÅÏ¢¡££¨ÀýÈ磬¶¼ÓÐÁ½¸öColumnFamily£¬ÇÒ²»Í¬RegionµÄͬһ¸öColumnFamilyÅäÖÃÐÅÏ¢Ïàͬ£©¡£
±íºÍRegion£º
¿ªÊ¼Ö»ÓÐÒ»¸öRegion£¬ºóÀ´²»¶Ï·ÖÁÑRegion²ð·Ö²Ù×÷·Ç³£¿ì£¬½Ó½ü˲¼ä£¬ÒòΪ²ð·ÖÖ®ºóµÄRegion¶ÁÈ¡µÄÈÔÈ»ÊÇÔ´æ´¢Îļþ£¬Ö±µ½¡°ºÏ²¢¡±¹ý³Ì°Ñ´æ´¢ÎļþÒì²½µØÐ´µ½¶ÀÁ¢µÄÎļþÖ®ºó£¬²Å»á¶ÁÈ¡ÐÂÎļþ¡£
ÿ¸öRegionĬÈÏ´óСÊÇ100MBµ½200MB£¨2006ÄêÒÔǰµÄÓ²¼þÅäÖã©
ÿ¸öRegionµÄ×î¼Ñ´óСȡ¾öÓÚµ¥Ì¨·þÎñÆ÷µÄÓÐЧ´¦ÀíÄÜÁ¦¡£
Ŀǰÿ¸öRegion×î¼Ñ´óС½¨Òé1GB-2GB£¨2013ÄêÒÔºóµÄÓ²¼þÅäÖã©¡£
ͬһ¸öRegion²»»á±»·Ö²ðµ½¶à¸öRegion·þÎñÆ÷.
ÿ¸öRegion·þÎñÆ÷´æ´¢10-1000¸öRegion.
RegionµÄ¶¨Î»:
ÔªÊý¾Ý±í
ÓÖÃû.META.±í£¬´æ´¢ÁËRegionºÍRegion·þÎñÆ÷µÄÓ³Éä¹ØÏµ.ÓÃÀ´°ïÖúClient¶¨Î»µ½¾ßÌåµÄRegion¡£
µ±HBase±íºÜ´óʱ£¬ÔªÊý¾ÝÒ²»á±»ÇзÖΪ¶à¸öRegina£¬RegionµÄÔªÊý¾ÝÐÅÏ¢±£´æÔÚZookeeperÖС£
¸ùÊý¾Ý±í£¬ÓÖÃû-ROOT-±í£¬¼Ç¼ËùÓÐÔªÊý¾ÝµÄ¾ßÌåλÖá£
-ROOT-±íÖ»ÓÐΨһһ¸öRegion£¬Ãû×ÖÊÇÔÚ³ÌÐòÖб»Ð´ËÀµÄ¡£
ZookeeperÎļþ¼Ç¼ÁË-ROOT-±íµÄλÖá£

ͼ£ºHBaseµÄÈý²ã½á¹¹
HBaseµÄÈý²ã½á¹¹Öи÷²ã´ÎµÄÃû³ÆºÍ×÷Óãº
µÚÒ»²ã£ºZookeeperÎļþ£¬¼Ç¼ÒÔ-ROOt-±íµÄλÖÃÐÅÏ¢¡£
µÚ¶þ²ã£º-ROOT-±í£¬¼Ç¼ÁË.META.±íµÄRegionλÖÃÐÅÏ¢¡£-ROOT-±íÖ»ÄÜÒ»¸öRegion¡£Í¨¹ý-ROOT-±í£¬¾Í¿ÉÒÔ·ÃÎÊ.META¡£±íÖеÄÊý¾Ý¡£
µÚÈý²ã£º.META.±í£¬¼Ç¼ÁËÓû§Êý¾Ý±íµÄRegionλÖÃÏ¢£¬.META.±í¿ÉÒÔÓжà¸öRegion£¬±£´æÁËHBaseÖÐËùÓÐÓû§Êý¾Ý±íµÄRegionλÖÃÐÅÏ¢¡£
ΪÁ˼ӿì·ÃÎÊËÙ¶È£¬.META.±íµÄÈ«²¿Region¶¼»á±»±£´æÔÚÄÚ´æÖС£
¼ÙÉè.META.±íµÄÿÐУ¨Ò»¸öÓ³ÉäÌõÄ¿£©ÔÚÄÚ´æÖдóÔ¼Õ¼ÓÃ1KB£¬²¢ÇÒÿ¸öRegionÏÞÖÆÎª128MB£¬ÄÇô£¬ÉÏÃæµÄÈý²ã½á¹¹¿ÉÒÔ±£´æµÄÓû§Êý¾Ý±íµÄRegionÊýÄ¿µÄ¼ÆËã·½·¨ÊÇ£º
-ROOT-±íÄܹ»Ñ°Ö·µÄ.META.±íµÄRegion¸öÊý£©¡Á£¨Ã¿¸ö.META.±íµÄ Region¿ÉÒÔѰַµÄÓû§Êý¾Ý±íµÄRegion¸öÊý£©
Ò»¸ö-ROOT-±í×î¶àÖ»ÄÜÓÐÒ»¸öRegion£¬Ò²¾ÍÊÇ×î¶àÖ»ÄÜÓÐ128MB£¬°´ÕÕÿÐУ¨Ò»¸öÓ³ÉäÌõÄ¿£©Õ¼ÓÃ1KBÄÚ´æ¼ÆË㣬128MB¿Õ¼ä¿ÉÒÔÈÝÄÉ128MB/1KB=2µÄ17´Î·½
ÐС£
ÐУ¬Ò²¾ÍÊÇ˵£¬Ò»¸ö-ROOT-±í¿ÉÒÔѰַ2µÄ17´Î·½¸ö.META.±íµÄRegion¡£
ͬÀí£¬Ã¿¸ö.META.±íµÄ Region¿ÉÒÔѰַµÄÓû§Êý¾Ý±íµÄRegion¸öÊýÊÇ128MB/1KB=2µÄ17´Î·½¡£
×îÖÕ£¬Èý²ã½á¹¹¿ÉÒÔ±£´æµÄRegionÊýÄ¿ÊÇ(128MB/1KB) ¡Á (128MB/1KB) =
2µÄ34´Î·½¸öRegion¡£
¿Í»§¶Ë·ÃÎÊÊý¾ÝʱµÄ¡°Èý¼¶Ñ°Ö·¡±:
ΪÁ˼ÓËÙѰַ£¬¿Í»§¶Ë»á»º´æÎ»ÖÃÐÅÏ¢£¬Í¬Ê±£¬ÐèÒª½â¾ö»º´æÊ§Ð§ÎÊÌâ.
Ѱַ¹ý³Ì¿Í»§¶ËÖ»ÐèҪѯÎÊZookeeper·þÎñÆ÷£¬²»ÐèÒªÁ¬½ÓMaster·þÎñÆ÷.
ZookeeperΪHBaseÌṩ£º
·Ö²¼Ê½ËøµÄ·þÎñ£º
¶à¸öHMaster½ø³Ì¶¼»á³¢ÊÔ×ÅÈ¥ZookeeperÖÐдÈëÒ»¸ö¶ÔÓ¦µÄ½Úµã£¬¸Ã½áµãÖ»Äܱ»Ò»¸öHMaster½ø³Ì´´½¨³É¹¦£¬´´½¨³É¹¦µÄHMaster½ø³Ì¾ÍÊÇActive¡£
ʼþ¼àÌý»úÖÆ£º
Ö÷HMaster½ø³Ìå´µôÖ®ºó£¬±¸HMasterÔÚ¼àÌý¶ÔÓ¦µÄZookeeper½Úµã¡£Ö÷HMaster½ø³Ìå´µôÖ®ºó£¬¸Ã½Úµã»á±»É¾³ý£¬ÆäËûµÄ±¸HMaste¾Í¿ÉÒÔÊÕµ½ÏìÓ¦µÄÏûÏ¢¡£
΢ÐÍÊý¾Ý¿â½ÇÉ«£º
ZookeeperÖдæ·ÅÁËRegion ServerµÄµØÖ·£¬´Ëʱ£¬¿ÉÒÔ½«ËüÀí½â³ÉÒ»¸ö΢ÐÍÊý¾Ý¿â¡£
HBaseϵͳ¼Ü¹¹
HBaseϵͳ¼Ü¹¹£º

ͼ£ºHBaseϵͳ¼Ü¹¹Í¼
¸÷×é¼þ¹¦ÄÜ£º
¿Í»§¶Ë
¿Í»§¶Ë°üº¬·ÃÎÊHBaseµÄ½Ó¿Ú£¬Í¬Ê±ÔÚ»º´æÖÐά»¤×ÅÒѾ·ÃÎʹýµÄRegionλÖÃÐÅÏ¢£¬ÓÃÀ´¼Ó¿ìºóÐøÊý¾Ý·ÃÎʹý³Ì¡£
Zookeeper·þÎñÆ÷
Zookeeper¿ÉÒÔ°ïÖúÑ¡¾Ù³öÒ»¸öMaster×÷Ϊ¼¯ÈºµÄ×ܹܣ¬²¢±£Ö¤ÔÚÈκÎʱ¿Ì×ÜÓÐΨһһ¸öMasterÔÚÔËÐУ¬Õâ¾Í±ÜÃâÁËMasterµÄ¡°µ¥µãʧЧ¡±ÎÊÌâ
¡£
ZookeeperÊÇÒ»¸öºÜºÃµÄ¼¯Èº¹ÜÀí¹¤¾ß£¬±»´óÁ¿ÓÃÓÚ·Ö²¼Ê½¼ÆË㣬ÌṩÅäÖÃά»¤¡¢ÓòÃû·þÎñ¡¢·Ö²¼Ê½Í¬²½¡¢×é·þÎñµÈ¡£
Master£¨HMaster£©
Ö÷·þÎñÆ÷MasterÖ÷Òª¸ºÔð±íºÍRegionµÄ¹ÜÀí¹¤×÷£º
¨C ¹ÜÀíÓû§¶Ô±íµÄÔö¼Ó¡¢É¾³ý¡¢Ð޸ġ¢²éѯµÈ²Ù×÷¡£
¨C ʵÏÖ²»Í¬Region·þÎñÆ÷Ö®¼äµÄ¸ºÔؾùºâ¡£
¨C ÔÚRegion·ÖÁÑ»òºÏ²¢ºó£¬¸ºÔðÖØÐµ÷ÕûRegionµÄ·Ö²¼¡£
¨C ¶Ô·¢Éú¹ÊÕÏʧЧµÄRegion·þÎñÆ÷ÉϵÄRegion½øÐÐÇ¨ÒÆ¡£
-HMaster½ø³Ì¸ºÔðËùÓÐRegionµÄ×ªÒÆ²Ù×÷£º
ÐÂ±í´´½¨Ê±µÄRegion·ÖÅä¡£
ÔËÐÐÆÚ¼äµÄ¸ºÔؾùºâ±£Ö¤¡£
RegionServer FailoverºóµÄRegion½Ó¹Ü¡£
HMaster½ø³ÌÓÐÖ÷±¸½ÇÉ«¡£¼¯Èº¿ÉÒÔÅäÖÃÁ½¸öHMaster½ÇÉ«£¬¼¯ÈºÆô¶¯Ê±£¬ÕâЩHMaster½Çɫͨ¹ý¾ºÕù»ñµÃÖ÷HMaster½ÇÉ«¡£Ö÷HMasterÖ»ÄÜÓÐÒ»¸ö£¬±¸HMaster½ø³ÌÔÚ¼¯ÈºÔËÐÐÆÚ¼ä´¦ÓÚÐÝÃß״̬£¬²»¸ÉÉæÈκμ¯ÈºÊÂÎñ¡£
RegionServer£º
Region·þÎñÆ÷ÊÇHBaseÖÐ×îºËÐĵÄÄ£¿é£¬ÊÇHBaseµÄÊý¾Ý·þÎñ½ø³Ì¸ºÔð´¦ÀíÓû§µÄÊý¾ÝµÄ¶ÁдÇëÇó¡£
RegionÓÉRegionServer¹ÜÀí¡£ËùÓÐÓû§Êý¾ÝµÄ¶ÁдÇëÇ󣬶¼ÊǺÍRegionServerÉϵÄRegion½øÐн»»¥¡£
Region¿ÉÒÔÔÚRegionServerÖ®¼äÇ¨ÒÆ¡£
RegionServer¹¤×÷ÔÀí£º
###RegionServerµÄ¼Ü¹¹£º

ͼ£ºHBaseµÄRegionServer¼Ü¹¹
Store:Ò»¸öRegionÓÉÒ»¸ö»ò¶à¸öStore×é³É¡£Ã¿¸öStore¶ÔӦͼÖеÄÒ»¸öColumn Family¡£
MemStore£ºÒ»¸öStore°üº¬Ò»¸öMemStore£¬MemStore»º´æ¿Í»§¶ËÏòRegion²åÈëµÄÊý¾Ý¡£
StoreFile£ºMemStoreµÄÊý¾ÝFlushµ½HDFSºó³ÉΪStoreFile¡£
Hfile£ºHfile¶¨ÒåÁËStoreFileÔÚÎļþϵͳÖеĴ洢¸ñʽ£¬ËüÊǵ±Ç°HBaseϵͳ»ã×ÜStoreFileµÄ¾ßÌåʵÏÖ¡£
Hlog£ºHLogÈÕÖ¾±£Ö¤Á˵±RegionServer¹ÊÕϵÄÇé¿öÏÂÓû§Ð´ÈëµÄÊý¾Ý²»¶ªÊ§¡£
RegionServerµÄ¶à¸öRegion¹²ÏíÒ»¸öÏàͬµÄHlog¡£
Region·þÎñÆ÷Region·þÎñÆ÷ÏòHDFSÎļþϵͳÖжÁдÊý¾Ý£º

ͼ£ºRegion·þÎñÆ÷ÏòHDFSÎļþϵͳÖжÁдÊý¾Ý
(1)Óû§¶ÁдÊý¾Ý¹ý³Ì£º
Óû§Ð´ÈëÊý¾Ýʱ£¬±»·ÖÅäµ½ÏàÓ¦Region·þÎñÆ÷È¥Ö´ÐС£
Óû§Êý¾ÝÊ×Ïȱ»Ð´Èëµ½MemStoreºÍHlogÖС£
Ö»Óе±²Ù×÷дÈëHlogÖ®ºó£¬commit()µ÷ÓòŻὫÆä·µ»Ø¸ø¿Í»§¶Ë¡£
µ±Óû§¶ÁÈ¡Êý¾Ýʱ£¬Region·þÎñÆ÷»áÊ×ÏÈ·ÃÎÊMemStore»º´æ£¬Èç¹ûÕÒ²»µ½£¬ÔÙÈ¥´ÅÅÌÉÏÃæµÄStoreFileÖÐѰÕÒ¡£
£¨2£©»º´æµÄˢУº
ϵͳ»áÖÜÆÚÐԵذÑMemStore»º´æÀïµÄÄÚÈÝˢдµ½´ÅÅ̵ÄStoreFileÎļþÖУ¬Çå¿Õ»º´æ£¬²¢ÔÚHlogÀïÃæÐ´ÈëÒ»¸ö±ê¼Ç¡£
ÿ´Îˢд¶¼Éú³ÉÒ»¸öеÄStoreFileÎļþ£¬Òò´Ë£¬Ã¿¸öStore°üº¬¶à¸öStoreFileÎļþ¡£
ÿ¸öRegion·þÎñÆ÷¶¼ÓÐÒ»¸ö×Ô¼ºµÄHLog Îļþ£¬Ã¿´ÎÆô¶¯¶¼¼ì²é¸ÃÎļþ£¬È·ÈÏ×î½üÒ»´ÎÖ´Ðлº´æË¢Ð²Ù×÷Ö®ºóÊÇ·ñ·¢ÉúеÄдÈë²Ù×÷£»Èç¹û·¢ÏÖ¸üУ¬ÔòÏÈдÈëMemStore£¬ÔÙˢдµ½StoreFile£¬×îºóɾ³ý¾ÉµÄHlogÎļþ£¬¿ªÊ¼ÎªÓû§Ìṩ·þÎñ¡£¡¤
£¨3£©StoreFileµÄºÏ²¢£¨Compaction£©£º
HfileÎļþÊýĿԽÀ´Ô½¶à£¬¶ÁȡʱÑÓÒ²Ô½À´Ô½´ó¡£
ÿ´Îˢд¶¼Éú³ÉÒ»¸öеÄStoreFile£¬ÊýÁ¿Ì«¶à£¬Ó°Ïì²éÕÒËÙ¶È¡£
µ÷ÓÃStore.compact()°Ñ¶à¸öºÏ²¢³ÉÒ»¸ö¡£
ºÏ²¢²Ù×÷±È½ÏºÄ·Ñ×ÊÔ´£¬Ö»ÓÐÊýÁ¿´ïµ½Ò»¸öãÐÖµ²ÅÆô¶¯ºÏ²¢¡£
Store¹¤×÷ÔÀí£º
StoreÊÇRegion·þÎñÆ÷µÄºËÐÄ¡£
¶à¸öStoreFileºÏ²¢³ÉÒ»¸ö¡£
µ¥¸öStoreFile¹ý´óʱ£¬ÓÖ´¥·¢·ÖÁѲÙ×÷£¬1¸ö¸¸Region±»·ÖÁѳÉÁ½¸ö×ÓRegion¡£

ͼ£ºStoreFileµÄºÏ²¢ºÍ·ÖÁѹý³Ì
##HLog¹¤×÷ÔÀí£º
·Ö²¼Ê½»·¾³±ØÐëÒª¿¼ÂÇϵͳ³ö´í¡£HBase²ÉÓÃHLog±£Ö¤ÏµÍ³»Ö¸´¡£
HBaseϵͳΪÿ¸öRegion·þÎñÆ÷ÅäÖÃÁËÒ»¸öHLogÎļþ£¬ËüÊÇÒ»ÖÖԤдʽÈÕÖ¾£¨Write Ahead
Log£©¡£
Óû§¸üÐÂÊý¾Ý±ØÐëÊ×ÏÈдÈëÈÕÖ¾ºó£¬²ÅÄÜдÈëMemStore»º´æ£¬²¢ÇÒ£¬Ö±µ½MemStore»º´æÄÚÈݶÔÓ¦µÄÈÕÖ¾ÒѾдÈë´ÅÅÌ£¬¸Ã»º´æÄÚÈݲÅÄܱ»Ë¢Ð´µ½´ÅÅÌ¡£
Zookeeper»áʵʱ¼à²âÿ¸öRegion·þÎñÆ÷µÄ״̬£¬µ±Ä³¸öRegion·þÎñÆ÷·¢Éú¹ÊÕÏʱ£¬Zookeeper»á֪ͨMaster¡£
MasterÊ×ÏȻᴦÀí¸Ã¹ÊÕÏRegion·þÎñÆ÷ÉÏÃæÒÅÁôµÄHLogÎļþ£¬Õâ¸öÒÅÁôµÄHLogÎļþÖаüº¬ÁËÀ´×Ô¶à¸öRegion¶ÔÏóµÄÈÕÖ¾¼Ç¼¡£
ϵͳ»á¸ù¾ÝÿÌõÈÕÖ¾¼Ç¼ËùÊôµÄRegion¶ÔÏó¶ÔHLogÊý¾Ý½øÐвð·Ö£¬·Ö±ð·Åµ½ÏàÓ¦Region¶ÔÏóµÄĿ¼Ï£¬È»ºó£¬ÔÙ½«Ê§Ð§µÄRegionÖØÐ·ÖÅäµ½¿ÉÓõÄRegion·þÎñÆ÷ÖУ¬²¢°ÑÓë¸ÃRegion¶ÔÏóÏà¹ØµÄHLogÈÕÖ¾¼Ç¼Ҳ·¢Ë͸øÏàÓ¦µÄRegion·þÎñÆ÷¡£
Region·þÎñÆ÷ÁìÈ¡µ½·ÖÅ䏸×Ô¼ºµÄRegion¶ÔÏóÒÔ¼°ÓëÖ®Ïà¹ØµÄHLogÈÕÖ¾¼Ç¼ÒԺ󣬻áÖØÐÂ×öÒ»±éÈÕÖ¾¼Ç¼Öеĸ÷ÖÖ²Ù×÷£¬°ÑÈÕÖ¾¼Ç¼ÖеÄÊý¾ÝдÈëµ½MemStore»º´æÖУ¬È»ºó£¬Ë¢Ðµ½´ÅÅ̵ÄStoreFileÎļþÖУ¬Íê³ÉÊý¾Ý»Ö¸´¡£
¹²ÓÃÈÕÖ¾Óŵ㣺Ìá¸ß¶Ô±íµÄд²Ù×÷ÐÔÄÜ£»
ȱµã£º»Ö¸´Ê±ÐèÒª·Ö²ðÈÕÖ¾¡£
дÁ÷³Ì£º
£¨1£©¿Í»§¶Ë·¢ÆðдÊý¾ÝÇëÇó¡£
£¨2£©¶¨Î»Regoin¡£¶¨Î»µ½ÐèҪдµ½µÄRegionServer£¬Region£¬Rowkey¡£
£¨3£©Êý¾Ý·Ö×飺Õû¸öÊý¾Ý·Ö×飬ɿ¼°µ½Á½²½¡£
¡°·ÖÀº×Ó¡±²Ù×÷£º
¸ù¾Ýmete±íÕÒµ½±êµÄRegionÐÅÏ¢£¬´ËʱҲµÃµ½Á˶ÔÓ¦µÄRegionServerÐÅÏ¢¡£
¸ù¾Ýrowkey£¬½«Êý¾Ýдµ½Ö¸¶¨µÄregionÖС£
ÿ¸öRegionServerÉϵÄÊý¾Ý»áÒ»Æð·¢ËÍ¡£·¢ËÍÊý¾ÝÖУ¬¶¼ÊÇÒѾ°´ÕÕRegion·ÖºÃ×éÁË¡£
£¨4£©ÍùRegionServer·¢ËÍÇëÇó¡£
ÀûÓÃHBase×ÔÉí·â×°µÄRPC¿ò¼Ü£¬À´Íê³ÉÊý¾Ý·¢ËͲÙ×÷¡£
Íù¶à¸öRegionServer·¢ËÍÇëÇóÊDz¢Ðеġ£
¿Í»§¶Ë·¢ËÍÍêдÊý¾ÝÇëÇóºó£¬»á×Ô¶¯µÈ´ýÇëÇó´¦Àí½á¹û¡£
Èç¹û¿Í»§¶ËûÓв¶»ñµ½ÈκεÄÒì³££¬ÔòÈÏΪËùÓÐÊý¾Ý¶¼ÒѾ±»Ð´Èë³É¹¦¡£Èç¹ûÈ«²¿Ð´Èëʧ°Ü£¬»òÕß²¿·ÖдÈëʧ°Ü£¬¿Í»§¶ËÄܹý»ñÖªÏêϸµÄʧ°ÜkeyÖµÁÐ±í¡£
£¨5£©RegionдÊý¾ÝÁ÷³Ì¡£
»ñÈ¡Region²Ù×÷Ëø¡££¨¶ÁÐ´Ëø£©
Ò»´Î»ñÈ¡¸÷ÐÐÐÐËø¡£
дÈëµ½MemStoreÖС££¨Ò»¸öÄÚ´æÅÅÐò¼¯ºÏ£©
ÊÍ·ÅÒÔ»ñÈ¡µÄÐÐËø¡£
дÊý¾Ýµ½WALÖС££¨Write-Ahead-Log£©
ÊÍ·ÅRegionËø¡£
¼ÈÈ»ÊÇWrite-Ahead-Log£¬ÎªºÎÏÈдÄÚ´æÔÙдWAL£¿
ÏÈдÄÚ´æµÄÔÒò£ºHBaseÌṩÁËÒ»¸öMVCC»úÖÆ£¬À´±£ÕÏЩÊý¾Ý½×¶ÎµÄÊý¾Ý¿É¼ûÐÔ¡£Ð´Ð´MemStoreÔÙдWAL£¬ÊÇΪÁËÒ»Ð©ÌØÊⳡ¾°Ï£¬ÄÚ´æÖеÄÊý¾ÝÄܹ»¸ü¼°Ê±µÄ¿É½«¡£Èç¹ûÏÈдWALʧ°ÜµÄ»°£¬MemStoreÖú¹¥µÄÊý¾Ý»á±»»Ø¹ö¡£

дÁ÷³Ì
½«ÐèҪдÈë»òɾ³ýµÄÊý¾ÝÔÝʱ±£´æÔÚÿ¸öRegionµÄÄÚ´æÖУ¬¼´MemStoreÖС£
дÄڴ棬±ÜÃâ¶àRegionÇéÐÎÏ´øÀ´µÄ¹ý¶àµÄ·ÖÉ¢IO²Ù×÷¡£
Êý¾ÝÔÚдÈëµ½MemStoreÖ®ºó£¬Ò²»á˳Ðòдµ½HLogÖУ¬ÒÔ±£ÕÏÊý¾ÝµÄ°²È«¡£
£¨6£©Flush¡£
ÒÔ϶à¸ö³¡¾°£¬»á´¥·¢MemstoreµÄFlush²Ù×÷£º
RegionÖеÄMemStoreµÄ×Ü´óС£¬´ïµ½ÁËÔ¤ÉèµÄFlush SizeãÐÖµ¡£
MemStoreÕ¼ÓÃÄÚ´æµÄ×ÜÁ¿ºÍRegionServer×ÜÄÚ´æµÄ±ÈÖµ³¬³öÀ´ÁËÔ¤ÉèµÄãÐÖµ´óС¡£
µ±WALsÖÐÎļþÊýÁ¿´ïµ½ãÐֵʱ¡£
HBase¶¨ÆÚË¢ÐÂMemStore£¬Ä¬ÈÏÖÜÆÚΪ1Сʱ¡£
Óû§¿ÉÒÔͨ¹ýshellÃüÁî·Ö±ð¶ÔÒ»¸ö±í»òÕßÒ»¸öRegion½øÐÐFlush¡£
£¨7£©Compaction¡£
CompactionµÄÄ¿µÄ£¬ÊÇΪÁ˼õÉÙͬһ¸öRegionÖеÄͬһ¸öColumnFamilyÏÂÃæµÄСÎļþ£¨HFile£©ÊýÄ¿£¬´Ó¶øÌáÉý¶ÁÈ¡µÄÐÔÄÜ¡£
Compaction·ÖΪMinor¡¢MajorÁ½Àࣺ
Minor£ºÐ¡·¶Î§µÄCompaction¡£ÓÐ×îÉÙºÍ×î´óÎļþÊýÄ¿µÄÏÞÖÆ¡£Í¨³£»áÑ¡ÔñһЩÁ¬ÐøÊ±¼ä·¶Î§µÄСÎļþ½øÐкϲ¢¡£
Major£ºÉæ¼°¸ÃRegion¸ÃColumnFamilyÏÂÃæµÄËùÓÐHFileÎļþ¡£
Minor CompactionѡȡÎļþʱ£¬×ñÑÒ»¶¨µÄËã·¨¡£

ͼ£ºCompaction²Ù×÷ʾÀý
£¨8£©Region Split¡£
Region SplitÊÇÖ¸¼¯ÈºÆÚ¼ä£¬Ä³Ò»¸öRegionµÄ´óС³¬³öÁËÔ¤ÉèµÄãÐÖµ£¬ÔòÐèÒª½«¸ÃRegion×Ô¶¯·ÖÁѳÉΪÁ½¸öREgion¡£
·ÖÁѹý³ÌÖУ¬±»·ÖÁѵÄRegion»áÔÝÍ£¶Áд·þÎñ¡£ÓÉÓÚ·ÖÁѹý³ÌÖУ¬¸¸RegionµÄÊý¾ÝÎļþ²¢²»»áÕæÕýµÄ·ÖÁÑ£¬¶øÊǽö½öͨ¹ýÔÚеÄRegionÖд´½¨ÒýÓÃÎļþµÄ·½Ê½£¬À´ÊµÏÖ¿ìËÙ·ÖÁÑ¡£Òò´Ë£¬RegionÔÝÍ£·þÎñµÄʱ¼ä±È½Ï¶ÌÔÝ¡£
¿Í»§¶Ë²áËù»º´æµÄ¸¸RegionµÄ·ÓÉÐÅÏ¢ÐèÒª±»¸üС£
¶ÁÁ÷³Ì£º
£¨1£©¿Í»§¶Ë·¢Æð¶ÁÊý¾ÝÇëÇó£º
Get²Ù×÷ÔÚ¾«×¼µÄKeyÖµµÄÇéÐÎÏ£¬¶ÁÈ¡µ¥ÐÐÓû§Êý¾Ý¡£
Sacn²Ù×÷ʱΪÁËÅúÁ¿É¨ÃèÏÞ¶¨KEyÖµ·¶Î§µÄÓû§Êý¾Ý¡£
£¨2£©¶¨Î»Region¡£¶¨Î»µ½¸ÃÊý¾ÝËùÔÚµÄRegionServer£¬Region£¬Rowkey¡£
£¨3£©OpenScanner£ºOpenScanner¹ý³ÌÖУ¬»á´´½¨Á½ÖÖ²»Í¬µÄScannerÀ´¶ÁÈ¡Hfile¡¢MemStoreµÄÊý¾Ý¡£
HFile ¶ÔÓ¦µÄScannerΪStoreFileScanner¡£
MemStore¶ÔÓ¦µÄScannerΪ¶ÔÓ¦µÄMemStoreScanner¡£
£¨4£©Next£º

ÿһ¸öScannerÖУ¬¶¼ÓÐÒ»¸öÖ¸Õ룬ָÏò½ÓÏÂÀ´Òª¶ÁÈ¡µÄÓû§Êý¾ÝKeyValueÊÇÄÄÒ»¸ö¡£
ͬһ¼¶µÄScanner£¬±»·ÅÔÚͬһ¸öÓÅÏȼ¶¶ÓÁÐÖС£Í¨¹ý²»¶ÏµÄ¶Ô±Èÿһ¸öScannerµÄÖ¸ÕëËùÖ¸ÏòµÄKeyValue£¬½«ÕâЩScanner½øÐÐÅÅÐò¡£
ÿһ´ÎnextÇëÇ󣬶¼ÊÇ´Ó¸ÃÓÅÏȼ¶¶ÓÁÐÖУ¬Poll³öÒ»¸öScanner£¬È»ºó£¬¶ÁÈ¡¸ÃScannerµÄµ±Ç°Ö¸ÕëËùÖ¸ÏòµÄKeyValue¼´¿É¡£
ÿ¶ÁÒ»¸öScanner£¬Ö¸Õë¶¼»áÎÒÄǸöÏÂÒÆÒ»¸öKeyValue¡£¶øºó£¬¸ÃScanner±»·µ»¹µ½¶ÓÁÐÖС£Èç¹ûÒѾ¶ÁÍ꣬ÔòÖ±½Ó¹Ø±Õ¡£
£¨5£©FilterÔÊÐíÔÚScan¹ý³Ì»òÖ»Äܹ֣¬É趨һ¶¨µÄ¹ýÂËÌõ¼þ¡£·ûºÏÌõ¼þµÄÓû§Êý¾Ý²Å·µ»Ø¡£µ±Ç°°üº¬µÄһЩµäÐ͵ÄFilterÓУº
RowFilter
SingleColumnValueFilter
KeyOnlyFilter
FilterList
ʹÓÃFilterʱ£¬¿ÉÄÜ»áɨÃè´óÁ¿µÄÓû§Êý¾Ý£¬²Å¿ÉÒÔÕÒµ½ËùÆÚÍûµÄÂú×ãÌõ¼þµÄÊý¾Ý¡£Òò´Ë£¬Ò»Ð©³¡¾°ÏÂÐÔÄÜÊDz»¿ÉÔ¤¹ÀµÄ¡£
£¨6£©BloomFilter£º
BloomFilterÓÃÀ´ÓÅ»¯Ò»Ð©Ëæ»ú¶ÁÈ¡µÄ³¡¾°£¬¼´Get³¡¾°¡£Ëü¿ÉÒÔ±»ÓÃÀ´¿ìËÙµÄÅжÏÒ»ÌõÓû§Êý¾ÝÔÚÒ»¸ö´óµÄÊý¾Ý¼¯ºÏ£¨¸ÃÊý¾Ý¼¯ºÏµÄ´ó²¿·ÖÊý¾Ý¶¼Ã»·¨¼ÓÔØµ½ÄÚ´æÖУ©ÖÐÊÇ·ñ´æÔÚ¡£
BloomFilterÔÚÅжÏÒ»¸öÊý¾ÝÊÇ·ñ´æÔÚʱ£¬ÓµÓÐÒ»¶¨µÄÎóÅÐÂÊ¡£µ«¶ÔÓÚ¡°Óû§Êý¾ÝXXX²»´æÔÚ¡±µÄÅжϽá¹ûÊÇ¿ÉÐŵġ£
HBaseµÄBLoomFilterµÄÏà¹ØÊý¾Ý£¬±»±£´æÔÚHFileÖС£

HBaseÓ¦Ó÷½°¸
HBaseʵ¼ÊÓ¦ÓÃÖеÄÐÔÄÜÓÅ»¯·½·¨£º
Ðмü£¨Row Key£©
ÐмüÊǰ´ÕÕ×ÖµäÐò´æ´¢£¬Òò´Ë£¬Éè¼ÆÐмüʱ£¬Òª³ä·ÖÀûÓÃÕâ¸öÅÅÐòÌØµã£¬½«¾³£Ò»Æð¶ÁÈ¡µÄÊý¾Ý´æ´¢µ½Ò»¿é£¬½«×î½ü¿ÉÄܻᱻ·ÃÎʵÄÊý¾Ý·ÅÔÚÒ»¿é¡£
¾Ù¸öÀý×Ó£ºÈç¹û×î½üдÈëHBase±íÖеÄÊý¾ÝÊÇ×î¿ÉÄܱ»·ÃÎʵģ¬¿ÉÒÔ¿¼Âǽ«Ê±¼ä´Á×÷ΪÐмüµÄÒ»²¿·Ö£¬ÓÉÓÚÊÇ×ÖµäÐòÅÅÐò£¬ËùÒÔ¿ÉÒÔʹÓÃLong.MAX_VALUE
- timestamp×÷ΪÐмü£¬ÕâÑùÄܱ£Ö¤ÐÂдÈëµÄÊý¾ÝÔÚ¶Áȡʱ¿ÉÒÔ±»¿ìËÙÃüÖС£
InMemory
´´½¨±íµÄʱºò£¬¿ÉÒÔͨ¹ýHColumnDescriptor.setInMemory(true)½«±í·Åµ½Region·þÎñÆ÷µÄ»º´æÖУ¬±£Ö¤ÔÚ¶ÁÈ¡µÄʱºò±»cacheÃüÖС£
Max Version
´´½¨±íµÄʱºò£¬¿ÉÒÔͨ¹ýHColumnDescriptor.setMaxVersions(int maxVersions)ÉèÖñíÖÐÊý¾ÝµÄ×î´ó°æ±¾£¬Èç¹ûÖ»ÐèÒª±£´æ×îа汾µÄÊý¾Ý£¬ÄÇô¿ÉÒÔÉèÖÃsetMaxVersions(1)¡£
Time TO Live£º
´´½¨±íµÄʱºò£¬¿ÉÒÔͨ¹ýHColumnDescriptor.setTimeToLive(int timeToLive)ÉèÖñíÖÐÊý¾ÝµÄ´æ´¢ÉúÃüÆÚ£¬¹ýÆÚÊý¾Ý½«×Ô¶¯±»É¾³ý£¬ÀýÈçÈç¹ûÖ»ÐèÒª´æ´¢×î½üÁ½ÌìµÄÊý¾Ý£¬ÄÇô¿ÉÒÔÉèÖÃsetTimeToLive(2
24 60 * 60)¡£
HBaseÐÔÄܼàÊÓ£º
Master-status(×Ô´ø)£º
HBase MasterĬÈÏ»ùÓÚWebµÄUI·þÎñ¶Ë¿ÚΪ60010£¬HBase region·þÎñÆ÷ĬÈÏ»ùÓÚWebµÄUI·þÎñ¶Ë¿ÚΪ60030.Èç¹ûmasterÔËÐÐÔÚÃûΪmaster.foo.comµÄÖ÷»úÖУ¬materµÄÖ÷Ò³µØÖ·¾ÍÊÇhttp://master.foo.com:60010£¬Óû§¿ÉÒÔͨ¹ýWebä¯ÀÀÆ÷ÊäÈëÕâ¸öµØÖ·²é¿´¸ÃÒ³Ãæ¿ÉÒԲ鿴HBase¼¯ÈºµÄµ±Ç°×´Ì¬¡£
Ganglia£º
GangliaÊÇUC Berkeley·¢ÆðµÄÒ»¸ö¿ªÔ´¼¯Èº¼àÊÓÏîÄ¿£¬ÓÃÓÚ¼à¿ØÏµÍ³ÐÔÄÜ¡£
OpenTSDB£º
OpenTSDB¿ÉÒÔ´Ó´ó¹æÄ£µÄ¼¯Èº£¨°üÀ¨¼¯ÈºÖеÄÍøÂçÉ豸¡¢²Ù×÷ϵͳ¡¢Ó¦ÓóÌÐò£©ÖлñÈ¡ÏàÓ¦µÄmetrics²¢½øÐд洢¡¢Ë÷ÒýÒÔ¼°·þÎñ£¬´Ó¶øÊ¹µÃÕâЩÊý¾Ý¸üÈÝÒ×ÈÃÈËÀí½â£¬Èçweb»¯£¬Í¼Ðλ¯µÈ¡£
Ambari£º
Ambari µÄ×÷ÓþÍÊÇ´´½¨¡¢¹ÜÀí¡¢¼àÊÓ Hadoop µÄ¼¯Èº¡£
ÔÚHBaseÖ®ÉϹ¹½¨SQLÒýÇæ£º
NoSQLÇø±ðÓÚ¹ØÏµÐÍÊý¾Ý¿âµÄÒ»µã¾ÍÊÇNoSQL²»Ê¹ÓÃSQL×÷Ϊ²éѯÓïÑÔ£¬ÖÁÓÚΪºÎÔÚNoSQLÊý¾Ý´æ´¢HBaseÉÏÌṩSQL½Ó¿Ú£¬ÓÐÈçÏÂÔÒò£º
Ò×ʹÓá£Ê¹ÓÃÖîÈçSQLÕâÑùÒ×ÓÚÀí½âµÄÓïÑÔ£¬Ê¹ÈËÃÇÄܹ»¸ü¼ÓÇáËɵØÊ¹ÓÃHBase¡£
¼õÉÙ±àÂ롣ʹÓÃÖîÈçSQLÕâÑù¸ü¸ß²ã´ÎµÄÓïÑÔÀ´±àд£¬¼õÉÙÁ˱àдµÄ´úÂëÁ¿¡£
·½°¸£º 1.HiveÕûºÏHBase 2.Phoenix
1.HiveÕûºÏHBase
HiveÓëHBaseµÄÕûºÏ¹¦ÄÜ´ÓHive0.6.0°æ±¾ÒѾ¿ªÊ¼³öÏÖ£¬ÀûÓÃÁ½Õß¶ÔÍâµÄAPI½Ó¿Ú»¥ÏàͨÐÅ£¬Í¨ÐÅÖ÷ÒªÒÀ¿¿hive_hbase-handler.jar¹¤¾ß°ü(Hive
Storage Handlers)¡£ÓÉÓÚHBaseÓÐÒ»´Î±È½Ï´óµÄ°æ±¾±ä¶¯£¬ËùÒÔ²¢²»ÊÇÿ¸ö°æ±¾µÄHive¶¼ÄܺÍÏÖÓеÄHBase°æ±¾½øÐÐÕûºÏ£¬ËùÒÔÔÚʹÓùý³ÌÖÐÌØ±ð×¢ÒâµÄ¾ÍÊÇÁ½Õß°æ±¾µÄÒ»ÖÂÐÔ¡£
2.Phoenix
PhoenixÓÉSalesforce.com¿ªÔ´£¬Êǹ¹½¨ÔÚApache HBaseÖ®ÉϵÄÒ»¸öSQLÖмä²ã£¬¿ÉÒÔÈÿª·¢ÕßÔÚHBaseÉÏÖ´ÐÐSQL²éѯ¡£
¹¹½¨HBase¶þ¼¶Ë÷Òý£º
HBaseÖ»ÓÐÒ»¸öÕë¶ÔÐн¡µÄË÷Òý ·ÃÎÊHBase±íÖеÄÐУ¬Ö»ÓÐÈýÖÖ·½Ê½£º
ͨ¹ýµ¥¸öÐн¡·ÃÎÊ
ͨ¹ýÒ»¸öÐн¡µÄÇø¼äÀ´·ÃÎÊ
È«±íɨÃè
ʹÓÃÆäËû²úƷΪHBaseÐн¡ÌṩË÷Òý¹¦ÄÜ£º
Hindex¶þ¼¶Ë÷Òý
HBase+Redis
HBase+solr
ÔÀí£º²ÉÓÃHBase0.92°æ±¾Ö®ºóÒýÈëµÄCoprocessorÌØÐÔ¡£
Coprocessor¹¹½¨¶þ¼¶Ë÷Òý£º
Coprocessor£¨Ð´¦ÀíÆ÷£©ÌṩÁËÁ½¸öʵÏÖ£ºendpointºÍobserver£¬endpointÏ൱ÓÚ¹ØÏµÐÍÊý¾Ý¿âµÄ´æ´¢¹ý³Ì£¬¶øobserverÔòÏ൱ÓÚ´¥·¢Æ÷¡£
observerÔÊÐíÎÒÃÇÔڼǼputǰºó×öһЩ´¦Àí£¬Òò´Ë£¬¶øÎÒÃÇ¿ÉÒÔÔÚ²åÈëÊý¾Ýʱͬ²½Ð´ÈëË÷Òý±í¡£
Óŵ㣺 ·ÇÇÖÈëÐÔ£ºÒýÇæ¹¹½¨ÔÚHBaseÖ®ÉÏ£¬¼ÈûÓжÔHBase½øÐÐÈκθ͝£¬Ò²²»ÐèÒªÉϲãÓ¦ÓÃ×öÈκÎÍ×С£
ȱµã£ºÃ¿²åÈëÒ»ÌõÊý¾ÝÐèÒªÏòË÷Òý±í²åÈëÊý¾Ý£¬¼´ºÄʱÊÇË«±¶µÄ£¬¶ÔHBaseµÄ¼¯ÈºµÄѹÁ¦Ò²ÊÇË«±¶µÄ¡£

ͼ£º¶þ¼¶Ë÷ÒýʾÒâͼ
###Hindex:
Hindex ÊÇ»ªÎª¹«Ë¾¿ª·¢µÄ´¿ Java ±àдµÄHBase¶þ¼¶Ë÷Òý£¬¼æÈÝ Apache HBase
0.94.8¡£µ±Ç°µÄÌØÐÔÈçÏ£º
¶à¸ö±íË÷Òý
¶à¸öÁÐË÷Òý
»ùÓÚ²¿·ÖÁÐÖµµÄË÷Òý
HBase+Redis:
Redis+HBase·½°¸
Coprocessor¹¹½¨¶þ¼¶Ë÷Òý
Redis×ö¿Í»§¶Ë»º´æ
½«Ë÷Òýʵʱ¸üе½RedisµÈKVϵͳÖУ¬¶¨Ê±´ÓKV¸üÐÂË÷Òýµ½HBaseµÄË÷Òý±íÖÐ.

ͼ£ºHBase+Redis¶þ¼¶Ë÷Òý
HBase+solr:
SolrÊÇÒ»¸ö¸ßÐÔÄÜ£¬²ÉÓÃJava5¿ª·¢£¬»ùÓÚLuceneµÄÈ«ÎÄËÑË÷·þÎñÆ÷¡£Í¬Ê±¶ÔÆä½øÐÐÁËÀ©Õ¹£¬ÌṩÁ˱ÈLucene¸üΪ·á¸»µÄ²éѯÓïÑÔ£¬Í¬Ê±ÊµÏÖÁË¿ÉÅäÖᢿÉÀ©Õ¹²¢¶Ô²éѯÐÔÄܽøÐÐÁËÓÅ»¯£¬²¢ÇÒÌṩÁËÒ»¸öÍêÉÆµÄ¹¦ÄܹÜÀí½çÃæ£¬ÊÇÒ»¿î·Ç³£ÓÅÐãµÄÈ«ÎÄËÑË÷ÒýÇæ¡£

ͼ£ºHBase+Solr
HBase»ªÎªÔöÇ¿ÌØÐÔ
Ö§³Ö¶þ¼¶Ë÷Òý£º
¶þ¼¶Ë÷ÒýΪHBaseÌṩÁ˰´ÕÕijЩÁеÄÖµ½øÐÐË÷ÒýµÄÄÜÁ¦¡£

HFS£¨HBase FileStream£©£º
HBaseÎļþ´æ´¢Ä£¿é£¨HBase FileStream£¬¼ò³ÆHFS£©ÊÇHBaseµÄ¶ÀÁ¢Ä£¿é£¬Ëü×÷Ϊ¶ÔHBaseÓëHDFS½Ó¿ÚµÄ·â×°£¬Ó¦ÓÃÔÚFusionInsightµÄÉϲãÓ¦Óã¬ÎªÉϲãÓ¦ÓÃÌṩÎļþµÄ´æ´¢¡¢¶ÁÈ¡¡¢É¾³ýµÈ¹¦ÄÜ¡£
HFSµÄ³öÏÖ½â¾öÁËÐèÒªÔÚHDFSÖд洢º£Á¿Ð¡Îļþ£¬Í¬Ê±Ò²Òª´æ´¢Ò»Ð©´óÎļþµÄ»ìºÏµÄ³¡¾°¡£¼òµ¥À´Ëµ£¬¾ÍÊÇÔÚHBase±íÖУ¬ÐèÒª´æ·Å´óÁ¿µÄСÎļþ£¨10MBÒÔÏ£©£¬Í¬Ê±ÓÖÐèÒª´æ·ÅһЩ±È½Ï´óµÄÎļþ£¨10MBÒÔÉÏ¡££©
HBase MOB£º
MOBÊý¾Ý£¨¼´100KBµ½10MB´óСµÄÊý¾Ý£©Ö±½ÓÒÔHFileµÄ¸ñʽ´æ´¢ÔÚÎļþϵͳÉÏ£¨ÀýÈçHDFSÎļþϵͳ£©£¬È»ºó°ÑÕâ¸öÎļþµÄµØÖ·ÐÅÏ¢¼°´óСÐÅÏ¢×÷Ϊvalue´æ´¢ÔÚÆÕͨHBaseµÄstoreÉÏ£¬Í¨¹ý¹¥»÷¼¯ÖйÜÀíÕâЩÎļþ¡£ÕâÑù¾Í¿ÉÒÔ´ó´ó½µµÍHBaseµÄcompationºÍsplitƵÂÊ£¬ÌáÉýÐÔÄÜ¡£
|