±à¼ÍƼö: |
±¾ÎĽéÉÜÁË
Hbase µÄÊý¾ÝÄ£ÐÍÔÀí£¬·ÖÎöÁË Hbase ±íɨÃè/²éѯ²Ù×÷µÄʱ¼ä¸´ÔÓ¶È£¬²¢Í¨¹ýÒ»¸öÓÎÏ·¹«Ë¾¿Í»§Êµ¼Ê°¸ÀýµÄ½²½â£¬·ÖÎöÁË
Hbase ±íÉè¼Æ¼°¿ª·¢ÔÚʵ¼Ê°¸ÀýÖеÄÔËÓ㬶ԱÈÁ˲»Í¬µÄ Hbase Éè¼Æ¿¼Á¿¶Ô¿Í»§¶Ë·ÃÎÊģʽ¼°¼ìË÷ÐÔÄܵIJîÒì¡£
±¾ÎÄÀ´×Ôibm£¬ÓÉ»ðÁú¹ûÈí¼þAnna±à¼¡¢ÍƼö¡£ |
|
1 Hbase¸ÅÊö
´óÊý¾Ý¼° NoSQL µÄǰÊÀ½ñÉú
´«Í³µÄ¹ØÏµÐÍÊý¾Ý¿â´¦Àí·½Ê½ÊÇ»ùÓÚÈ«ÃæµÄACID±£Ö¤£¬×ñÑSQL92µÄ±ê×¼±íÉè¼ÆÄ£Ê½£¨·¶Ê½£©ºÍÊý¾ÝÀàÐÍ£¬»ùÓÚSQLÓïÑÔµÄDMLÊý¾Ý½»»¥·½Ê½¡£³¤ÆÚÒÔÀ´ÕâÖÖ»ùÓÚ¹ØÏµÐÍÊý¾Ý¿âµÄITÐÅÏ¢»¯½¨ÉèÖз¢Õ¹Á¼ºÃ£¬µ«ÊÜÖÆÓÚ¹ØÏµÐÍÊý¾Ý¿âÌṩµÄÊý¾ÝÄ£ÐÍ£¬¶ÔÓÚÖð½¥³öÏֵģ¬ÎªÔ¤Ïȶ¨ÒåÄ£Ð͵ÄÊý¾Ý¼¯£¬¹ØÏµÐÍÊý¾Ý¿â²»ÄܺܺõŤ×÷¡£Ô½À´Ô½¶àµÄÒµÎñϵͳÐèÒªÄܹ»ÊÊÓ¦²»Í¬ÖÖÀàµÄÊý¾Ý¸ñʽºÍÊý¾ÝÔ´£¬²»ÐèÒªÔ¤ÏÈ·¶Ê½¶¨Ò壬¾³£ÊǷǽṹ»¯µÄ»òÕß°ë½á¹¹»¯µÄ£¨ÈçÓû§·ÃÎÊÍøÕ¾µÄÈÕÖ¾)£¬ÕâÐèҪϵͳ´¦Àí±È´«Í³¹ØÏµÐÍÊý¾Ý¿â¸ß¼¸¸öÊýÁ¿¼¶µÄÊý¾Ý£¨Í¨³£ÊÇTB¼°PB¹æÄ£¼¶±ð£©¡£´«Í³¹ØÏµÐÍÊý¾Ý¿âÄܹ»×ÝÏòÀ©Õ¹µ½Ò»¶¨³Ì¶È£¨ÈçOracleµÄRAC£¬IBMµÄpureScale£©¡£µ«Õâͨ³£Òâζן߰ºµÄÈí¼þÐí¿É·ÑÓú͸´ÔÓµÄÓ¦ÓÃÂß¼¡£
»ùÓÚϵͳÐèÇó·¢ÉúÁ˾޴ó±ä»¯£¬Êý¾Ý¼¼ÊõµÄÏÈÇýÃDz»µÃ²»ÖØÐÂÉè¼ÆÊý¾Ý¿â£¬»ùÓÚ´óÊý¾ÝµÄNoSQLµÄÊï¹â¾ÍÕâÑù³öÏÖÁË£¬´óÊý¾Ý¼°NoSQLµÄʹÓÃÊ×ÏÈÔÚgoogle¡¢facebookµÈ»¥ÁªÍø¹«Ë¾£¬ËæºóÊǽðÈÚ¡¢µçÐÅÐÐÒµ£¬ÖÚ¶àHadoop&NoSQLµÄ¿ªÔ´´óÊý¾ÝÏîÄ¿ÈçÓêºó´ºËñ°ã·¢Õ¹£¬±»»¥ÁªÍøµÈ¹«Ë¾ÓÃÓÚ´¦Àíº£Á¿ºÍ·Ç½á¹¹»¯ÀàÐ͵ÄÊý¾Ý¡£Ò»Ð©ÏîÄ¿¹Ø×¢ÓÚ¿ìËÙkey-valueµÄ¼üÖµ´æ´¢£¬Ò»Ð©¹Ø×¢ÄÚÖÃÊý¾Ý½á¹¹»òÕß»ùÓÚÎĵµµÄ³éÏ󻯣¬Ò»Ð©NoSQLÊý¾Ý¹ÜÀí¼¼Êõ¿ò¼ÜΪÁËÐÔÄܶøÎþÉüµ±Ç°µÄÊý¾Ý³Ö¾Ã»¯£¬²»Ö§³ÖÑϸñµÄACID£¬Ò»Ð©¿ªÔ´¿ò¼ÜÉõÖÁΪÁËÐÔÄÜ·ÅÆúдÊý¾Ýµ½Ó²ÅÌ¡¡
Hbase¾ÍÊÇNoSQLÖÐ׿ԽµÄÒ»Ô±£¬HbaseÌṩÁ˼üÖµAPI£¬³ÐŵǿһÖÂÐÔ£¬ËùÒÔ¿Í»§¶ËÄܹ»ÔÚдÈëºóÂíÉÏ¿´µ½Êý¾Ý¡£HBaseÒÀÀµHadoopµ×²ã·Ö²¼Ê½´æ´¢»úÖÆ£¬Òò´ËÄܹ»ÔËÐÐÔÚ¶à¸ö½Úµã×é³ÉµÄ¼¯ÈºÉÏ£¬²¢¶Ô¿Í»§¶ËÓ¦ÓôúÂë͸Ã÷£¬´Ó¶ø¶Ôÿ¸ö¿ª·¢ÈËÔ±À´ËµÉè¼ÆºÍ¿ª·¢HbaseµÄ´óÊý¾ÝÏîÄ¿±äµÃ¼òµ¥Ò×ÐС£Hbase±»Éè¼ÆÀ´´¦ÀíTBµ½PB¼¶µÄÊý¾Ý£¬²¢Õë¶Ô¸ÃÀຣÁ¿Êý¾ÝºÍ¸ß²¢·¢·ÃÎÊ×öÁËÓÅ»¯£¬×÷ΪHadoopÉú̬ϵͳµÄÒ»²¿·Ö£¬ËüÒÀÀµHadoopÆäËû×é¼þÌṩµÄÖØÒª¹¦ÄÜ£¬ÈçDataNodeÊý¾ÝÈßÓàºÍMapReduceÅú×¢´¦Àí¡£
2 Hbase¼Ü¹¹¼°¿ò¼Ü¼ò½é
±¾ÎÄÖÐÎÒÃǼòÒª½éÉÜÏÂHbaseµÄ¼Ü¹¹¼°¿ò¼Ü£¬HbaseÊÇÒ»ÖÖרÃÅΪ°ë½á¹¹»¯Êý¾ÝºÍˮƽÀ©Õ¹ÐÔÉè¼ÆµÄÊý¾Ý¿â¡£Ëü°ÑÊý¾Ý´æ´¢ÔÚ±íÖУ¬±í°´¡°Ðн¡£¬Áдأ¬ÁÐÏÞ¶¨·ûºÍʱ¼ä°æ±¾¡±µÄËÄÎ¬×ø±êϵÀ´×éÖ¯¡£HbaseÊÇÎÞģʽÊý¾Ý¿â£¬Ö»ÐèÒªÌáǰ¶¨ÒåÁдأ¬²¢²»ÐèÒªÖ¸¶¨ÁÐÏÞ¶¨·û¡£Í¬Ê±ËüÒ²ÊÇÎÞÀàÐÍÊý¾Ý¿â£¬ËùÓÐÊý¾Ý¶¼Êǰ´¶þ½øÖÆ×Ö½Ú·½Ê½´æ´¢µÄ£¬¶ÔHbaseµÄ²Ù×÷ºÍ·ÃÎÊÓÐ5¸ö»ù±¾·½Ê½£¬¼´Get¡¢Put¡¢DeleteºÍScanÒÔ¼°Increment¡£Hbase»ùÓÚ·ÇÐн¡Öµ²éѯµÄΨһ;¾¶ÊÇͨ¹ý´ø¹ýÂËÆ÷µÄɨÃè¡£
ÓÉÓÚHbaseÕë¶ÔPB¡¢TB´æ´¢¼¶±ð£¬ÒÚ¼¶ÐÐÊý¾ÝµÄº£Á¿±í¼Ç¼µÄ¸ß²¢·¢£¬¼«ÏÞÐÔÄܲéѯ¼ìË÷µÄÉè¼Æ³õÖÔ£¬HbaseÔÚÎïÀí¼Ü¹¹·½ÃæÉè¼Æ³ÉÒ»¸öÒÀ¿¿HadoopHDFSµÄÈ«·Ö²¼Ê½µÄ´æ´¢¼¯Èº£¬²¢»ùÓÚHadoopµÄMapReduceÍø¸ñ¼ÆËã¿ò¼Ü£¬ÓÃÒÔÖ§³Ö¸ßÍÌÍÂÁ¿Êý¾Ý·ÃÎÊ£¬Ö§³Ö¿ÉÓÃÐԺͿɿ¿ÐÔ£¬ÆäÕûÌå¼Ü¹¹ÈçÏÂͼËùʾ£º
ͼ1.HbaseÕûÌå¼Ü¹¹Í¼

´ÓÉÏͼÎÒÃÇ¿ÉÒÔ¿´³öHbaseµÄ×é³É²¿¼þ£¬HBaseÖеÄÿÕÅ±í¶¼Í¨¹ýÐмü°´ÕÕÒ»¶¨µÄ·¶Î§±»·Ö¸î³É¶à¸ö×Ó±í£¨HRegion£©£¬Ä¬ÈÏÒ»¸öHRegion³¬¹ý256M¾ÍÒª±»·Ö¸î³ÉÁ½¸ö£¬ÓÉHRegionServer¹ÜÀí£¬¹ÜÀíÄÄЩHRegionÓÉHMaster·ÖÅä¡£
HRegionServer´æÈ¡Ò»¸ö×Ó±íʱ£¬»á´´½¨Ò»¸öHRegion¶ÔÏó£¬È»ºó¶Ô±íµÄÿ¸öÁÐ×å(ColumnFamily)´´½¨Ò»¸öStoreʵÀý£¬Ã¿¸öStore¶¼»áÓÐ0¸ö»ò¶à¸öStoreFileÓëÖ®¶ÔÓ¦£¬Ã¿¸öStoreFile¶¼»á¶ÔÓ¦Ò»¸öHFile£¬HFile¾ÍÊÇʵ¼ÊµÄ´æ´¢Îļþ¡£Òò´Ë£¬Ò»¸öHRegionÓжàÉÙ¸öÁÐ×å¾ÍÓжàÉÙ¸öStore¡£´ËÍ⣬ÿ¸öHRegion»¹ÓµÓÐÒ»¸öMemStoreÄڴ滺´æÊµÀý¡£
HBase´æ´¢¸ñʽÊÇ»ùÓÚHadoopµÄHDFS·Ö²¼Ê½Îļþϵͳ£¬HBaseÖеÄËùÓÐÊý¾ÝÎļþ¶¼´æ´¢ÔÚHadoopHDFSÉÏ£¬¸ñʽÖ÷ÒªÓÐÁ½ÖÖ£º
£¨1£©HFile£ºHBaseÖÐKeyValueÊý¾ÝµÄ´æ´¢¸ñʽ£¬HFileÊÇHadoopµÄ¶þ½øÖƸñʽÎļþ£¬Êµ¼ÊÉÏStoreFile¾ÍÊǶÔHFile×öÁËÇáÁ¿¼¶°ü×°£¬¼´StoreFileµ×²ã¾ÍÊÇHFile¡£
£¨2£©HLogFile£ºHBaseÖÐWAL£¨WriteAheadLog£©µÄ´æ´¢¸ñʽ£¬ÎïÀíÉÏÊÇHadoopµÄSequenceFile¡£
HBaseÊÇ»ùÓÚÀàËÆGoogleµÄBigTableµÄÃæÏòÁеķֲ¼Ê½´æ´¢ÏµÍ³£¬Æä´æ´¢Éè¼ÆÊÇ»ùÓÚMemtable/SSTableÉè¼ÆµÄ£¬Ö÷Òª·ÖΪÁ½²¿·Ö£ºÒ»²¿·ÖΪÄÚ´æÖеÄMemStore(Memtable)£¬ÁíÍâÒ»²¿·ÖΪHDFSÉϵÄHFile(SSTable)¡£»¹ÓоÍÊÇ´æ´¢WALµÄlog£¬Ö÷ҪʵÏÖÀàΪHLog¡£
£¨3£©MemStore£ºMemStore¼´ÄÚ´æÀï·Å×ŵı£´æKEY/VALUEÓ³ÉäµÄMAP£¬µ±MemStore£¨Ä¬ÈÏ64MB£©Ð´ÂúÖ®ºó£¬»á¿ªÊ¼flushµ½´ÅÅÌ£¨¼´HadoopµÄHDFSÉÏ£©µÄ²Ù×÷¡£
Ϊ°ïÖú¶ÁÕßÀí½â£¬ÕâÀïÎÒÃÇÔÙ°ÑHFile¸üdetailµÄÊý¾Ý½á¹¹×ö¼òÒªµÄ½éÉÜ£¬HFileÊÇ»ùÓÚHadoopTFileµÄÎļþÀàÐÍ£¬Æä½á¹¹ÈçÏÂͼËùʾ£º
ͼ2.HFile½á¹¹Í¼

ÈçÉÏͼËùʾ£¬HFileµÄÎļþ³¤¶ÈÊDZ䳤µÄ£¬½öFILEINFO/Trailer²¿·ÖÊǶ¨³¤£¬TrailerÖÐÓÐÖ¸ÕëÖ¸ÏòÆäËûÊý¾Ý¿éµÄÆðʼµã¡£¶øIndexÊý¾Ý¿éÔò¼Ç¼ÁËÿ¸öData¿éºÍMeta¿éµÄÆðʼµã¡£Data¿éºÍMeta¿é¶¼ÊÇ¿ÉÓпÉÎ޵쬵«¶ÔÓÚ´ó¶àÊýHFile£¬¶¼ÓÐData¿é¡£
HLogÓÃÀ´´æ·ÅHBaseµÄÈÕÖ¾Îļþ£¬Ó봫ͳ¹ØÏµÐÍÊý¾Ý¿âÀàËÆ£¬Îª±£Ö¤¶ÁÒ»ÖÂÐÔ¼°undo/redo»Ø¹öµÈÊý¾Ý»Ö¸´²Ù×÷£¬HbaseÔÚдÈëÊý¾Ýʱ¼´ÏȽøÐÐwrite-ahead-log(WAL)²Ù×÷¡£Ã¿¸öHRegionServer¶ÔÓ¦Ò»¸öHLogʵÀý£¬HRegionÔÚ³õʼ»¯µÄʱºòHRegionServer»á½«¸ÃHLog×÷Ϊ¹¹Ô캯Êý´«ÈëÆäÖУ¬ÒÔ±ã³õʼ»¯HLogʵÀý¡£
HLogFileÊÇÒ»¸öSequenceFile£¬Ö»ÄÜÔÚÎļþµÄĩβÌí¼ÓÄÚÈÝ¡£³ýÁËÎļþÍ·ÒÔÍ⣬HLogFileÓÉÒ»ÌõÌõHLog.Entry¹¹³É¡£EntryÊÇHLogµÄ»ù±¾×é³É²¿·Ö£¬Ò²ÊÇRead/WriteµÄ»ù±¾µ¥Î»¡£
¶ÁÕßÈç¹û¶ÔHBase¼Ü¹¹µÄϸ½ÚÄÚÈݸÐÐËȤ£¬¿ÉÒÔͨ¹ýHbase¹ÙÍø£¬Á˽âHbaseÕûÌå¼Ü¹¹¼°µ×²ãÎïÀí´æ´¢»úÖÆ¡£
Hbase¼ìË÷ʱ¼ä¸´ÔÓ¶È
¼ÈȻʹÓÃHbaseµÄÄ¿µÄÊǸßЧ¡¢¸ß¿É¿¿¡¢¸ß²¢·¢µÄ·ÃÎʺ£Á¿·Ç½á¹¹»¯Êý¾Ý£¬ÄÇôHbase¼ìË÷Êý¾ÝµÄʱ¼ä¸´ÔÓ¶ÈÊǹØÏµµ½»ùÓÚHbaseµÄÒµÎñϵͳ¿ª·¢Éè¼ÆµÄÖØÖÐÖ®ÖØ£¬HbaseµÄÔËËãÓжà¿ì£¬±¾ÎÄ´Ó¼ÆËã»úËã·¨µÄÊýѧ½Ç¶È×ö¼òÒª·ÖÎö£¬ÒÔ±ã¶ÁÕßÀí½âºóÎĵÄÏîĿʵÀýÖÐHbaseÒµÎñ½¨Ä£¼°Éè¼ÆÄ£Ê½ÖеĿ¼Á¿ÒòËØ¡£
ÎÒÃÇÏÈÒÔÈçϱäÁ¿¶¨ÒåHbaseµÄÏà¹ØÊý¾ÝÐÅÏ¢£º
n=±íÖÐKeyValueÌõÄ¿ÊýÁ¿£¨°üÀ¨Put½á¹ûºÍDeleteÁôϵıê¼Ç£©
b=HFileÀîÊý¾Ý¿â£¨HFileBlock£©µÄÊýÁ¿
e=ƽ¾ùÒ»¸öHFileÀïÃæKeyValueÌõÄ¿µÄÊýÁ¿£¨Èç¹ûÖªµÀÐеĴóС£¬¿ÉÒÔ¼ÆËãµÃµ½£©
c=ÿÐÐÀïÁÐµÄÆ½¾ùÊýÁ¿
ÎÒÃÇÖªµÀHbaseÖÐÓÐÁ½ÕÅÌØÊâ±í£º-ROOT-&.META.£¬ÆäÖÐ.META.±í¼Ç¼Region·ÖÇøÐÅÏ¢£¬Í¬Ê±£¬.META.Ò²¿ÉÒÔÓжà¸öRegion·ÖÇø£¬Í¬Ê±-ROOT-±íÓּǼ.META.±íµÄRegionÐÅÏ¢£¬µ«-ROOT-Ö»ÓÐÒ»¸öRegion£¬¶ø-ROOT-±íµÄλÖÃÓÉHbaseµÄ¼¯Èº¹Ü¿Ø¿ò¼Ü£¬¼´Zookeeper¼Ç¼¡£
¹ØÓÚ-ROOT-&.META.±íµÄϸ½ÚÕâÀï²»ÔÙÀÛÊö£¬¸ÐÐËȤµÄ¶ÁÕß¿ÉÒÔ²ÎÔÄHbase¨CROOT-¼°.META.±í×ÊÁÏ£¬Àí½âHbaseIO¼°Êý¾Ý¼ìË÷ʱÐòÔÀí¡£
Hbase¼ìË÷Ò»ÌõÊý¾ÝµÄÁ÷³ÌÈçÏÂͼËùʾ¡£
ͼ3.Hbase¼ìË÷ʾÒâͼ

ÈçÉÏͼÎÒÃÇ¿ÉÒÔ¿´³ö£¬Hbase¼ìË÷Ò»Ìõ¿Í»§Êý¾ÝÐèÒªµÄ´¦Àí¹ý³Ì´óÖÂÈçÏ£º
(1)Èç¹û²»ÖªµÀÐн¡£¬Ö±½Ó²éÕÒÁÐkey-valueÖµ£¬ÔòÄãÐèÒª²éÕÒÕû¸öregionÇø¼ä£¬»òÕßÕû¸öTable£¬ÄÇÑùµÄ»°Ê±¼ä¸´ÔÓ¶ÈÊÇO(n)£¬ÕâÖÖÇé¿öÊÇ×îºÄʱµÄ²Ù×÷£¬Í¨³£¿Í»§¶Ë³ÌÐòÊDz»ÄܽÓÊܵģ¬ÎÒÃÇÖ÷Òª·ÖÎöÕë¶ÔÐн¡É¨Ãè¼ìË÷µÄʱ¼ä¸´ÔÓ¶ÈÇé¿ö£¬Ò²¾ÍÊÇÒÔÏÂ2ÖÁ4²½ÖèµÄÄÚÈÝ¡£
(2)¿Í»§¶ËѰÕÒÕýÈ·µÄRegionServerºÍRegion¡£»°·Ñ3´Î¹Ì¶¨ÔËËãÕÒµ½ÕýÈ·µÄregion£¬°üÀ¨²éÕÒZooKeeper£¬²éÕÒ-ROOT-±í£¬ÕÒÕÒ.META±í£¬ÕâÊÇÒ»´ÎO(1)ÔËËã¡£
(3)ÔÚÖ¸¶¨RegionÉÏ£¬ÐÐÔÚ¶Á¹ý³ÌÖпÉÄÜ´æÔÚÁ½¸öµØ·½£¬Èç¹û»¹Ã»ÓÐˢдµ½Ó²ÅÌ£¬ÄǾÍÊÇÔÚMemStoreÖУ¬Èç¹ûÒѾˢдµ½Ó²ÅÌ£¬ÔòÔÚÒ»¸öHFileÖÐ
¼Ù¶¨Ö»ÓÐÒ»¸öHFile£¬ÕâÒ»ÐÐÊý¾ÝҪôÔÚÕâ¸öHFileÖУ¬ÒªÃ´ÔÚMemstoreÖС£
(4)¶ÔÓÚºóÕߣ¬Ê±¼ä¸´ÔÓ¶Èͨ³£±È½Ï¹Ì¶¨£¬¼´O(loge)£¬¶ÔÓÚǰÕߣ¬·ÖÎöÆðÀ´Òª¸´Ôӵö࣬ÔÚHFileÖвéÕÒÕýÈ·µÄÊý¾Ý¿éÊÇÒ»´Îʱ¼ä¸´ÔÓ¶ÈΪO(logb)µÄÔËË㣬ÕÒµ½ÕâÒ»ÐÐÊý¾Ýºó£¬ÔÙ²éÕÒÁдØÀïÃækeyvalue¶ÔÏó¾ÍÊÇÏßÐÔɨÃè¹ý³ÌÁË£¨Í¬Ò»ÁдصÄÁÐÊý¾Ýͨ³£ÊÇÔÚͬһÊý¾Ý¿éÖеģ©£¬ÕâÑùµÄ»°É¨ÃèµÄʱ¼ä¸´ÔÓ¶ÈÊÇO(elb),Èç¹ûÁдØÖеÄÁÐÊý¾Ý²»ÔÚͬһÊý¾Ý¿é£¬ÔòÐèÒª·ÃÎʶà¸öÁ¬ÐøÊý¾Ý¿é£¬ÕâÑùµÄʱ¼ä¸´ÔÓ¶ÈΪO(c)£¬Òò´ËÕâÑùµÄʱ¼ä¸´ÔÓ¶ÈÊÇÁ½ÖÖ¿ÉÄÜÐÔµÄ×î´óÖµ£¬Ò²¾ÍÊÇO(max(c,elb)
×ÛÉÏËùÊö£¬²éÕÒHbaseÖÐijһÐеÄʱ¼ä¿ªÏúΪ£º
O(1)ÓÃÓÚ²éÕÒregion
O(loge)ÓÃÀ´ÔÚregionÖж¨Î»KeyValue£¬Èç¹ûËü»¹ÔÚMemStoreÖÐ
O(logb£©ÓÃÀ´²éÕÒHFileÀïÃæÕýÈ·µÄÊý¾Ý¿é
O(max£¨celb)ÓÃÀ´²éÕÒHFile
HbaseÉè¼ÆÊµÕ½
ÓÉÉÏÎĽéÉܵÄHbaseµÄÕûÌå¼Ü¹¹¼°¼ìË÷µÄʱ¼ä¸´ÔÓ¶È·ÖÎöÎÒÃÇ¿ÉÒÔ¿´³ö£¬Ðмü¡¢ÁдصȵÄÉè¼Æ¼°Êý¾Ý´æ´¢¾ö¶¨ÁËHbase×ÜÌåµÄÐÔÄܼ°Ö´ÐвéѯµÄЧÂÊ£¬ºÜ¶àʹÓÃHbaseµÄÏîÄ¿¼°¼¼ÊõÈËÔ±ÄÜÊìÁ·µÄʹÓÃHbaseShell»òSDKAPI·ÃÎÊHbase£¬½øÐÐ±í´´½¨¡¢É¾³ýµÈDDL£¬ÒÔ¼°put/delete/scanµÈDML²Ù×÷£¬µ«²¢ÉîÈë̽¾¿ÐèÒª¶àÉÙ¸öÁдأ¬Ò»¸öÁдØÐèÒª¶àÉÙÁУ¬Ê²Ã´Êý¾ÝÓ¦¸Ã´æÈëÁÐÃûÖУ¬ÒÔ¼°Ê²Ã´Êý¾ÝÓ¦¸Ã´æÈëµ¥ÔªµÈ¿ª·¢Éè¼ÆÖеĹؼüÎÊÌâ¡£
»ùÓÚHbaseµÄϵͳÉè¼ÆÓ뿪·¢ÖУ¬ÐèÒª¿¼ÂǵÄÒòËØ²»Í¬ÓÚ¹ØÏµÐÍÊý¾Ý¿â£¬Hbaseģʽ±¾ÉíºÜ¼òµ¥£¬µ«¸³ÓèÄã¸ü¶àµ÷ÕûµÄ¿Õ¼ä£¬ÓÐһЩģʽдÐÔÄܺܺ㬵«¶ÁÈ¡Êý¾Ýʱ±íÏÖ²»ºÃ£¬»òÕßÕýºÃÏà·´£¬ÀàËÆ´«Í³Êý¾Ý¿â»ùÓÚ·¶Ê½µÄOR½¨Ä££¬ÔÚʵ¼ÊÏîÄ¿Öп¼ÂÇHbaseÉè¼ÆÄ£Ê½ÊÇ£¬ÎÒÃÇÐèÒª´ÓÒÔϼ¸·½ÃæÄÚÈÝ×ÅÊÖ£º
1. Õâ¸ö±íÓ¦¸ÃÓжàÉÙ¸öÁдØ
2. ÁдØÊ¹ÓÃʲôÊý¾Ý
3. ÿ¸öÁдØÓ¦ÓжàÉÙ¸öÁÐ
4. ÁÐÃûÓ¦¸ÃÊÇʲô£¬¾¡¹ÜÁÐÃû²»±ØÔÚ½¨±íʱ¶¨Ò壬µ«ÊǶÁдÊý¾ÝʱÊÇÐèÒªµÄ
5. µ¥ÔªÓ¦¸Ã´æ·ÅʲôÊý¾Ý
6. ÿ¸öµ¥Ôª´æ´¢Ê²Ã´Ê±¼ä°æ±¾
7. Ðн¡½á¹¹ÊÇʲô£¬Ó¦¸Ã°üÀ¨Ê²Ã´ÐÅÏ¢
ÒÔÏÂÎÒÃÇÒÔÒ»¸öʹÓÃHbase¼¼ÊõµÄÕæÊµ¿Í»§°¸ÀýΪÀý£¬ËµÃ÷HbaseÉè¼ÆÄ£Ê½ÔÚÕæÊµÏîÄ¿ÖеÄʵ¼ù£¬²¢Í¨¹ý²»Í¬µÄ±íÉè¼ÆÄ£Ê½£¬¿ÉÒÔ¿´³öÔÚģʽÊÇÈçºÎÓ°Ïìµ½±í½á¹¹ºÍ¶Áд±íµÄ·½Ê½·½·¨£¬ÒÔ¼°¶Ô¿Í»§¶Ë¼ìË÷²éѯµÄÐÔÄܵÄÓ°Ïì
¿Í»§³¡¾°½éÉÜ
¿Í»§¼ò½é£º¿Í»§ÊÇÒ»¸ö»¥ÁªÍøÊÖ»úÓÎϷƽ̨£¬ÐèÒªÕë¶Ô¹ã´óÊÖÓÎÍæ¼Ò½øÐÐÊÖÓβúÆ·µÄͳ¼Æ·ÖÎö£¬ÐèÒª´æ´¢Ã¿¸öÊÖÓÎÍæ¼Ò¼´¿Í»§¶Ôÿ¸öÊÖÓβúÆ·µÄ¹Ø×¢¶È£¨ÓÎÏ·Èȶȣ©£¬ÇҴ洢ʱ¼äά¶ÈÉϵĹØ×¢¶ÈÐÅÏ¢£¬´Ó¶øÄÜÕë¶Ô¿Í»§µÄϲºÃ½øÐÐÍÚ¾ò²¢½øÐÐÀàËÆ¾«×¼ÓªÏúµÄÊÖÓ樵ãÍÆËÍ£¬¹ã¸æÓªÏúµÈÒµÎñ£¬´Ó¶øÀ©´ó¸Ãƽ̨µÄÓû§Á¿²¢ÌáÉýÓû§Õ³×Ŷȡ£
¸Ãƽ̨ÉÏÊÖÓβúÆ··ÖÀàÖڶ࣬×ܹ²ÔÚ500ÓàÒÔÉÏ£¬×¢²áÍæ¼Ò£¨Óû§Õʺţ©ÊýÁ¿ÔÚ200Íò×óÓÒ£¬ÔÚÏßÍæ¼ÒÊýÁ¿5Íò¶à£¬Ã¿ÌìʹÓÃÊÖÓÎÆµÂÊ·åÖµÔÚ10Íò/ÈË´ÎÒÔÉÏ£¬ÄêÔöÁ¿10%ÒÔÉÏ¡£
¸ù¾ÝÒÔÉÏÐèÇó£¬ÊÖÓβúÆ·¶¯Ì¬Ôö³¤£¬ÎÞ·¨È·¶¨ÄÄЩÊÖÓβúÆ·ÐèÒª±»´æ´¢£¬È«²¿´æ´¢ÓÖ»á±í³¬¹ý200ÁУ¬Ôì³É´óÁ¿¿Õ¼äÀË·Ñ£¬Íæ¼ÒÿÌìʹÓÃÊÖÓÎµÄÆµÂʼ°·ÖÀ಻ȷ¶¨£¬¿Í»§×¢²áÓû§³¬°ÙÍò£¬°´ÌìµÄʹÓÃÈȶÈÊý¾ÝÁ¿³¬¹ý1000ÍòÐУ¬º£Á¿Êý¾ÝҲʹµÃ±í²éѯ¼°ÒµÎñ·ÖÎöÐèÒªµÄ¼¯ÈºÊýÁ¿ÅÓ´ó¼°SQLÓÅ»¯£¬Ð§ÂʵÍÏ£¬Òò´Ë´«Í³¹ØÏµÐÍÊý¾Ý¿â²»ÊʺϸÃÀàÊý¾Ý·ÖÎöºÍ´¦ÀíµÄÐèÇó£¬ÔÚÏîÄ¿ÖÐÎÒÃǾö¶¨²ÉÓÃHbaseÀ´½øÐÐÊý¾Ý²ãµÄ´æ´¢µÄ·ÖÎö¡£
¸ß±íÉè¼Æ
ÈÃÎÒÃǻص½ÉÏÎÄÖÐÉè¼ÆÄ£Ê½À´¿¼ÂǸÿͻ§°¸ÀýÖбíµÄÉè¼Æ£¬ÎÒÃÇÐèÒª´æ´¢Íæ¼ÒÐÅÏ¢£¬Í¨³£ÊÇ΢Ðźţ¬QQºÅ¼°ÔÚ¸ÃÊÖÓÎÆ½Ì¨ÉÏ×¢²áµÄÕʺţ¬Í¬Ê±ÐèÒª´æ´¢¸ÃÓû§¹Ø×¢Ê²Ã´ÊÖÓβúÆ·µÄÐÅÏ¢£¬¶øÓû§Ã¿Ìì»áÍæÒ»¸ö»òÕß¶à¸öÊÖÓβúÆ·£¬Ã¿¸ö²úÆ·ÍæÒ»´Î»òÕß¶à´Î£¬Òò´Ë´æ´¢µÄÓ¦¸ÃÊǸÃÓû§¶ÔijһÊÖÓβúÆ·µÄ¹Ø×¢¶È£¨Ê¹ÓôÎÊý£©£¬¸ÃʹÓôÎÊýÔÚÿÌìÊÇÒ»¸ö¶¯Ì¬µÄÖµ£¬¶øÓû§¶ÔÊÖÓβúÆ·Ò²ÊÇÒ»¸ö¶à¶Ô¶àµÄkey
value¼üÖµµÄ¼¯ºÏ¡£¸ÃÊÖÓÎÆ½Ì¨³§É̹ØÐĵÄÊÇÖîÈç¡°XXX¿Í»§Íæ¼Ò¹Ø×¢YYYÊÖÓÎÁËô£¿¡±£¬¡°YYYÊÖÓα»Óû§¹Ø×¢ÁËô£¿¡±ÕâÀàµÄÒµÎñά¶È·ÖÎö¡£
¼ÙÉèÿÌìÿ¸öÊÖÓÎÍæ¼Ò¶Ôÿ¸ö²úÆ·µÄ¹Ø×¢¶È¶¼´æÔڸñíÖУ¬ÔòÒ»¸ö¿ÉÄܵÄÉè¼Æ·½°¸ÊÇÿ¸öÓû§Ã¿Ìì¶ÔÓ¦Ò»ÐУ¬Ò»Óû§ID
µ±ÌìµÄʱ¼ä´Á×÷ΪÐн¡£¬½¨Á¢Ò»¸ö±£´æÊÖÓβúƷʹÓÃÐÅÏ¢µÄÁдأ¬Ã¿Áдú±í¸ÃÌì¸ÃÓû§¶Ô¸Ã²úÆ·µÄʹÓôÎÊý¡£
±¾°¸ÀýÖÐÎÒÃÇÖ»Éè¼ÆÒ»¸öÁдأ¬Ò»¸öÌØ¶¨µÄÁдØÔÚHDFSÉÏ»áÓÉÒ»¸öRegion¸ºÔð£¬Õâ¸öregionϵÄÎïÀí´æ´¢¿ÉÄÜÓжà¸öHFile£¬Ò»¸öÁдØÊ¹µÃËùÓÐÁÐÔÚÓ²ÅÌÉÏ´æ·ÅÔÚÒ»Æð£¬Ê¹ÓÃÕâ¸öÌØÐÔ¿ÉÒÔʹ²»Í¬ÀàÐ͵ÄÁÐÊý¾Ý·ÅÔÚ²»Í¬µÄÁдØÉÏ£¬ÒÔ±ã¸ôÀ룬ÕâÒ²ÊÇHbase±»³ÆÎªÃæÏòÁд洢µÄÔÒò£¬ÔÚÕâÕűíÀÒòΪËùÓÐÊÖÓβúÆ·²¢Ã»ÓÐÃ÷ÏԵķÖÀ࣬¶Ô±íµÄ·ÃÎÊģʽҲ²»ÐèÇø·ÖÊÖÓβúÆ·ÀàÐÍ£¬Òò´Ë²¢²»ÐèÒª¶à¸öÁдصĻ®·Ö£¬ÄãÐèÒªÒâʶµ½Ò»µã£ºÒ»µ©´´½¨ÁË±í£¬ÈκζԸñíÁдص͝×÷ͨ³£¶¼ÐèÒªÏÈÈñíoffline¡£
ÎÒÃÇ¿ÉÒÔʹÓÃHbaseShell»òÕßHbaseSDKapi´´½¨±í£¬Hbaseshell½Å±¾Ê¾ÀýÈçÏ£º
Çåµ¥1.Hbaseshell½Å±¾Ê¾Àý
$hbase shell
Version 0.92.0, r1231986, Mon Nov 16 13:16:35
UTC 2015
$hbase(main):001:0 >create 'prodFocus' , 'degeeInfo'
0 row(s) in 0.1200 seconds
hbase(main):008:0> describe 'prodFocus'
DESCRIPTION ENABLED
'prodFocus', {NAME => 'cf', DATA_BLOCK_ENCODING
=> true
'NONE', BLOOMFILTER => 'ROW', REPLICATION_SCOPE
=>
'0', VERSIONS => '1', COMPRESSION => 'NONE',
MIN_VE
RSIONS => '0', TTL => '2147483647', KEEP_DELETED_CE
LLS => 'false', BLOCKSIZE => '65536', IN_MEMORY
=>
'false', BLOCKCACHE => 'true'}
1 row(s) in 0.0740 seconds |
ÏÖÔڵıíÈçÏÂͼËùʾ£¬Ò»¸ö´æÓÐʾÀýÊý¾ÝµÄ±í¡£
±í1.prodFocus±íʾÀý

±íÉè¼Æ½âÊÍÈçÏ£º
rowkeyΪQQ121102645$20141216±íʾÕʺÅΪQQ121102645µÄÊÖÓÎÍæ¼Ò£¨ÒÔQQºÅÁª°îÈÏÖ¤µÄ£©ÔÚ2014Äê12ÔÂ16ÈÕµ±ÌìµÄÓÎÏ·¼Ç¼£»ÁдØfocuspro¼Ç¼¸ÃÐÐÕË»§µ±Ìì¶ÔÿÖÖ²úÆ·ÀàÐ͵ĵã»÷ÈȶÈ(ÓÎÏ·´ÎÊý)£¬±ÈÈçSpaceHunter:£º1±íÊ¾Íæ(»òÕߵ㿪)SpaceHunter:(ʱ¿ÕÁÔÈË)µÄ´ÎÊýΪ1´Î
ÏÖÔÚÄãÐèÒª¼ìÑéÕâÕűíÊÇ·ñÂú×ãÐèÇó£¬Îª´Ë×îÖØÒªµÄÊÂÊǶ¨Òå·ÃÎÊģʽ£¬Ò²¾ÍÊÇÓ¦ÓÃϵͳÈçºÎ·ÃÎÊHbase±íÖеÄÊý¾Ý£¬ÔÚÕû¸öHbaseϵͳÉè¼Æ¿ª·¢¹ý³ÌÖÐÓ¦¸Ã¾¡ÔçÕâô×ö¡£
ÎÒÃÇÏÖÔÚÀ´¿´£¬ÎÒÃÇÉè¼ÆµÄ¸ÃHbase±íÊÇ·ñÄܻشð¿Í»§¹ØÐĵÄÎÊÌ⣺±ÈÈç¡°ÕʺÅΪQQ121102645µÄÓû§¹Ø×¢¹ýÄÄЩÊÖÓΣ¿¡±£¬ÑØ×ÅÕâ¸ö·½Ïò½øÒ»²½Ë¼¿¼£¬ÓÐÏà¹ØÒµÎñ·ÖÎöµÄÎÊÌ⣺¡°QQ121102645Óû§ÊÇ·ñÍæ¹ý3CountryBattle£¨Èý¹ú3£©ÊÖÓΣ¿¡±¡°ÄÄЩÓû§¹Ø×¢ÁËDTLegend£¨µ¶Ëþ´«Ææ)£¿¡±¡°3CountryBattle£¨Èý¹ú3£©ÊÖÓα»¹Ø×¢¹ýÂ𣿡±
»ùÓÚÏÖÔÚµÄprodFocus±íÉè¼Æ£¬Òª»Ø´ð¡°ÕʺÅΪQQ121102645µÄÓû§¹Ø×¢¹ýÄÄЩÊÖÓΣ¿¡±Õâ¸ö·ÃÎÊģʽ£¬¿ÉÒÔÔÚ±íÉÏÖ´ÐÐÒ»¸ö¼òµ¥µÄScanɨÃè²Ù×÷£¬¸Ãµ÷Óû᷵»ØÕû¸öQQ121102645ǰ׺µÄÕû¸öÐУ¬Ã¿Ò»ÐеÄÁдؽøÐÐÁбéÀú¾ÍÄÜÕÒµ½Óû§¹Ø×¢µÄÊÖÓÎÁÐ±í¡£
´úÂëʾÀýÈçÏ£º
Çåµ¥2.¿Í»§¶Ë²éѯÓû§¹Ø×¢ÊÖÓÎÁбí
static {
Configuration HBASE_CONFIG = new Configuration();
HBASE_CONFIG.set (¡°hbase.zookeeper.quorum¡±,¡°192.168.2.6¡±);
HBASE_CONFIG.set (¡°hbase.zookeeper.property.clientPort¡±,¡°2181¡±);
cfg = new HBaseConfiguration(HBASE_CONFIG);
}
HTablePool pool = new HTablePool();
HTableInterface prodTable = pool.getTable(¡°prodFocus¡±);
Scan a = new Scan();
a.addFamily(Bytes.toBytes (¡°degreeInfo¡±));
a.setStartRow(Bytes.toBytes (¡°QQ121102645¡±));
ResultScanner results = prodTable.getScanner(a);
List<KeyValue> list = result.list();
List<String> followGamess = new ArrayList<String>();
for(Result r:results){
KeyValue kv = iter.next();;
String game =kv.get(1];
followGames.add(user);
} |
´úÂë½âÊÍ£ºÊ×ÏÈͨ¹ýConfigurationÉèÖÃHbaseMasterÖ÷»ú¼°¿Í»§¶ËÁ¬½Ó¶Ë¿Ú£¬È»ºóʹÓÃHtableInterface½Ó¿ÚʾÀýÁ¬½ÓÉÏprodFocus±í£¬ÒòΪprodFocus±írowkeyÉè¼ÆÎªÓû§ID
$ µ±ÌìµÄʱ¼ä´Á£¬Òò´ËÎÒÃÇ´´½¨ÒÔÓû§¡°QQ121102645¡±Îª¼ìË÷ǰ׺µÄScanɨÃ裬ɨÃè·µ»ØµÄResultScanner¼´Îª¸ÃÓû§Ïà¹ØµÄËùÓÐÐÐÊý¾Ý£¬±éÀúÿÐеġ°degreeInfo¡±ÁдØÖеĸ÷¸öÁм´¿É»ñµÃ¸ÃÓû§ËùÓйØ×¢£¨Íæ¹ý£©µÄÊÖÓβúÆ·¡£
¹ØÓÚHbaseAPI²Ù×÷µÄ´úÂëÕâÀï²»ÔÙÏêÊö£¬¸ÐÐËȤµÄ¶ÁÕß¿ÉÒÔ²éÔÄHbaseSDK£¬ÊìϤ²Ù×÷HBase±í¼°put¡¢scan¡¢delete´úÂë¡£
µÚ¶þ¸öÎÊÌâ¡°QQ121102645Óû§ÊÇ·ñÍæ¹ý3CountryBattle£¨Èý¹ú3£©ÊÖÓΡ±µÄÒµÎñ¸úµÚÒ»¸öÀàËÆ£¬¿Í»§¶Ë´úÂë¿ÉÒÔÓÃScanÕÒ³öÐн¡ÎªQQ121102645ǰ׺µÄËùÓÐÐУ¬·µ»ØµÄresult¼¯ºÏ¿ÉÒÔ´´½¨Ò»¸öÊý×éÁÐ±í£¬±éÀúÕâ¸öÁбí¼ì²é3CountryBattlesÊÖÓÎÊÇ·ñ×÷ΪÁÐÃû´æÔÚ£¬¼´¿ÉÅжϸÃÓû§ÊÇ·ñ¹Ø×¢Ä³Ò»ÊÖÓΣ¬ÏàÓ¦´úÂëÓëÉÏÎÄÎÊÌâ1µÄ´úÂëÀàËÆ£º
Çåµ¥3.¿Í»§¶ËÅжÏÓû§ÊÇ·ñ¹Ø×¢Ä³Ò»ÊÖÓÎ
HTablePool pool
= new HTablePool();
HTableInterface prodTable = pool.getTable(¡°prodFocus¡±);
Scan a = new Scan();
a.addFamily(Bytes.toBytes(¡°degreeInfo¡±));
a.setStartRow(Bytes.toBytes(¡°QQ121102645¡±));
ResultScanner results = prodTable.getScanner(a);
List<Integer> degrees = new ArrayList<Integer>();
List<KeyValue> list = results.list();
Iterator<KeyValue> iter = list.iterator();
String gameNm =¡°3CountryBattle¡±;
while(iter.hasNext()){
KeyValue kv = iter.next();
if(gameNm.equals(Bytes.toString(kv.getKey()))){
return true;
}
}
prodTable.close(); |
´úÂë½âÊÍ£ºÍ¬Ñùͨ¹ýɨÃèǰ׺Ϊ¡°QQ121102645¡±µÄScanÖ´Ðбí¼ìË÷²Ù×÷£¬·µ»ØµÄList<keyValue>Êý×éÖÐÿһKey-valueÊÇdegreeInfoÁдØÖÐÿһÁеļüÖµ¶Ô£¬¼´Óû§¹Ø×¢£¨Íæ¹ý£©µÄÊÖÓβúÆ·ÐÅÏ¢£¬ÅÐ¶ÏÆäKeyÖµÊÇ·ñ°üº¬¡°3CountryBattle¡±µÄÓÎÏ·ÃûÐÅÏ¢¼´¿ÉÖªµÀ¸ÃÓû§ÊÇ·ñ¹Ø×¢¸ÃÊÖÓβúÆ·¡£
¿´ÆðÀ´Õâ¸ö±íÉè¼ÆÊǼòµ¥ÊµÓõ쬵«ÊÇÈç¹ûÎÒÃǽÓ×Å¿´µÚÈý¸öºÍµÚËĸöÒµÎñÎÊÌâ¡°ÄÄЩÓû§¹Ø×¢ÁËDTLegend£¨µ¶Ëþ´«Ææ)£¿¡±¡°3CountryBattle£¨Èý¹ú3£©ÊÖÓα»¹Ø×¢¹ýÂ𣿡±
ÈçÄãËù¿´µ½µÄ£¬ÏÖÓеıíÉè¼Æ¶ÔÓÚ¶à¸öÊÖÓβúÆ·ÊÇ·ÅÔÚÁдصĶà¸öÁÐ×Ö¶ÎÖеģ¬Òò´Ëµ±Ä³Ò»Óû§¶Ô²úÆ·µÄϲºÃÇ÷ÓÚ¶àÑù»¯µÄʱºò£¨productkey-value¼üÖµ¶Ô»áºÜ¶à£¬Òâζ×ÅijһrowkeyµÄ±íÁдػá±ä³¤£¬Õâ±¾ÉíÒ²²»ÊÇ´óÎÊÌ⣬µ«ËüÓ°Ïìµ½Á˿ͻ§¶Ë¶ÁÈ¡µÄ´úÂëģʽ£¬»áÈÿͻ§¶ËÓ¦ÓôúÂë±äµÃºÜ¸´ÔÓ¡£
ͬʱ£¬¶ÔÓÚµÚÈýºÍµÚËÄÎÊÌâ¶øÑÔ£¬Ã¿Ôö¼ÓÒ»ÖÖÊÖÓιØ×¢µÄkey-value¼üÖµ£¬¿Í»§¶Ë´úÂë±ØÐëÒªÏȶÁ³ö¸ÃÓû§µÄrowÐУ¬ÔÙ±éÀúËùÓÐÐÐÁдØÖеÄÿһ¸öÁÐ×ֶΡ£´ÓÉÏÎÄHbaseË÷ÒýµÄÔÀí¼°ÄÚ²¿¼ìË÷µÄ»úÖÆÎÒÃÇÖªµÀ£¬Ðн¡ÊÇËùÓÐHbaseË÷ÒýµÄ¾ö¶¨ÐÔÒòËØ£¬Èç¹û²»ÖªµÀÐн¡£¬¾ÍÐèÒª°ÑɨÃèÏÞ¶¨ÔÚÈô¸ÉHFileÊý¾Ý¿éÖУ¬¸üÂé·³µÄÊÇ£¬Èç¹ûÊý¾Ý»¹Ã»ÓдÓHDFS¶Áµ½Êý¾Ý¿é»º´æ£¬´ÓÓ²Å̶ÁÈ¡HFileµÄ¿ªÏú¸ü´ó£¬´ÓÉÏÎÄHbase¼ìË÷µÄʱ¼ä¸´ÔÓ¶È·ÖÎöÀ´¿´£¬ÏÖÔÚµÄHbase±íÉè¼ÆÄ£Ê½ÏÂÐèÒªÔÚRegionÖмìË÷ÿһÁУ¬Ð§ÂÊÊÇÁеĸöÊý*O(max(elb)£¬´ÓÀíÂÛÉÏÒѾÊÇ×ÔÓµÄÊý¾Ý¼ìË÷¹ý³Ì¡£
¶Ô¹Ø×¢¸Ãƽ̨ҵÎñµÄ¿Í»§¹«Ë¾½Ç¶È¿¼ÂÇ£¬µÚÈý¸öµÚËĸöµÄÒµÎñÎÊÌâ¸ü¼Ó¹Ø×¢¿Í»§¶Ë»ñÈ¡·ÖÎö½á¹ûµÄʵʱ·ÖÎöµÄÐÔÄÜ£¬Òò´Ë´ÓÉè¼ÆÄ£Ê½ÉÏÓ¦¸ÃÉè¼Æ¸ü³¤µÄÐн¡£¬¸ü¶ÌµÄÁдØ×ֶΣ¬Ìá¸ßHbaseÐн¡µÄ¼ìË÷ЧÂʲ¢Í¬Ê±¼õÉÙ·ÃÎÊ¿íÐеĿªÏú¡£
¿í±íÉè¼Æ
HbaseÉè¼ÆÄ£Ê½µÄ¼òµ¥ºÍÁé»îÔÊÐíÄú×ö³ö¸÷ÖÖÓÅ»¯£¬²»ÐèÒª×öºÜ¶àµÄ¹¤×÷¾Í¿ÉÒÔ´ó´ó¼ò»¯¿Í»§¶Ë´úÂ룬²¢ÇÒʹ¼ìË÷µÄÐÔÄÜ»ñµÃÏÔÖøÌáÉý¡£ÎÒÃÇÏÖÔÚÀ´¿´¿´prodFocus±íµÄÁíÒ»ÖÖÉè¼ÆÄ£Ê½£¬Ö®Ç°µÄ±íÉè¼ÆÊÇÒ»ÖÖ¿í±í£¨widetable£©Ä£Ê½£¬¼´Ò»ÐаüÀ¨ºÜ¶àÁС£Ã¿Ò»Áдú±íijһÊÖÓεÄÈȶȡ£Í¬ÑùµÄÐÅÏ¢¿ÉÒÔÓÃ¸ß±í£¨talltable£©ÐÎʽ´æ´¢£¬Ðµĸ߱íÐÎʽÉè¼ÆµÄ²úÆ·¹Ø×¢¶È±í½á¹¹Èç±í2Ëùʾ¡£
±í2.prodFocusV2±íʾÀý

±í½âÊÍ£º½«²úÆ·ÔÚijһÌ챻ijÓû§¹Ø×¢µÄ¹ØÁª¹ØÏµÉè¼Æµ½rowkeyÖУ¬¶øÆä¹Ø×¢¶ÈÊý¾ÝÖ»ÓÃÒ»¸ökey-valueÀ´´æ´¢£¬Ðн¡Daqier_weixin1398765386465´®ÁªÁËÁ½¸öÖµ£¬²úÆ·ÃûºÍÓû§µÄÕʺţ¬ÕâÑùÔÀ´±íÉè¼ÆÖÐijһÓû§ÔÚijÌìµÄÐÅÏ¢±»×ª»»ÎªÒ»¸ö¡°²úÆ·-¹Ø×¢µÄÓû§¡±µÄ¹ØÏµ£¬ÕâÊǵäÐ͵ĸ߱íÉè¼Æ¡£
HFileÖеÄkeyvalue¶ÔÏó´æ´¢ÁдØÃû×Ö¡£Ê¹Óö̵ÄÁдØÃû×ÖÔÚ¼õÉÙÓ²Å̺ÍÍøÂçIO·½ÃæºÜÓаïÖú¡£ÕâÖÖÓÅ»¯·½Ê½Ò²¿ÉÒÔÓ¦Óõ½Ðн¡£¬ÁÐÃû£¬ÉõÖÁµ¥Ôª¡£½ô´ÕµÄrowkey´æ´¢ÒµÎñÊý¾ÝÒâζӦÓóÌÐò¼ìË÷ʱ£¬IO¸ºÔØ·½Ãæ»á´ó´ó½µµÍ¡£ÕâÖÖÐÂÉè¼ÆÔڻشð֮ǰҵÎñ¹ØÐĵġ°ÄÄЩÓû§¹Ø×¢ÁËXXXX²úÆ·£¿¡±»òÕß¡°XXXX²úÆ·±»¹Ø×¢¹ýÂ𣿡±ÕâÀàÎÊÌâʱ£¬¾Í¿ÉÒÔ»ùÓÚÐн¡Ê¹ÓÃget()Ö±½ÓµÃµ½´ð°¸£¬ÁдØÖÐÖ»ÓÐÒ»¸öµ¥Ôª£¬ËùÒÔ²»»áÓеÚÒ»ÖÖÉè¼ÆÖжà¸ökeyvalue±éÀúµÄÎÊÌ⣬ÔÚHbaseÖзÃÎÊĨפÁôÔÚBlockCacheÀëµÃÒ»¸öÕÐÐÊÇ×î¿ìµÄ¶Á²Ù×÷¡£´ÓIO·½ÃæÀ´¿´£¬É¨ÃèÕâЩÐÐÔÚÒ»¸ö¿íÐÐÉÏÖ´ÐÐgetÃüÁîÈ»ºó±éÀúËùÓе¥ÔªÏà±È£¬´ÓRegionServer¶ÁÈ¡µÄÊý¾ÝÁ¿ÊÇÏàͬµÄ£¬µ«Ë÷Òý·ÃÎÊЧÂÊÃ÷ÏÔ´ó´óÌá¸ßÁË
ÀýÈçÒª·ÖÎö¡°3CountryBattles£¨Èý¹úȺÐÛ£©ÊÖÓÎÊÇ·ñ±»QQ121102645Óû§¹Ø×¢£¿¡±Ê±£¬¿Í»§¶Ë´úÂëʾÀýÈçÏ£º
Çåµ¥4.¿Í»§¶ËÅжÏijһÊÖÓβúÆ·ÊÇ·ñ±»¹Ø×¢
HTablePool pool
= new HTablePool();
HTableInterface prodTable = pool.getTable(¡°prodFocusV2¡±);
String userNm =¡°QQ121102645¡±;
String gameNm =¡°3CountryBattles¡±;
Get g = new Get(Bytes.toBytes(userNm+¡±$¡±+gameNm));
g.addFamily(Bytes.toBytes(¡°degreeInfo¡±));
Result r = prodTable.get(g);
if(!r.isEmpty()){
return true;
}
table.close(); |
´úÂë½âÊÍ£ºÓÉÓÚprodFocusV2µÄrowkeyÉè¼Æ¸ÄΪ±»¹Ø×¢²úÆ·$Óû§IdµÄ¸ß±íģʽ£¬ÊÖÓβúÆ·¼°Óû§ÐÅÏ¢Ö±½Ó´æ·ÅÔÚÐн¡ÖУ¬Òò´Ë´úÂëÒÔÊÖÓβúÆ·Ãû¡°3CountryBattles¡±
¡°$¡± Óû§Õʺš°QQ121102645¡±µÄByteÊý¾Ý×÷ΪGet¼üÖµ£¬ÔÚ±íÉÏÖ±½ÓÖ´ÐÐGet²Ù×÷£¬ÅжϷµ»ØµÄResult½á¹û¼¯ÊÇ·ñΪ¿Õ¼´¿ÉÖªµÀ¸ÃÊÖÓβúÆ·ÊÇ·ñ±»Óû§¹Ø×¢¡£
ÎÒÃÇʹÓÃѹÁ¦²âÊÔÀ´¼ìÑéÒ»ÏÂÁ½ÖÖHbase±íÉè¼ÆÄ£Ê½ÏµIJ¢·¢·ÃÎÊÐÔÄܵĶԱȣ¬ÔÚ°ÙÍò¼¶¼°Ç§Íò¼¶ÐÐÊý¾ÝÌõ¼þÏ£¬²ÉÓÿí±íºÍ¸ß±íµÄÁ½ÖÖÉè¼ÆÄ£Ê½Ï£¬ÔÚ½øÐС±¹Ø×¢3CountryBattlesÊÖÓεÄÓû§¡±²éѯ£¬È¡µÃresult¼ìË÷½á¹ûµÄÏàӦʱ¼äÈçϱíËùʾ£º
±í3.¸ß±ívs¿í±í¼ìË÷ÐÔÄܶԱÈ

¿ÉÒÔ¿´µ½ÔÚ¿Í»§¹ØÐĵIJúÆ·¹Ø×¢¶Èά¶ÈÉÏ£¬¸ß±íµÄÐÔÄܱȿí±íÒª¸ß³ö50%ÒÔÉÏ£¬ÕâÊÇrowkeyºÍÁдصÄÉè¼ÆÓ°Ïìµ½HbaseË÷Òý¼ìË÷ÔÚHbaseÉè¼ÆÄ£Ê½Öгɹ¦ÔËÓõıíÏÖ¡£ÕÆÎÕHbaseÊý¾Ý´æ´¢»úÖÆ¼°ÄÚ²¿¼ìË÷¹¤×÷»úÖÆÖ®ËùÒÔÖØÒª£¬ºÜ´óÒ»²¿·ÖÔÒò¾ÍÔÚÓÚÔËÓøûúÖÆÊÇÌáÉýÐÔÄܵĻú»á¡£
3ÆäËûµ÷ÓÅ¿¼ÂÇ
µ±È»»¹ÓÐһЩÆäËûÓÅ»¯¼¼ÇÉ¡£Äã¿ÉÒÔʹÓÃMD5Öµ×öΪÐн¡£¬ÕâÑù¿ÉÒԵõ½¶¨³¤µÄrowkey¡£Ê¹ÓÃÉ¢Áмü»¹ÓÐÆäËûºÃ´¦£¬Äã¿ÉÒÔÔÚÐн¡ÖÐʹÓÃMD5È¥µô¡°$¡±·Ö¸ô·û£¬Õâ»á´øÀ´Á½¸öºÃ´¦£ºÒ»ÊÇÐмü¶¼ÊÇͳһ³¤¶ÈµÄ£¬¿ÉÒÔ°ïÖúÄã¸üºÃµÄÔ¤²â¶ÁдÐÔÄÜ¡£µÚ¶þ¸öºÃ´¦ÊÇ£¬²»ÔÙÐèÒª·Ö¸ô·ûºó£¬scanµÄ²Ù×÷´úÂë¸üÈÝÒ×¶¨ÒåÆðʼºÍÍ£Ö¹¼üÖµ¡£ÕâÑùµÄ»°ÄãʹÓûùÓÚÓû§
ÊÖÓÎÃûµÄMD5É¢ÁÐÖµÀ´É趨ScanɨÃè½ôÁ򵀮ðʼÐУ¨startRowºÍstopRow£©¾Í¿ÉÒÔÕÒµ½¸ÃÊÖÓÎÊܹØ×¢µÄ×îеÄÈȶÈÐÅÏ¢¡£
ʹÓÃÉ¢ÁмüÒ²»áÓÐÖúÓÚÊý¾Ý¸ü¾ùÔȵķֲ¼ÔÚregionÉÏ¡£Èç¸Ã°¸ÀýÖУ¬Èç¹û¿Í»§µÄ¹Ø×¢¶ÈÊÇÕý³£µÄ£¨¼´Ã¿Ìì¶¼Óв»Í¬µÄ¿Í»§Í治ͬµÄÓÎÏ·£©£¬ÄÇÊý¾ÝµÄ·Ö²¼²»ÊÇÎÊÌ⣬µ«ÓпÉÄÜijЩ¿Í»§µÄ¹Ø×¢¶ÈÊÇÌìÉúÇãбµÄ£¨¼´Ä³Óû§¾ÍÊÇϲ»¶Ä³Ò»Á½¸ö²úÆ·£¬Ã¿ÌìÈȶȶ¼ÔÚÕâÒ»Á½¸ö²úÆ·ÉÏ£©£¬ÄǾͻáÊÇÒ»¸öÎÊÌ⣬Äã»áÓöµ½¸ºÔØÃ»ÓзÖ̯ÔÚÕû¸öHbase¼¯ÈºÉ϶øÊǼ¯ÖÐÔÚijһ¸öÈȵãµÄregionÉÏ£¬Õ⼸¸öregion»á³ÉΪÕûÌåÐÔÄܵį¿¾±£¬¶øÈç¹û¶ÔDaqier_weixin1398765386465ģʽ×öMD5¼ÆËã²¢°Ñ½á¹û×÷ΪÐмü£¬Äã»áÔÚËùÓÐregionÉÏʵÏÖÒ»¸ö¾ùÔȵķֲ¼¡£
ʹÓÃMD5É¢ÁÐprodFocusV2±íºóµÄ±íʾÀýÈçÏ£º
±í4.rowkeyMD5±íʾÀý

½áÊøÓï
±¾ÎĽéÉÜÁËHadoop´óÊý¾Ýƽ̨ϵÄnonsqlµÄµäÐÍÆ½Ì¨-HbaseµÄÕûÌå¼Ü¹¹¼°»ù±¾ÔÀí£¬·ÖÎöÁËÔÚHbaseÎïÀíÄ£ÐͺͼìË÷¹¤×÷»úÖÆÏÂHbase±íµÄÉè¼ÆÄ£Ê½¡£²¢ÒÔÒ»¸öʵ¼ÊÊÖÓι«Ë¾µÄ¿Í»§°¸Àý£¬ÃèÊöÁËÉè¼ÆHbase±íʱÕë¶Ô¿Í»§·ÃÎÊģʽ¼°ÐÔÄÜÐèÇóʱµÄ¼¼ÇÉ£¬Í¨¹ý²»Í¬Éè¼ÆÄ£Ê½Ï´úÂëʵÏֺͲâÊԶԱȽøÐÐÁË×î¼Ñʵ¼ù²Î¿¼°¸ÀýµÄÏê½â¡£
|