ºÍдÁ÷³ÌÏà±È£¬HBase¶ÁÊý¾ÝÊÇÒ»¸ö¸ü¼Ó¸´ÔӵIJÙ×÷Á÷³Ì£¬ÕâÖ÷Òª»ùÓÚÁ½¸ö·½ÃæµÄÔÒò£º
ÆäÒ»ÊÇÒòΪÕû¸öHBase´æ´¢ÒýÇæ»ùÓÚLSM-LikeÊ÷ʵÏÖ£¬Òò´ËÒ»´Î·¶Î§²éѯ¿ÉÄÜ»áÉæ¼°¶à¸ö·ÖƬ¡¢¶à¿é»º´æÉõÖÁ¶à¸öÊý¾Ý´æ´¢Îļþ;
Æä¶þÊÇÒòΪHBaseÖиüвÙ×÷ÒÔ¼°É¾³ý²Ù×÷ʵÏÖ¶¼ºÜ¼òµ¥£¬¸üвÙ×÷²¢Ã»ÓиüÐÂÔÓÐÊý¾Ý£¬¶øÊÇʹÓÃʱ¼ä´ÁÊôÐÔʵÏÖÁË¶à°æ±¾¡£
ɾ³ý²Ù×÷Ò²²¢Ã»ÓÐÕæÕýɾ³ýÔÓÐÊý¾Ý£¬Ö»ÊDzåÈëÁËÒ»Ìõ´òÉÏ¡±deleted¡±±êÇ©µÄÊý¾Ý£¬¶øÕæÕýµÄÊý¾Ýɾ³ý·¢ÉúÔÚϵͳÒì²½Ö´ÐÐMajor_CompactµÄʱºò¡£ºÜÏÔÈ»£¬ÕâÖÖʵÏÖÌ×·´ó´ó¼ò»¯ÁËÊý¾Ý¸üС¢É¾³ýÁ÷³Ì£¬µ«ÊǶÔÓÚÊý¾Ý¶ÁÈ¡À´ËµÈ´Òâζ×ÅÌ×ÉÏÁ˲ã²ã¼ÏËø£¬¶ÁÈ¡¹ý³ÌÐèÒª¸ù¾Ý°æ±¾½øÐйýÂË£¬Í¬Ê±¶ÔÒѾ±ê¼Çɾ³ýµÄÊý¾ÝÒ²Òª½øÐйýÂË¡£
×ÜÖ®£¬°ÑÕâô¸´ÔÓµÄÊÂÇé½²Ã÷°×²¢²»ÊÇÒ»¼þ¼òµ¥µÄÊÂÇ飬ΪÁ˸ü¼ÓÌõÀí»¯µØ·ÖÎöÕû¸ö²éѯ¹ý³Ì£¬½ÓÏÂÀ´±ÊÕß»áÓÃÁ½ÆªÎÄÕÂÀ´½²½âÕû¸ö¹ý³Ì£¬ÊׯªÎÄÕÂÖ÷Òª»á´Ó¿ò¼ÜµÄ½Ç¶È´ÖÁ£¶ÈµØ·ÖÎöscanµÄÕûÌåÁ÷³Ì£¬²¢²»»áÉæ¼°Ì«¶àµÄϸ½ÚʵÏÖ¡£´ó¶àÊý¿´¿Íͨ¹ýÊׯªÎÄÕ»ù±¾¾Í¿ÉÒÔ³õ²½Á˽âscanµÄ¹¤×÷˼·;ΪÁËÄܹ»´Óϸ½ÚÀíÇå³þÕû¸öscanÁ÷³Ì£¬½Ó×ŵڶþƪÎÄÕ½«»áÔÚµÚһƪµÄ»ù´¡ÉÏÒýÈë¸ü¶àµÄʵÏÖϸ½ÚÒÔ¼°HBase¶ÔÓÚscanËù×öµÄ»ù´¡ÓÅ»¯¡£ÒòΪÀí½âÎÊÌâ¿ÉÄÜ»áÓÐç¢Â©£¬Ï£Íû¿ÉÒÔÒ»Æð̽ÌÖ½»Á÷£¬»¶ÓÅÄש~
Client-Server½»»¥Âß¼
ÔËά¿ª·¢Á˺ܳ¤Ò»¶Îʱ¼äHBase£¬¾³£ÓÐÒµÎñͬѧ×ÉѯΪʲô¿Í»§¶ËÅäÖÃÎļþÖÐûÓÐÅäÖÃRegionServerµÄµØÖ·ÐÅÏ¢£¬ÕâÀïÕë¶ÔÕâÖÖÒÉÎʼòµ¥µÄ×öϽâÊÍ£¬¿Í»§¶ËÓëHBaseϵͳµÄ½»»¥½×¶ÎÖ÷ÒªÓÐÈçϼ¸¸ö²½Ö裺

¿Í»§¶ËÊ×ÏÈ»á¸ù¾ÝÅäÖÃÎļþÖÐzookeeperµØÖ·Á¬½Ózookeeper£¬²¢¶ÁÈ¡//meta-region-server½ÚµãÐÅÏ¢£¬¸Ã½ÚµãÐÅÏ¢´æ´¢HBaseÔªÊý¾Ý(hbase:meta)±íËùÔÚµÄRegionServerµØÖ·ÒÔ¼°·ÃÎʶ˿ڵÈÐÅÏ¢¡£Óû§¿ÉÒÔͨ¹ýzookeeperÃüÁî(get
//meta-region-server)²é¿´¸Ã½ÚµãÐÅÏ¢¡£
¸ù¾Ýhbase:metaËùÔÚRegionServerµÄ·ÃÎÊÐÅÏ¢£¬¿Í»§¶Ë»á½«¸ÃÔªÊý¾Ý±í¼ÓÔØµ½±¾µØ²¢½øÐлº´æ¡£È»ºóÔÚ±íÖÐÈ·¶¨´ý¼ìË÷rowkeyËùÔÚµÄRegionServerÐÅÏ¢¡£
¸ù¾ÝÊý¾ÝËùÔÚRegionServerµÄ·ÃÎÊÐÅÏ¢£¬¿Í»§¶Ë»áÏò¸ÃRegionServer·¢ËÍÕæÕýµÄÊý¾Ý¶ÁÈ¡ÇëÇó¡£·þÎñÆ÷¶Ë½ÓÊÕµ½¸ÃÇëÇóÖ®ºóÐèÒª½øÐи´ÔӵĴ¦Àí£¬¾ßÌåµÄ´¦ÀíÁ÷³Ì½«»áÊÇÕâ¸öרÌâµÄÖØµã¡£
ͨ¹ýÉÏÊö¶Ô¿Í»§¶ËÒÔ¼°HBaseϵͳµÄ½»»¥·ÖÎö£¬¿ÉÒÔ»ù±¾Ã÷È·Á½µã£º
¿Í»§¶ËÖ»ÐèÒªÅäÖÃzookeeperµÄ·ÃÎʵØÖ·ÒÔ¼°¸ùĿ¼£¬¾Í¿ÉÒÔ½øÐÐÕý³£µÄ¶ÁдÇëÇó¡£²»ÐèÒªÅäÖü¯ÈºµÄRegionServerµØÖ·ÁÐ±í¡£
¿Í»§¶Ë»á½«hbase:metaÔªÊý¾Ý±í»º´æÔÚ±¾µØ£¬Òò´ËÉÏÊö²½ÖèÖÐǰÁ½²½Ö»»áÔÚ¿Í»§¶ËµÚÒ»´ÎÇëÇóµÄʱºò·¢Éú£¬Ö®ºóËùÓÐÇëÇó¶¼Ö±½Ó´Ó»º´æÖмÓÔØÔªÊý¾Ý¡£Èç¹û¼¯Èº·¢ÉúijЩ±ä»¯µ¼ÖÂhbase:metaÔªÊý¾Ý¸ü¸Ä£¬¿Í»§¶ËÔÙ¸ù¾Ý±¾µØÔªÊý¾Ý±íÇëÇóµÄʱºò¾Í»á·¢ÉúÒì³££¬´Ëʱ¿Í»§¶ËÐèÒªÖØÐ¼ÓÔØÒ»·Ý×îеÄÔªÊý¾Ý±íµ½±¾µØ¡£
RegionServer½ÓÊÕµ½¿Í»§¶ËµÄget/scanÇëÇóÖ®ºó£¬ÏȺó×öÁËÁ½¼þÊÂÇ飺¹¹½¨scannerÌåϵ(ʵ¼ÊÉϾÍÊÇ×öһЩscanǰµÄ×¼±¸¹¤×÷)£¬ÔÚ´ËÌåϵ»ù´¡ÉÏÒ»ÐÐÒ»ÐмìË÷¡£¾Ù¸ö²»Ì«ºÏÊʵ«Ò×ÓÚÀí½âµÄÀý×Ó£¬scanÊý¾Ý¾ÍºÍ¿ª·¢É̸Ƿ¿Ò»Ñù£¬Ò²ÊÇ·Ö³ÉÁ½²½£º×齨ʩ¹¤¶ÓÌåϵ£¬Ã÷ȷÿ¸ö¹¤È˵ÄÖ°Ôð;Ò»²ãÒ»²ã¸ÇÂ¥¡£
¹¹½¨scannerÌåϵ-×齨ʩ¹¤¶Ó
scannerÌåϵµÄºËÐÄÔÚÓÚÈý²ãscanner£ºRegionScanner¡¢StoreScannerÒÔ¼°StoreFileScanner¡£ÈýÕßÊDz㼶µÄ¹ØÏµ£¬Ò»¸öRegionScannerÓɶà¸öStoreScanner¹¹³É£¬Ò»ÕűíÓɶà¸öÁÐ×å×é³É£¬¾ÍÓжàÉÙ¸öStoreScanner¸ºÔð¸ÃÁÐ×åµÄÊý¾ÝɨÃè¡£Ò»¸öStoreScannerÓÖÊÇÓɶà¸öStoreFileScanner×é³É¡£Ã¿¸öStoreµÄÊý¾ÝÓÉÄÚ´æÖеÄMemStoreºÍ´ÅÅÌÉϵÄStoreFileÎļþ×é³É£¬Ïà¶ÔÓ¦µÄ£¬StoreScanner¶ÔÏó»á¹ÍÓ¶Ò»¸öMemStoreScannerºÍN¸öStoreFileScannerÀ´½øÐÐʵ¼ÊµÄÊý¾Ý¶ÁÈ¡£¬Ã¿¸öStoreFileÎļþ¶ÔÓ¦Ò»¸öStoreFileScanner£¬×¢Ò⣺StoreFileScannerºÍMemstoreScannerÊÇÕû¸öscanµÄ×îÖÕÖ´ÐÐÕß¡£
¶ÔÓ¦ÓÚ½¨Â¥ÏîÄ¿£¬Ò»¶°Â¥Í¨³£Óɺü¸¸öµ¥ÔªÂ¥¹¹³É(ÿ¸öµ¥ÔªÂ¥¶ÔÓ¦ÓÚÒ»¸öStore)£¬Ã¿¸öµ¥ÔªÂ¥»áÇëÒ»¸ö¼à¹¤(StoreScanner)¸ºÔð¸Ãµ¥ÔªÂ¥µÄ½¨Ôì¡£¶ø¼à¹¤Ò»°ã²»×ö¾ßÌåµÄÊÂÇ飬Ëû¸ºÔðÕÐļºÜ¶à¹¤ÈË(StoreFileScanner)£¬ÕâЩ¹¤È˲ÅÊǽ¨Â¥µÄÖ÷Ìå¡£ÏÂͼÊÇÕû¸ö¹¹½¨Á÷³Ìͼ£º

RegionScanner»á¸ù¾ÝÁÐ×å¹¹½¨StoreScanner£¬ÓжàÉÙÁÐ×å¾Í¹¹½¨¶àÉÙStoreScanner£¬ÓÃÓÚ¸ºÔð¸ÃÁÐ×åµÄÊý¾Ý¼ìË÷
1.1 ¹¹½¨StoreFileScanner£ºÃ¿¸öStoreScanner»áΪµ±Ç°¸ÃStoreÖÐÿ¸öHFile¹¹ÔìÒ»¸öStoreFileScanner£¬ÓÃÓÚʵ¼ÊÖ´ÐжÔÓ¦ÎļþµÄ¼ìË÷¡£Í¬Ê±»áΪ¶ÔÓ¦Memstore¹¹ÔìÒ»¸öMemstoreScanner£¬ÓÃÓÚÖ´ÐиÃStoreÖÐMemstoreµÄÊý¾Ý¼ìË÷¡£¸Ã²½Öè¶ÔÓ¦Óڼ๤ÔÚÈ˲ÅÊг¡ÕÐļ½¨Â¥ËùÐèµÄ¸÷ÖÖÀàÐ͹¤½³¡£
1.2 ¹ýÂËÌÔÌStoreFileScanner£º¸ù¾ÝTime RangeÒÔ¼°RowKey
Range¶ÔStoreFileScannerÒÔ¼°MemstoreScanner½øÐйýÂË£¬ÌÔ̿϶¨²»´æÔÚ´ý¼ìË÷½á¹ûµÄScanner¡£ÉÏͼÖÐStoreFile3ÒòΪ¼ì²éRowKeyRange²»´æÔÚ´ý¼ìË÷RowkeyËùÒÔ±»ÌÔÌ¡£¸Ã²½ÖèÕë¶Ô¾ßÌåµÄ½¨Â¥·½°¸£¬²Ã³·µô²¿·Ö²»ÐèÒªµÄ¹¤½³£¬±ÈÈçÕâ¶°Â¥²»ÐèÒªµØÅ¯°²×°£¬¶ÔÓ¦µÄ¹¤½³¾Í¿ÉÒÔ³·µô¡£
1.3 Seek rowkey£ºËùÓÐStoreFileScanner¿ªÊ¼×ö×¼±¸¹¤×÷£¬ÔÚ¸ºÔðµÄHFileÖж¨Î»µ½Âú×ãÌõ¼þµÄÆðʼRow¡£¹¤½³Ò²¿ªÊ¼×¼±¸×Ô¼ºµÄ½¨Ô칤¾ß£¬½¨Ôì²ÄÁÏ£¬ÕÒµ½×Ô¼ºµÄ¹¤×÷µØµã£¬µÈ´ýÒ»ÉùÃüÏ¡£¾ÍÏñËùÓÐÖØÒªÏîÄ¿µÄ×¼±¸¹¤×÷¶¼ºÜºËÐÄÒ»Ñù£¬Seek¹ý³Ì(´Ë´¦ÂÔ¹ýLazy
SeekÓÅ»¯)Ò²ÊÇÒ»¸öºÜºËÐĵIJ½Ö裬ËüÖ÷Òª°üº¬ÏÂÃæÈý²½£º
¶¨Î»Block Offset£ºÔÚBlockcacheÖжÁÈ¡¸ÃHFileµÄË÷ÒýÊ÷½á¹¹£¬¸ù¾ÝË÷ÒýÊ÷¼ìË÷¶ÔÓ¦RowKeyËùÔÚµÄBlock
OffsetºÍBlock Size
Load Block£º¸ù¾ÝBlockOffsetÊ×ÏÈÔÚBlockCacheÖвéÕÒData
Block£¬Èç¹û²»ÔÚ»º´æ£¬ÔÙÔÚHFileÖмÓÔØ
Seek Key£ºÔÚData BlockÄÚ²¿Í¨¹ý¶þ·Ö²éÕҵķ½Ê½¶¨Î»¾ßÌåµÄRowKey
ÕûÌåÁ÷³Ìϸ½Ú²Î¼û¡¶HBaseÔÀí-̽Ë÷HFileË÷Òý»úÖÆ¡·£¬ÎÄÖÐÏêϸ˵Ã÷ÁËHFileË÷Òý½á¹¹ÒÔ¼°ÈçºÎͨ¹ýË÷Òý½á¹¹¶¨Î»¾ßÌåµÄBlockÒÔ¼°RowKey
1.4 StoreFileScannerºÏ²¢¹¹½¨×îС¶Ñ£º½«¸ÃStoreÖÐËùÓÐStoreFileScannerºÍMemstoreScannerºÏ²¢ÐγÉÒ»¸öheap(×îС¶Ñ)£¬ËùνheapÊÇÒ»¸öÓÅÏȼ¶¶ÓÁУ¬¶ÓÁÐÖÐÔªËØÊÇËùÓÐscanner£¬ÅÅÐò¹æÔò°´ÕÕscanner
seekµ½µÄkeyvalue´óСÓÉСµ½´ó½øÐÐÅÅÐò¡£ÕâÀïÐèÒªÖØµã¹Ø×¢Èý¸öÎÊÌ⣬Ê×ÏÈΪʲôÕâЩScannerÐèÒªÓÉСµ½´óÅÅÐò£¬Æä´ÎkeyvalueÊÇʲôÑùµÄ½á¹¹£¬×îºó£¬keyvalueË´óËСÊÇÈçºÎÈ·¶¨µÄ£º
ΪʲôÕâЩScannerÐèÒªÓÉСµ½´óÅÅÐò?
×îÖ±½ÓµÄ½âÊÍÊÇscanµÄ½á¹ûÐèÒªÓÉСµ½´óÊä³ö¸øÓû§£¬µ±È»£¬Õâ²¢²»È«Ã棬×îºÏÀíµÄ½âÊÍÊÇÖ»ÓÐÓÉСµ½´óÅÅÐò²ÅÄÜʹµÃscanЧÂÊ×î¸ß¡£¾Ù¸ö¼òµ¥µÄÀý×Ó£¬HBaseÖ§³ÖÊý¾Ý¶à°æ±¾£¬¼ÙÉèÓû§Ö»Ïë»ñÈ¡×îа汾£¬ÄÇÖ»ÐèÒª½«ÕâЩÊý¾ÝÓÉ×îе½×î¾É½øÐÐÅÅÐò£¬È»ºóÈ¡¶ÓÊ×ÔªËØ·µ»Ø¾Í¿ÉÒÔ¡£ÄÇô£¬Èç¹û²»ÅÅÐò£¬¾ÍÖ»ÄܱéÀúËùÓÐÔªËØ£¬²é¿´·û²»·ûºÏÓû§²éѯÌõ¼þ¡£Õâ¾ÍÊÇÅŶӵÄÒâÒå¡£
¹¤½³ÃÇÒ²ÐèÒªÅÅÐò£¬ÏÈ×öµØ°åµÄÅÅÇ°Ãæ£¬×öǽÌåµÄ´ÎÖ®£¬×îºóÊÇ×öÃÅ´°»§µÄ¡£×öǽÌåµÄÄÚ²¿»¹ÐèÒªÔÙÅÅÐò£¬×öÄÚǽµÄÅÅÇ°Ãæ£¬×öÍâǽµÄÅźóÃæ£¬ÕâÑù£¬¼ÙÈçÉè¼ÆÊ¦ÁÙʱ¾ö¶¨²»×öÍâǽµÄ»°£¬¾Í¿ÉÒÔÖ±½ÓÌø¹ýÍâǽ²¿·Ö¹¤×÷¡£ºÜÏÔÈ»£¬Èç¹û²»ÅÅÐòµÄ»°£¬ÊÇû°ì·¨ÁÙʱ×ö¾ö¶¨µÄ£¬ÒòΪÕⲿ·Ö¹¤×÷ÒѾ¿ÉÄÜ×öµôÁË¡£
HBaseÖÐKeyValueÊÇʲôÑùµÄ½á¹¹?
HBaseÖÐKeyValue²¢²»ÊǼòµ¥µÄKVÊý¾Ý¶Ô£¬¶øÊÇÒ»¸ö¾ßÓи´ÔÓÔªËØµÄ½á¹¹Ì壬ÆäÖÐKeyÓÉRowKey£¬ColumnFamily£¬Qualifier
£¬TimeStamp£¬KeyTypeµÈ¶à²¿·Ö×é³É£¬ValueÊÇÒ»¸ö¼òµ¥µÄ¶þ½øÖÆÊý¾Ý¡£KeyÖÐÔªËØKeyType±íʾ¸ÃKeyValueµÄÀàÐÍ£¬È¡Öµ·Ö±ðΪPut/Delete/Delete
Column/Delete FamilyËÄÖÖ¡£KeyValue¿ÉÒÔ±íʾΪÈçÏÂͼËùʾ£º

Á˽âÁËKeyValueµÄÂß¼½á¹¹ºó£¬ÎÒÃDz»·ÁÔÙ½øÒ»²½´ÓÔÀíµÄ½Ç¶ÈÏëÏëHBaseµÄ¿ª·¢ÕßÃÇΪʲôÈç´Ë¶ÔÆäÉè¼Æ¡£Õâ¸ö¾ÍµÃ´ÓHBaseËùÖ§³ÖµÄÊý¾Ý²Ù×÷˵ÆðÁË£¬HBaseÖ§³ÖËÄÖÖÖ÷ÒªµÄÊý¾Ý²Ù×÷£¬·Ö±ðÊÇGet/Scan/Put/Delete£¬ÆäÖÐGetºÍScan´ú±íÊý¾Ý²éѯ£¬Put²Ù×÷´ú±íÊý¾Ý²åÈë»ò¸üÐÂ(Èç¹ûPutµÄRowKey²»´æÔÚÔòΪ²åÈë²Ù×÷¡¢·ñÔòΪ¸üвÙ×÷)£¬ÌرðÐèҪעÒâµÄÊÇHBaseÖиüвÙ×÷²¢²»ÊÇÖ±½Ó¸²¸ÇÐÞ¸ÄÔÊý¾Ý£¬¶øÊÇÉú³ÉеÄÊý¾Ý£¬ÐÂÊý¾ÝºÍÔÊý¾Ý¾ßÓв»Í¬µÄ°æ±¾(ʱ¼ä´Á);Delete²Ù×÷Ö´ÐÐÊý¾Ýɾ³ý£¬ºÍÊý¾Ý¸üвÙ×÷Ïàͬ£¬HBaseÖ´ÐÐÊý¾Ýɾ³ý²¢²»»áÂíÉϽ«Êý¾Ý´ÓÊý¾Ý¿âÖÐÓÀ¾Ãɾ³ý£¬¶øÖ»ÊÇÉú³ÉÒ»Ìõɾ³ý¼Ç¼£¬×îºóÔÚϵͳִÐÐÎļþºÏ²¢µÄʱºòÔÙͳһɾ³ý¡£
HBaseÖиüÐÂɾ³ý²Ù×÷²¢²»Ö±½Ó²Ù×÷ÔÊý¾Ý£¬¶øÊÇÉú³ÉÒ»¸öмͼ£¬ÄÇÎÊÌâÀ´ÁË£¬ÈçºÎÖªµÀÒ»Ìõ¼Ç¼µ½µ×ÊDzåÈë²Ù×÷»¹ÊǸüвÙ×÷Òà»òÊÇɾ³ý²Ù×÷ÄØ?ÕâÕýÊÇKeyTypeºÍTimestampµÄÓÃÎäÖ®µØ¡£ÉÏÎÄÖÐÌáµ½KeyTypeȡֵΪ·Ö±ðΪPut/Delete/Delete
Column/Delete FamilyËÄÖÖ£¬Èç¹ûKeyTypeȡֵΪPut£¬±íʾ¸ÃÌõ¼Ç¼Ϊ²åÈë»òÕ߸üвÙ×÷£¬¶øÎÞÂÛÊDzåÈë»òÕ߸üУ¬¶¼¿ÉÒÔʹÓð汾ºÅ(Timestamp)¶Ô¼Ç¼½øÐÐÑ¡Ôñ;Èç¹ûKeyTypeΪDelete£¬±íʾ¸ÃÌõ¼Ç¼ΪÕûÐÐɾ³ý²Ù×÷;ÏàÓ¦µÄKeyTypeΪDelete
ColumnºÍDelete Family·Ö±ð±íʾɾ³ýijÐÐijÁÐÒÔ¼°Ä³ÐÐijÁÐ×å²Ù×÷;
²»Í¬KeyValueÖ®¼äÈçºÎ½øÐдóС±È½Ï?
ÉÏÎÄÌáµ½KeyValueÖÐKeyÓÉRowKey£¬ColumnFamily£¬Qualifier
£¬TimeStamp£¬KeyTypeµÈ5²¿·Ö×é³É£¬HBaseÉ趨Key´óСÊ×ÏȱȽÏRowKey£¬RowKeyԽСKey¾ÍԽС;RowKeyÈç¹ûÏàͬ¾Í¿´CF£¬CFԽСKeyԽС;CFÈç¹ûÏàͬ¿´Qualifier£¬QualifierԽСKeyԽС;QualifierÈç¹ûÏàͬÔÙ¿´Timestamp£¬TimestampÔ½´ó±íʾʱ¼äԽУ¬¶ÔÓ¦µÄKeyԽС¡£Èç¹ûTimestamp»¹Ïàͬ£¬¾Í¿´KeyType£¬KeyType°´ÕÕDeleteFamily
-> DeleteColumn -> Delete -> Put ˳ÐòÒÀ´Î¶ÔÓ¦µÄKeyÔ½À´Ô½´ó¡£
2. StoreScannerºÏ²¢¹¹½¨×îС¶Ñ£ºÉÏÎÄÌÖÂÛµÄÊÇÒ»¸ö¼à¹¤ÈçºÎ¹¹½¨×Ô¼ºµÄ¹¤½³Ê¦ÍŶÓÒÔ¼°¹¤½³Ê¦ÈçºÎ×ö×¼±¸¹¤×÷¡¢ÅÅÐò¹¤×÷¡£Êµ¼ÊÉÏ£¬¼à¹¤Ò²ÐèÒª½øÐÐÅÅÐò£¬±ÈÈçÒ»µ¥ÔªµÄ¼à¹¤ÅÅÇ°Ãæ£¬¶þµ¥ÔªµÄ¼à¹¤ÅÅÖ®ºó¡
StoreScannerÒ»Ñù£¬ÁÐ×åСµÄStoreScannerÅÅÇ°Ãæ£¬ÁÐ×å´óµÄStoreScannerÅźóÃæ¡£
scan²éѯ-²ã²ã½¨Â¥
¹¹½¨ScannerÌåϵÊÇΪÁ˸üºÃµØÖ´ÐÐscan²éѯ£¬¾ÍÏñ×齨¹¤½³Ê¦ÍŶӾÍÊÇΪÁ˸Ƿ¿×ÓÒ»Ñù¡£scan²éѯ×ÜÊÇÒ»ÐÐÒ»ÐвéѯµÄ£¬ÏȲéµÚÒ»ÐеÄËùÓÐÊý¾Ý£¬ÔÙ²éµÚ¶þÐеÄËùÓÐÊý¾Ý£¬µ«Ã¿Ò»ÐеIJéѯÁ÷³ÌȴûÓÐʲô±¾ÖÊÇø±ð¡£¸Ç·¿×ÓÒ²Ò»Ñù£¬ÎÞÂÛÊǸÇ8²ã»¹ÊǸÇ18²ã£¬¶¼ÐèÒªÒ»²ãÒ»²ãÍùÉϸǣ¬¶øÇÒÿһ²ãµÄ¸Ç·¨²¢Ã»ÓÐÊ²Ã´Çø±ð¡£ËùÒÔʵ¼ÊÉÏÎÒÃÇÖ»ÐèÒª¹Ø×¢ÆäÖÐÒ»ÐÐÊý¾ÝÊÇÈçºÎ²éѯµÄ¾Í¿ÉÒÔ¡£
¶ÔÓÚÒ»ÐÐÊý¾ÝµÄ²éѯ£¬ÓÖ¿ÉÒÔ·Ö½âΪ¶à¸öÁÐ×åµÄ²éѯ£¬±ÈÈçRowKey=row1µÄÒ»ÐÐÊý¾Ý²éѯ£¬Ê×ÏȲéѯÁÐ×å1ÉϸÃÐеÄÊý¾Ý¼¯ºÏ£¬ÔÙ²éѯÁÐ×å2Àï¸ÃÐеÄÊý¾Ý¼¯ºÏ¡£Í¬ÑùÊǸǵÚÒ»²ã·¿×Ó£¬ÏȸÇÒ»µ¥ÔªµÄÒ»²ã£¬ÔٸĶþµ¥ÔªµÄÒ»²ã£¬¸ÇÍêÖ®ºó²ÅËãÒ»²ã¸ÇÍ꣬½Ó×Å¿ªÊ¼¸ÇµÚ¶þ²ã¡£ËùÒÔÎÒÃÇÒ²Ö»ÐèÒª¹Ø×¢Ä³Ò»ÐÐij¸öÁÐ×åµÄÊý¾ÝÊÇÈçºÎ²éѯµÄ¾Í¿ÉÒÔ¡£
»¹¼ÇµÃScannerÌåϵ¹¹½¨µÄ×îÖÕ½á¹ûÊÇÒ»¸öÓÉStoreFileScannerºÍMemstoreScanner×é³ÉµÄheap(×îС¶Ñ)ô£¬ÕâÀï¾ÍÅÉÉÏÓó¡ÁË¡£ÏÂͼÊÇÒ»ÕűíµÄÂß¼ÊÓͼ£¬¸Ã±íÓÐÁ½¸öÁÐ×åcf1ºÍcf2(ÎÒÃÇÖ»¹Ø×¢cf1)£¬cf1Ö»ÓÐÒ»¸öÁÐname£¬±íÖÐÓÐ5ÐÐÊý¾Ý£¬ÆäÖÐÿ¸öcell»ù±¾¶¼Óжà¸ö°æ±¾¡£cf1µÄÊý¾Ý¼ÙÈçʵ¼Ê´æ´¢ÔÚÈý¸öÇøÓò£¬memstoreÖÐÓÐr2ºÍr4µÄ×îÐÂÊý¾Ý£¬hfile1ÖÐÊÇ×îÔçµÄÊý¾Ý¡£ÏÖÔÚÐèÒª²éѯRowKey=r2µÄÊý¾Ý£¬°´ÕÕÉÏÎĵÄÀíÂÛ¶ÔÓ¦µÄScannerÖ¸Ïò¾ÍÈçͼËùʾ£º

ÕâÈý¸öScanner×é³ÉµÄheapΪ£¬ScannerÓÉСµ½´óÅÅÁС£²éѯµÄʱºòÊ×ÏÈpop³öheapµÄ¶Ñ¶¥ÔªËØ£¬¼´MemstoreScanner£¬µÃµ½keyvalue
= r2:cf1:name:v3:name23µÄÊý¾Ý£¬Äõ½Õâ¸ökeyvalueÖ®ºó£¬ÐèÒª½øÐÐÈçÏÂÅж¨£º
¼ì²é¸ÃKeyValueµÄKeyTypeÊÇ·ñÊÇDeleted/DeletedColµÈ£¬Èç¹ûÊǾÍÖ±½ÓºöÂÔ¸ÃÁÐËùÓÐÆäËû°æ±¾£¬Ìøµ½ÏÂÁÐ(ÁÐ×å)
¼ì²é¸ÃKeyValueµÄTimestampÊÇ·ñÔÚÓû§É趨µÄTimestamp
Range·¶Î§£¬Èç¹û²»Ôڸ÷¶Î§£¬ºöÂÔ
¼ì²é¸ÃKeyValueÊÇ·ñÂú×ãÓû§ÉèÖõĸ÷ÖÖfilter¹ýÂËÆ÷£¬Èç¹û²»Âú×㣬ºöÂÔ
¼ì²é¸ÃKeyValueÊÇ·ñÂú×ãÓû§²éѯÖÐÉ趨µÄ°æ±¾Êý£¬±ÈÈçÓû§Ö»²éѯ×îа汾£¬ÔòºöÂÔ¸ÃcellµÄÆäËû°æ±¾;·´ÕýÈç¹ûÓû§²éѯËùÓа汾£¬Ôò»¹ÐèÒª²éѯ¸ÃcellµÄÆäËû°æ±¾¡£
ÏÖÔÚ¼ÙÉèÓû§²éѯËùÓа汾¶øÇÒ¸Ãkeyvalue¼ì²éͨ¹ý£¬´Ëʱµ±Ç°µÄ¶Ñ¶¥ÔªËØÐèÒªÖ´ÐÐnext·½·¨È¥¼ìË÷ÏÂÒ»¸öÖµ£¬²¢ÖØÐÂ×éÖ¯×îС¶Ñ¡£¼´Í¼ÖÐMemstoreScanner½«»áÖ¸Ïòr4£¬ÖØÐÂ×éÖ¯×îС¶ÑÖ®ºó×îС¶Ñ½«»á±äΪ£¬¶Ñ¶¥ÔªËرäΪStoreFileScanner2£¬µÃµ½keyvalue=r2:cf1:name:v2:name22£¬½øÐÐһϵÁÐÅж¨£¬ÔÙnext£¬ÔÙÖØÐÂ×éÖ¯×îС¶Ñ¡
|