Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
HBase£ºÒ»¸ö¿ÉÀ©Õ¹µÄ¡¢¸ßÐÔÄÜ·Ö²¼Ê½Êý¾Ý¿â
 
  2444  次浏览      27
  2018-5-16
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚÍøÂç Ö÷Òª½éÉÜÁËÒ»¸öÔËÐÐÔÚHadoop¼¯ÈºµÄÊý¾Ý¿â£¬Apache HBaseÊÇÒ»¸ö·Ö²¼Ê½µÄ¡¢ÃæÏòÁеĿªÔ´Êý¾Ý¿â£¬Ï£Íû¶ÔÄúµÄѧϰÓÐһЩ°ïÖú¡£

Apache HBaseÊÇÒ»¸öÔËÐÐÔÚHadoop¼¯ÈºµÄÊý¾Ý¿â¡£ µ«ÊÇHBaseºÍ´«Í³ÒâÒåÉϵĹØÏµÐÍÊý¾Ý¿â(RDBMS)ÓÐËù²»Í¬£¬ËüÎþÉüÁË´«Í³Êý¾Ý¿âµÄACID(Ô­×ÓÐÔ,Ò»ÖÂÐÔ,¸ôÀëÐԺͳ־ÃÐÔ)ÒªÇó , ´ïµ½³¬´óÈÝÁ¿ºÍ¸ü¿ìµÄ´¦ÀíËÙ¶È¡£ ²¢ÇÒ£¬ HBaseÉÏÃæ´æ´¢µÄÊý¾Ý²»ÐèÒªÑϸñ·ûºÏ±í½á¹¹£¬Ëü¿ÉÒÔ´æ´¢·Ç½á¹¹»¯ºÍ°ë½á¹¹»¯µÄÊý¾Ý¡£

³ÌÐòÔ±ÀûÓÃHBase¹¹½¨´óÐÍÊý¾ÝÓ¦ÓóÌÐò£¬µ«ÊÇHBaseµÄ¿ª·¢Ä£Ê½ºÍ´«Í³Êý¾Ý¿âµÄ¿ª·¢Ä£Ê½Ïà±È£¬Óкܶ಻ͬµã¡£ÔÚÕâÆª²©¿ÍÖУ¬ ÎÒ»áÏȸÅÊöHBase£¬È»ºóÌÖÂÛ¹ØÏµÐÍÊý¾Ý¿âµÄ¾ÖÏÞ£¬×îºóÉîÈë½éÉÜHBaseµÄÊý¾ÝÄ£ÐÍ¡£

¹ØÏµÐÍÊý¾Ý¿â vs HBase - Êý¾Ý´æ´¢Ä£ÐÍ

ΪʲôÎÒÃÇÐèÒªHBase/NoSQL? ÔÚÌÖÂÛ¹ØÏµÐÍÊý¾Ý¿âµÄ¾ÖÏÞÏëǰ£¬ ÏÈ¿´¿´¹ØÏµÐÍÊý¾Ý¿âµÄÓŵ㣺

¹ØÏµÐÍÊý¾Ý¿âÌṩ±ê×¼³Ö¾Ã»¯Ä£ÐÍ

SQLÒѾ­³ÉΪÊý¾Ý²Ù×÷µÄÊÂʵ±ê×¼

¹ØÏµÐÍÊý¾Ý¿âÖ§³Ö²¢·¢ÊÂÎñ

¹ØÏµÐÍÊý¾Ý¿âÒѾ­ÓÐÁ˺ܶà³ÉÊ칤¾ß

¹ØÏµÐÍÊý¾Ý¿âÒѾ­ÊǶàÄêµÄ±ê×¼£¬ ËùÒÔΪʲôҪ¸Ä±ä£¿ Ãæ¶ÔÔ½À´Ô½¶àµÄÊý¾ÝÀ©ÈÝÐèÇó£¬×î¼òµ¥µÄ·½Ê½¾ÍÊǹºÂò¸ü¼ÓÇ¿´óµÄ·þÎñÆ÷£¬µ«ÕâÑù×ö³É±¾»á±äµÃÔ½À´Ô½¸ß¡£ ²¢ÇÒµ¥»ú·þÎñÆ÷ÎÞÂÛ¶àÇ¿´ó£¬ËüÈÔÈ»Êǵ¥»ú·þÎñÆ÷£¬×ÜÓÐÈÝÁ¿ÉÏÏÞ¡£

Òë×¢: ÉÏͼ, Scale Up approach¾ÍÊÇͨ¹ý¹ºÂò¸üÇ¿´ó·þÎñÆ÷À©Èݵķ½Ê½£¬Ò²±»·­ÒëΪ×ÝÏòÀ©Õ¹][ÒëÕß×¢£ºÉÏͼ£¬´¹Ö±À©Õ¹ = Ç¿´ó°º¹óµÄ·þÎñÆ÷(Vertical scale = big box)

NoSQLÄÜ´øÀ´Ê²Ã´¸Ä±ä£¿

³ýÁË×ÝÏòÀ©Õ¹(vertical scale)£¬»¹ÓÐÒ»ÖÖÀ©Õ¹·½Ê½£¬ ¾ÍÊǺáÏòÀ©Õ¹(horizontal scale) . ºáÏòÀ©Õ¹²É¹º¶ą̀±ãÒ˵ÄPC·þÎñÆ÷×é³É´ó¼¯Èº£¬Ìṩ·þÎñ£¬ÕâÖÖ·½Ê½Ê¹ÓÃÆÕͨPC·þÎñÆ÷£¬Ïà¶Ô±ãÒË£¬Í¬Ê±´ó¼¯ÈºÒ²±Èµ¥»ú·þÎñÆ÷¿É¿¿¡£

¹ØÏµÐÍÊý¾Ý¿â»ùÓÚÐÐ(row)×÷Ϊ·ÖƬ(shard)£¬ËùÒÔһЩÐÐ(row)±»·ÖÔÚijһ¸ö·þÎñÆ÷ÉÏ£¬¶øÆäËûÐзÖÅäµ½±ðµÄ·þÎñÆ÷ÉÏ¡£ ¾¡¹ÜÈç´Ë£¬ Êý¾Ý¿â·ÖƬ£¨shard£©ÈÔÈ»·Ç³£¸´ÔÓ¡£ ´«Í³Êý¾Ý¿â×î³õÉè¼ÆµÄʱºò²¢²»Ö§³Ö·ÖƬ(shard).£¬ÕâЩºóÆÚÌí¼ÓµÄ¹¦ÄÜÓë¹ØÏµÐÍÊý¾Ý¿âµÄ×î³õÉè¼Æ²¢²»Æ¥Åä¡£±ÈÈ磬·ÖƬºóµÄ¹ØÏµÐÍÊý¾Ý¿â²»Ö§³Ö·ÖƬ(shard)ÉϵIJéѯ£¬ Ò²²»Ö§³ÖÊÂÎñºÍÒ»ÖÂÐÔ¿ØÖÆ¡£¹ØÏµÐÍÊý¾Ý¿âÊÇÉè¼ÆÔÚµ¥»úÉÏÔËÐеģ¬Ëü²»ÊÇÉè¼ÆÔÚ¼¯ÈºÉÏÔËÐС£

Òë×¢£ºÉÏͼ£¬ÐÐID(id)·¶Î§ÔÚ1-1000±»·ÖÅäµ½µÚһ̨·þÎñÆ÷ÉÏ£¬ÐÐID·¶Î§´Ó1000-2000±»·ÖÅäµ½Áíһ̨·þÎñÆ÷ÉÏ£¬¶ø×îºóһ̨·þÎñÆ÷´æ´¢ID·¶Î§2000-3000µÄÊý¾Ý

¹ØÏµÐÍÄ£Ð͵ľÖÏÞÐÔ

Êý¾Ý¿â·¶Ê½(database normalization)Ïû³ýÁËÈßÓàÊý¾Ý£¬Ìá¸ßÁ˴洢ЧÂÊ¡£È»¶ø£¬·¶Ê½»áµ¼ÖÂÔÚ´¦Àí²éѯ(database query)ÇëÇóʱ£¬²»µÃ²»×öÁª±í²éѯ(join)£¬Í¬Ê±¶ÁÈ¡¶à¸ö±íµÄÄÚÈÝ£¬ ¶øÕâЩ±í¿ÉÄÜ·ÖÅäÔÚ²»Í¬µÄ·þÎñÆ÷ÉÏ¡£ËäÈ»HBase²»Ö§³Ö¹ØÏµ(relation)ºÍÁª±í²éѯ(join), µ«ÊÇËüÄܰÑÒª·ÃÎʵÄÊý¾Ý´æ´¢ÔÚÒ»Æð£¬´Ó¶ø±ÜÃâÁ˹ØÏµÐÍÄ£Ð͵ÄÏÞÖÆ£¬Çë²Î¿¼Ï±íÊý¾Ý´æ´¢Ä£Ð͵IJîÒì:

Òë×¢£º×óͼ¹ØÏµÐÍÊý¾Ý¿â¹¤×÷ÔÚ¼¯Èº»·¾³£¬Ò»¸öÁª±í²éѯҪͬʱ·ÃÎʶą̀·þÎñÆ÷ÉϵÄÊý¾Ý; ÓÒͼ HBase£¬±»·ÃÎʵÄÊý¾Ý×ÜÊÇÒ²´æ´¢ÔÚһ̨·þÎñÆ÷ÉÏ£¬Ã»ÓÐ×óͼÖÐµÄÆ¿¾±(bottleneck)

HBaseµÄÉè¼ÆÄ¿±ê£º¿ÉÀ©Õ¹µÄ£¬¸ßÐÔÄÜ·Ö²¼Ê½Êý¾Ý¿â

HBase°ÑÒ»Æð·ÃÎʵÄÊý¾ÝÒ²´æ´¢ÔÚÒ»Æð£¬ÊµÏÖÁ˸ßÀ©Õ¹¡£Ö÷ÒªµÄÉè¼ÆË¼ÏëÊǰ´ÕÕÖ÷¼ü(row key)·ÖƬÊý¾Ý¡£Õë¶ÔÊý¾Ý×öˮƽ·ÖƬ£¨horizontal shard£©£¬ ¸ù¾ÝÖ÷¼üµÄ·¶Î§(row key range)·ÖƬ¡£ ²»Í¬Ö÷¼ü·¶Î§£¨row key range£©ÏµÄÊý¾Ý±»·ÖÅäµ½²»Í¬µÄ·þÎñÆ÷ÖС£Ã¿Ì¨·þÎñÆ÷µÄÊý¾ÝÊÇÈ«ÌåÊý¾ÝµÄ×Ó¼¯¡£HBaseʵ¼ÊÉÏÊÇBigTable´æ´¢ÏµÍ³µÄÒ»¸ö¿ªÔ´ÊµÏÖ£¬BigtableÊÇÓÉGoogle¿ª·¢µÄ·Ö²¼Ê½´æ´¢ÏµÍ³£¬ÓÃÀ´¹ÜÀí¿ÉÀ©Õ¹µÄ£¬´óÈÝÁ¿µÄ½á¹¹»¯Êý¾Ý¡£

HbaseÔÚÎïÀíÉÏÊǰ´ÕÕÁдأ¨column-family£©´æ´¢µÄ£¬µ«ÊÇÔÚÓû§½Ç¶È¿´£¬HBaseÒ²ÊÇÃæÏòÐеÄ(row key)¡£ Ö»ÒªÖªµÀÖ÷¼ü(row key), HBase¾Í¿ÉÒÔ×öµ½¿ìËÙ¼ìË÷£¨ÀýÈ磬²éÕÒIDΪ1234µÄ¿Í»§£©¡£ÐеľßÌåÊý¾Ý´æ´¢ÔÚ²»Í¬µÄÁдØÖÐ(column family) £¬È磨IDΪ1234µÄ¿Í»§µØÖ·£¬¶©µ¥µÈ£©¡£HBaseÖеÄÿһÐУ¬ÓÉÖ÷¼ü£¬1ºÅÁдØÖеÄcolumn , 2ºÅÁдصÄcolumn×éºÏ¶ø³É¡£

HBaseÊÇÒ»¸öÃæÏòÁдصĴ洢ϵͳ

Òë×¢: HBaseÊÇÃæÏòÁдصĴ洢ϵͳ£¬ µ×²ãÊǰ´ÕÕÁдØ(column family)×÷Ϊµ¥Î»´æ´¢£¬Ã¿¸öÁдأ¨column family£©¿ÉÒÔ¿´×÷Ò»¸öµ¥¶ÀµÄÎļþ. ¶ø´«Í³Êý¾ÝÊÇÃæÏòÐм¶µÄ´æ´¢ÏµÍ³£¬µ×²ãÊǰ´ÕÕÐÐÅÅÁд洢ÔÚÓ²ÅÌÉÏ

Òë×¢£ºÉÏͼ, CF1ºÍCF2ÊÇÒ»¸öÁдأ¨column family), ÀïÃæ¿ÉÒÔÓжà¸öcolumn. ¸ù¾ÝÖ÷¼ü(row key)²éѯµ½Ö÷¼ü(row key)¶ÔÓ¦ÔÚCF1ºÍCF2ÉϵÄÊý¾Ý£¬ÕâÑù¾Í×é³ÉÁËÉÏͼºì¿òÖеÄÒ»ÐÐ

HBase×÷Ϊ·Ö²¼Ê½Êý¾Ý¿â¡£ ¸ù¾Ý¶ÔÖ÷¼ü(row key)µÄ·Ö×é°ÑÊý¾Ý·ÖÅäµ½²»Í¬·þÎñÆ÷¡£HBaseÔÚÐм¶²Ù×÷ÊÇÔ­×ӵġ£ ²»Í¬µÄHbase·þÎñÆ÷´æ´¢²»Í¬µÄÊý¾Ý·ÖƬ£¬ ËùÓÐÊý¾Ý·ÖƬµÄ×ܺÍÀ´¾ÍÊÇHBase´æ´¢µÄËùÓÐÊý¾Ý¡£

Òë×¢: ÉÏͼ£¬Êý¾Ý¸ù¾ÝÖ÷¼ü(row key)·ÖÅäµ½3̨²»Í¬µÄ·þÎñÆ÷ÉÏ

HBaseµÄÊý¾ÝÄ£ÐÍ

HBase¸ù¾ÝÖ÷¼ü(row key)£¬·ÖƬ£¬´æ´¢Êý¾Ý¡£HBaseµÄÖ÷¼ü(row key)ºÍ¹ØÏµÐÍÊý¾Ý¿âµÄÖ÷¼ü(primary key)×÷Ó÷dz£ÀàËÆ¡£ HBaseÉÏÃæµÄËùÓÐÐа´ÕÕÖ÷¼üµÄÖµÅÅÐò£¬¼´Ö÷¼üСµÄÐÐÅÅÔÚ±íµÄÇ°Ãæ¡£HBaseµÄÊý¾Ý°´ÕÕÖ÷¼ü(row key)ÓÐÐòÅÅÁÐÊÇHBaseÇø±ðÓÚÆäËû·Ö²¼Ê½Êý¾Ý¿âµÄÖØÒªÌØÕ÷

[Òë×¢£º¶Ô±Èapache cassandra, cassandraµÄpartition keyÊÇÎÞÐòµÄ]

[Òë×¢: ÉÏͼ£¬´ÓÂß¼­ÉÏ¿´£¬HBaseµÄ±íºÍ´«Í³Êý¾ÝºÜÀàËÆ£¬´Óºì¿òÖпÉÒÔ¿´³öÊý¾Ý°´ÕÕÖ÷¼üµÄ´óС˳ÐòÅÅÁÐ,smithj±ÈspataС£¬ÒòΪËäÈ»µÚÒ»¸ösÒ»Ñù£¬µ«Êǵڶþ¸ö×ÖĸmµÄasciiÂëÊÇ109, pµÄÊÇ112£¬ËùÒÔsmithj±ÈspataС

ÏÂͼÖÐ, HBase±í°´ÕÕÖ÷¼ü(row key)µÄ·¶Î§, ·Ö³É²»Í¬µÄÇøÓò(region). È»ºó°ÑÕâÐ©ÇøÓò(region)·ÖÅ䏸²»Í¬µÄÇøÓò·þÎñÆ÷(region server)¹ÜÀí. ÕâÖÖ·ÖÅ䷽ʽÓÉHBase×Ô¶¯¿ØÖÆ£¬×Ô¶¯µ÷½ÚÇøÓò·þÎñÆ÷(region server)ÖеĴ洢ÈÝÁ¿, ÕâÑù¾ÍʵÏÖÁË´æ´¢Êý¾ÝµÄÎÞÏÞÀ©Õ¹¡£

ÏÂͼÏÔʾÁËÁдØ(column family)ºÍHBase±íÖ®¼äµÄ¶ÔÓ¦¹ØÏµ£¬²»Í¬µÄÁдØ(column)ÔÚÎïÀíÉϱ»´æ´¢ÔÚ²»Í¬µÄÎļþÖС£Ã¿¸öÁдØÎļþ¶¼¿ÉÒÔ±»µ¥¶À·ÃÎÊ

Òë×¢£ºÖ÷¼ü(row key)´Óaxxxµ½gxxx±»·ÖÅäµ½ÁËÒ»Ì¨ÇøÓò·þÎñÆ÷(region server) R1ÉÏÃæ£¬ Õâ¸ötableÓÐ2¸öÁдØ:CF1ºÍCF2£¬ Ï൱ÓÚ2¸ö¶ÀÁ¢µÄÎļþ£¬¶¼´æ´¢ÔÚHDFSÉÏ

Êý¾Ý´æ´¢ÔÚHBase±í¸ñµÄcellÖС£cellÖаüº¬keyºÍvalueÒÔ¼°Ò»Ð©ÆäËûµÄÐÅÏ¢£¨Èçversion, typeµÈ£©¡£ÆäÖÐkey²¿·Ö°üÀ¨row key£¬column family£¬column qualifier, timestamp¡£²¢ÇÒ¶ÔÓÚÿһ¸öÖµ£¬keyºÍvalueºÍÒ»Æð´æ´¢ÔÚÁдØ(column family)Àï¡£ÈçÏÂͼËùʾ:

ÁдØÎļþÀïÃæµÄÊý¾Ý°´ÕÕCellµÄ·½Ê½´æ´¢¡£ ÿ¸öCell±»³ÆÎªÒ»¸ö¼üÖµ¶Ô(KeyValue)¡£ Key°üÀ¨µÄÏîÄ¿±È½Ï¶à£¬ÓÐÖ÷¼ü(rowkey)£¬ÁдصÄÃû³Æ(column family), column qualifierºÍʱ¼ä´Á(timestamp)¡£ ÓÉÕâËÄÏîµÄ×é³ÉÒ»¸öKey£¬Í¨¹ýÕâ¸öKey¾Í¿ÉÒÔÔÚÁдØÎļþÖвéѯµ½Value.

´ÓÂß¼­ÉÏ¿´£¬CellºÃÏñ´æ´¢ÔÚ±íÖеÄÒ»ÐС£µ«ÊÇÔÚʵ¼ÊÎïÀí´æ´¢ÖУ¬HBaseµÄÒ»ÐÐÓÉÓжà¸öÁдأ¨column family)µÄ¶ÔÓ¦CellÆ´½Ó¶ø³É¡£

ÏÂͼËùʾ£¬ ÔÚÉÏÃæµÄ±íÏÔʾÁËÒ»¸öHbase±í½á¹¹£¬ ´ÓÂß¼­ÉÏ¿´ºÍ¹ØÏµÐÍÊý¾Ý¿âÀàËÆ£¬Ò²Êǰ´ÐÐ×éÖ¯¡£µ«ÔÚÎïÀí´æ´¢ÖУ¬Õû¸ö±íÊÇÓÉ2¸öÁдØÎļþ×é³É¡£Èç¹ûÒªÐÞ¸ÄijÐÐÖеÄÒ»Ïʵ¼ÊÉÏÊÇÒ»¸öCell£©, ÐèÒªÖ¸¶¨Ö÷¼ü(rowkey)£¬ÁдصÄÃû³Æ(column family), column qualifierºÍʱ¼ä´Á(timestamp)ÐγÉÒ»¸öKey£¬ È»ºóÔÚʵ¼ÊµÄÁдØÎļþÖÐÉèÖÃValue¡£

Âß¼­Êý¾ÝÄ£ÐÍ vs ÎïÀí´æ´¢Ä£ÐÍ

ÈçǰËùÊö£¬ ¶¨Î»Ò»¸öCell, Ö»ÐèÒª5ÏîÊý¾ÝÆ´³ÉKey: <±íÃû³Æ, Ö÷¼üÃû³Æ, ÁдØÃû³Æ, ÁÐÃû³Æ, ʱ¼ä´Á> . HBaseµÄ±íÊÇÒ»¸öÏ¡Êè±í¡£ Èç¹ûÒ»Ïî(column)ûÓÐÊý¾Ý£¬Ëü¾Í²»»á±»´æ´¢. ´ËÍâ, CellÊÇÓа汾ÐÅÏ¢µÄ£¬Èç¹ûÖ»ÓÃ4ÏîÊý¾Ý×öKey, <±íÃû³Æ, Ö÷¼üÃû³Æ, ÁдØÃû³Æ, ÁÐÃû³Æ>¿ÉÒÔ²éѯµ½Ò»¸öCellµÄ¶à¸ö°æ±¾.

HBaseĬÈÏÖ§³Ö¶à°æ±¾£¬

Put²Ù×÷¼ÈÊÇÒ»¸ö²åÈë²Ù×÷Ò²¿ÉÒÔÊÇÒ»¸öÐ޸IJÙ×÷£¬Ã¿¸öCell¶¼ÓÐ×Ô¼ºµÄ°æ±¾¡£É¾³ý²Ù×÷²»»áÕæµÄ×öɾ³ý£¬Ö»ÊÇдÈëÒ»¸öɾ³ýµÄ±êÖ¾¡£ Èκβéѯ¶¼²»»á·µ»ØÓÐÓÐɾ³ý±ê¼ÇµÄCell.

Get²Ù×÷¿ÉÒÔÈÎÒâÖ¸¶¨µÄ°æ±¾µÄÊý¾Ý¡£Èç¹ûÇëÇóûÓÐÖ¸¶¨°æ±¾ºÅ£¬»á·µ»Ø×îеİ汾¡£HBaseÔÊÐíÓû§ÅäÖÃ×î¶àÔÊÐí¶àÉٰ汾ͬʱ´æÔÚ£¬HBaseĬÈÏΪͬһ¸öCell×î¶à´æ´¢3¸ö°æ±¾¡£µ±³¬¹ý3¸ö°æ±¾ºó£¬×îÀϰ汾µÄCell»á±»×îÖÕÇåÀí¡£

   
2444 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì