±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚÖÜÐñÁú,½éÉÜÁËHBase³öÏֵı³¾°¡¢HBaseÔÚHadoopÏîÄ¿ÖеÄλÖá¢Êý¾ÝÄ£ÐÍ¡¢ÏµÍ³¼Ü¹¹¡£ |
|
HBaseÊÇApache HadoopµÄÊý¾Ý¿â£¬Äܹ»¶Ô´óÐÍÊý¾ÝÌá¹©Ëæ»ú¡¢ÊµÊ±µÄ¶Áд·ÃÎÊ¡£HBaseµÄÄ¿±êÊÇ´æ´¢²¢´¦Àí´óÐ͵ÄÊý¾Ý¡£HBaseÊÇÒ»¸ö¿ªÔ´µÄ£¬·Ö²¼Ê½µÄ£¬¶à°æ±¾µÄ£¬ÃæÏòÁеĴ洢ģÐÍ£¬Ëü´æ´¢µÄÊÇËÉÉ¢ÐÍÊý¾Ý¡£
Ò»¡¢HBase£ºBigTableµÄ¿ªÔ´ÊµÏÖ
1.1 HBase³öÏֵı³¾°

£¨1£©Ëæ×ÅÊý¾Ý¹æÄ£Ô½À´Ô½´ó£¬´óÁ¿ÒµÎñ³¡¾°¿ªÊ¼¿¼ÂÇÊý¾Ý´æ´¢Ë®Æ½À©Õ¹£¬Ê¹µÃ´æ´¢·þÎñ¿ÉÒÔÔö¼Ó/ɾ³ý£¬¶øÄ¿Ç°µÄ¹ØÏµÐÍÊý¾Ý¿â¸üרעÓÚһ̨»úÆ÷¡£
£¨2£©º£Á¿Êý¾ÝÁ¿´æ´¢³ÉΪƿ¾±£¬µ¥Ì¨»úÆ÷ÎÞ·¨¸ºÔØ´óÁ¿Êý¾Ý¡£
£¨3£©µ¥Ì¨»úÆ÷IO¶ÁдÇëÇó³ÉΪº£Á¿Êý¾Ý´æ´¢Ê±ºò¸ß²¢·¢£¬´ó¹æÄ£ÇëÇóµÄÆ¿¾±¡£
£¨4£©µ±Êý¾Ý½øÐÐˮƽÀ©Õ¹Ê±ºò£¬ÈçºÎ½â¾öÊý¾ÝIO¸ßÒ»ÖÂÐÔÎÊÌâ¡£½áºÏMap/Reduce¼ÆËã¿ò¼Ü½øÐк£Á¿Êý¾ÝµÄÀëÏß·ÖÎö¡£
1.2 BigTable³É¾ÍÁËHBase

GoogleÕâ¸öÉñÆæµÄ¹«Ë¾ÒÔÆä²»±£ÊصÄ̬¶ÈÒÔѧÊõÂÛÎĵķ½Ê½¹«¿ªÁËÆäÔÆ¼ÆËãµÄÈý´ó·¨±¦£ºGFS¡¢MapReduceºÍBigTable£¬ÆäÖжÔÓÚBigTableµÄ¿ªÔ´ÊµÏÖHBaseÔòÊÇÓÉDoug CuttingÍê³ÉµÄ¡£
HBaseÊÇÒ»¸ö·Ö²¼Ê½µÄ¡¢ÃæÏòÁеĿªÔ´Êý¾Ý¿â£¬¸Ã¼¼ÊõÀ´Ô´ÓÚ Fay Chang Ëù׫дµÄGoogleÂÛÎÄ¡°Bigtable£ºÒ»¸ö½á¹¹»¯Êý¾ÝµÄ·Ö²¼Ê½´æ´¢ÏµÍ³¡±¡£¾ÍÏñBigtableÀûÓÃÁËGoogleÎļþϵͳ£¨File System£©ËùÌṩµÄ·Ö²¼Ê½Êý¾Ý´æ´¢Ò»Ñù£¬HBaseÔÚHadoopÖ®ÉÏÌṩÁËÀàËÆÓÚBigtableµÄÄÜÁ¦¡£HBaseÊÇApacheµÄHadoopÏîÄ¿µÄ×ÓÏîÄ¿¡£HBase²»Í¬ÓÚÒ»°ãµÄ¹ØÏµÊý¾Ý¿â£¬ËüÊÇÒ»¸öÊʺÏÓڷǽṹ»¯Êý¾Ý´æ´¢µÄÊý¾Ý¿â¡£ÁíÒ»¸ö²»Í¬µÄÊÇHBase»ùÓÚÁеĶø²»ÊÇ»ùÓÚÐеÄģʽ¡£
HBaseÖеıíÒ»°ãÓÐÕâÑùµÄÌØµã£º
£¨1£© ´ó£ºÒ»¸ö±í¿ÉÒÔÓÐÉÏÒÚÐУ¬ÉϰÙÍòÁÐ
£¨2£© ÃæÏòÁУºÃæÏòÁÐ(×å)µÄ´æ´¢ºÍȨÏÞ¿ØÖÆ£¬ÁÐ(×å)¶ÀÁ¢¼ìË÷¡£
£¨3£© Ï¡Ê裺¶ÔÓÚΪ¿Õ(null)µÄÁУ¬²¢²»Õ¼Óô洢¿Õ¼ä£¬Òò´Ë£¬±í¿ÉÒÔÉè¼ÆµÄ·Ç³£Ï¡Êè¡£
PS£ºÊ²Ã´ÊÇÁд洢£¿
Áд洢²»Í¬ÓÚ´«Í³µÄ¹ØÏµÐÍÊý¾Ý¿â£¬ÆäÊý¾ÝÔÚ±íÖÐÊǰ´Ðд洢µÄ£¬Áз½Ê½Ëù´øÀ´µÄÖØÒªºÃ´¦Ö®Ò»¾ÍÊÇ£¬ÓÉÓÚ²éѯÖеÄÑ¡Ôñ¹æÔòÊÇͨ¹ýÁÐÀ´¶¨ÒåµÄ£¬Òò´ËÕû¸öÊý¾Ý¿âÊÇ×Ô¶¯Ë÷Òý»¯µÄ¡£°´Áд洢ÿ¸ö×ֶεÄÊý¾Ý¾Û¼¯´æ´¢£¬ÔÚ²éѯֻÐèÒªÉÙÊý¼¸¸ö×ֶεÄʱºò£¬ÄÜ´ó´ó¼õÉÙ¶ÁÈ¡µÄÊý¾ÝÁ¿£¬Ò»¸ö×ֶεÄÊý¾Ý¾Û¼¯´æ´¢£¬ÄǾ͸üÈÝÒ×ΪÕâÖÖ¾Û¼¯´æ´¢Éè¼Æ¸üºÃµÄѹËõ/½âѹËã·¨¡£ÏÂͼ½²ÊöÁË´«Í³µÄÐд洢ºÍÁд洢µÄÇø±ð£º

1.3 HBaseÔÚHadoopÏîÄ¿ÖеÄλÖÃ
ÓëFUJITSU CliqµÈÉÌÓôóÊý¾Ý²úÆ·²»Í¬£¬HBaseÊÇGoogle BigtableµÄ¿ªÔ´ÊµÏÖ£¬ÀàËÆGoogle BigtableÀûÓÃGFS×÷ΪÆäÎļþ´æ´¢ÏµÍ³£¬HBaseÀûÓÃHadoop HDFS×÷ΪÆäÎļþ´æ´¢ÏµÍ³£»GoogleÔËÐÐMapReduceÀ´´¦ÀíBigtableÖеĺ£Á¿Êý¾Ý£¬HBaseͬÑùÀûÓÃHadoop MapReduceÀ´´¦ÀíHBaseÖеĺ£Á¿Êý¾Ý£»Google BigtableÀûÓà Chubby×÷ΪÐͬ·þÎñ£¬HBaseÀûÓÃZookeeper×÷Ϊ¶ÔÓ¦¡£
ÏÂͼչʾÁËHBaseÔÚHadoopÉú̬ϵͳÌåϵ½á¹¹ÖÐËù´¦µÄλÖãº

ÉÏͼÃèÊöÁËHadoopÉú̬ϵͳÖеĸ÷²ãϵͳ¡£ÆäÖУ¬HBaseλÓڽṹ»¯´æ´¢²ã£¬Hadoop HDFSΪHBaseÌṩÁ˸߿ɿ¿ÐÔµÄµ×²ã´æ´¢Ö§³Ö£¬Hadoop MapReduceΪHBaseÌṩÁ˸ßÐÔÄܵļÆËãÄÜÁ¦£¬ZookeeperΪHBaseÌṩÁËÎȶ¨·þÎñºÍÊ§Ð§×ªÒÆ£¨FailOver£©»úÖÆ¡£
´ËÍ⣬PigºÍHive»¹ÎªHBaseÌṩÁ˸߲ãÓïÑÔÖ§³Ö£¬Ê¹µÃÔÚHBaseÉϽøÐÐÊý¾Ýͳ¼Æ´¦Àí±äµÄ·Ç³£¼òµ¥¡£ SqoopÔòΪHBaseÌṩÁË·½±ãµÄRDBMSÊý¾Ýµ¼È빦ÄÜ£¬Ê¹µÃ´«Í³Êý¾Ý¿âÊý¾ÝÏòHBaseÖÐÇ¨ÒÆ±äµÄ·Ç³£·½±ã¡£
¶þ¡¢HBaseµÄÊý¾ÝÄ£ÐÍ

HBASEÖеÄÿһÕÅ±í£¬¾ÍÊÇËùνµÄBigTable£¬Ò»ÕÅÏ¡Êè±í¡£RowKey ºÍ ColumnKey ÊǶþ½øÖÆÖµbyte[]£¬°´×Öµä˳ÐòÅÅÐò£»Timestamp ÊÇÒ»¸ö 64 λÕûÊý£»value ÊÇÒ»¸öδ½âÊ͵Ä×Ö½ÚÊý×ébyte[]¡£±íÖеIJ»Í¬ÐпÉÒÔÓµÓв»Í¬ÊýÁ¿µÄ³ÉÔ±¡£¼´Ö§³Ö¡°¶¯Ì¬Ä£Ê½¡°Ä£ÐÍ¡£
2.1 Â߼ģÐÍ
Table & Column Family
HBaseÒÔ±íµÄÐÎʽ´æ´¢Êý¾Ý¡£±íÓÐÐкÍÁÐ×é³É¡£Áл®·ÖΪÈô¸É¸öÁÐ×å(row family)£¬ÈçÏÂͼËùʾ£º

Row Key: Ðмü£¬TableµÄÖ÷¼ü£¬TableÖеļǼ°´ÕÕRow KeyÅÅÐò
Timestamp: ʱ¼ä´Á£¬Ã¿´ÎÊý¾Ý²Ù×÷¶ÔÓ¦µÄʱ¼ä´Á£¬¿ÉÒÔ¿´×÷ÊÇÊý¾ÝµÄversion number
Column Family£ºÁдأ¬TableÔÚˮƽ·½ÏòÓÐÒ»¸ö»òÕß¶à¸öColumn Family×é³É£¬Ò»¸öColumn FamilyÖпÉÒÔÓÉÈÎÒâ¶à¸öColumn×é³É£¬¼´Column FamilyÖ§³Ö¶¯Ì¬À©Õ¹£¬ÎÞÐèÔ¤Ïȶ¨ÒåColumnµÄÊýÁ¿ÒÔ¼°ÀàÐÍ£¬ËùÓÐColumn¾ùÒÔ¶þ½øÖƸñʽ´æ´¢£¬Óû§ÐèÒª×ÔÐнøÐÐÀàÐÍת»»¡£
2.2 ÎïÀíÄ£ÐÍ
£¨1£©ÎïÀí´æ´¢±íʾ
½«Â߼ģÐÍÖеÄÒ»¸öRow·Ö¸îΪ¸ù¾ÝColumn family´æ´¢µÄÎïÀíÄ£ÐÍ£¬ÈçÏÂͼËùʾ£º

£¨2£©Table & Region
µ±TableËæ×żÇ¼Êý²»¶ÏÔö¼Ó¶ø±ä´óºó£¬»áÖð½¥·ÖÁѳɶà·Ýsplits£¬³ÉΪregions£¬Ò»¸öregionÓÉ[startkey,endkey)±íʾ£¬²»Í¬µÄregion»á±»Master·ÖÅ䏸ÏàÓ¦µÄRegionServer½øÐйÜÀí£¬ÈçÏÂͼËùʾ£º

ÓÉÉÏ¿ÉÖª£¬HBaseµÄÉìËõÐÔÖ÷ÒªÒÀÀµÓÚÆä¿É·ÖÁѵÄHRegion¼°¿ÉÉìËõµÄ·Ö²¼Ê½ÎļþϵͳHDFS£¬ÏÂÃæ½éÉÜÒ»ÏÂHBaseÈçºÎʵÏÖÉìËõÐÔ£º

¢ÙHBaseÖÐÊý¾ÝÒÔHRegionΪµ¥Î»½øÐйÜÀí£¬Ò²¾ÍÊÇ˵ӦÓóÌÐòÈç¹ûÏëÒª·ÃÎÊÒ»¸öÊý¾Ý£¬±ØÐëÏÈÕÒµ½HRegion£¬È»ºó½«Êý¾Ý¶Áд²Ù×÷Ìá½»¸øHRegion£¬ÓÉHRegionÍê³É´æ´¢²ãÃæµÄÊý¾Ý²Ù×÷¡£
¢Úÿ¸öHRegionÖд洢һ¶ÎKeyÇø¼ä£¨ÀýÈ磺[Key1,Key2)£©µÄÊý¾Ý£¬HRegionServerÊÇÎïÀí·þÎñÆ÷£¬Ã¿¸öHRegionServerÉÏ¿ÉÒÔÆô¶¯¶à¸öHRegionʵÀý¡£µ±Ò»¸öHRegionÖÐдÈëµÄÊý¾ÝÌ«¶à£¬´ïµ½ÅäÖõķ§ÖµÊ±£¬HRegion»á·ÖÁѳÉÁ½¸öHRegion£¬²¢½«HRegionÔÚÕû¸ö¼¯ÈºÖнøÐÐÇ¨ÒÆ£¬ÒÔʹHRegionServerµÄ¸ºÔؾùºâ¡£
¢ÛËùÓеÄHRegionµÄÐÅÏ¢¶¼£¨ÀýÈ磺´æ´¢µÄKeyÖµÇø¼ä¡¢ËùÔÚHRegionServerµÄIPµØÖ·ºÍ¶Ë¿ÚºÅµÈ£©¼Ç¼ÔÚHMaster·þÎñÆ÷ÉÏ¡£Í¬Ê±ÎªÁ˱£Ö¤¸ß¿ÉÓã¬HBaseÆô¶¯Á˶à¸öHMaster£¬²¢Í¨¹ýZooKeeper£¨Ò»¸öÖ§³Ö·Ö²¼Ê½Ò»ÖÂÐÔµÄÊý¾Ý¹ÜÀí·þÎñ£©Ñ¡¾Ù³öÒ»¸öÖ÷·þÎñÆ÷£¬Í¨¹ýÕâ¸öÖ÷HMaster·þÎñÆ÷»ñµÃKeyÖµËùÔÚµÄHRegionServer£¬×îºóÇëÇó¸ÃHRegionServerÉϵÄHRegionʵÀý£¬»ñµÃÐèÒªµÄÊý¾Ý¡£Æä¾ßÌåµÄÊý¾ÝѰַ·ÃÎÊÁ÷³ÌÈçÏÂͼËùʾ£º

Èý¡¢HBaseµÄϵͳ¼Ü¹¹

3.1 Client
°üº¬·ÃÎÊhbaseµÄ½Ó¿Ú£¬Clientά»¤×ÅһЩcacheÀ´¼Ó¿ì¶ÔhbaseµÄ·ÃÎÊ£¬±ÈÈçregioneµÄλÖÃÐÅÏ¢¡£
3.2 ZooKeeper
£¨1£© ±£Ö¤ÈκÎʱºò£¬¼¯ÈºÖÐÖ»ÓÐÒ»¸ömaster
£¨2£© ´æÖüËùÓÐRegionµÄѰַÈë¿Ú¡£
£¨3£© ʵʱ¼à¿ØRegion ServerµÄ״̬£¬½«Region serverµÄÉÏÏߺÍÏÂÏßÐÅϢʵʱ֪ͨ¸øMaster
£¨4£© ´æ´¢HbaseµÄschema,°üÀ¨ÓÐÄÄЩtable£¬Ã¿¸ötableÓÐÄÄЩcolumn family
3.3 HMaster
£¨1£©ÎªRegion Server·ÖÅäRegion
£¨2£©¸ºÔðRegion ServerµÄ¸ºÔؾùºâ
£¨3£©·¢ÏÖʧЧµÄRegion Server²¢ÖØÐ·ÖÅäÆäÉϵÄRegion
£¨4£©GFSÉϵÄÀ¬»øÎļþ»ØÊÕ
£¨5£©´¦ÀíSchema¸üÐÂÇëÇó
HMasterÖ÷Òª×÷ÓÃÔÚÓÚ£¬Í¨¹ýHMasterά»¤ÏµÍ³±í-ROOT-,.META.£¬¼Ç¼regionserverËù¶ÔÓ¦region±ä»¯ÐÅÏ¢¡£´ËÍ⻹¸ºÔð¼à¿Ø´¦Àíµ±Ç°hbase clusterÖÐregionserver״̬±ä»¯ÐÅÏ¢¡£
PS£ºÁ½ÕÅÉñÆæµÄ±í£º-ROOT-ºÍ.META
¢Ù.META.£º¼Ç¼ÁËÓû§±íµÄRegionÐÅÏ¢£¬.META.¿ÉÒÔÓжà¸öregoin
¢Ú-ROOT-£º¼Ç¼ÁË.META.±íµÄRegionÐÅÏ¢£¬-ROOT-Ö»ÓÐÒ»¸öregion
ZookeeperÖмǼÁË-ROOT-±íµÄlocation
Client·ÃÎÊÓû§Êý¾Ý֮ǰÐèÒªÊ×ÏÈ·ÃÎÊZookeeper£¬È»ºó·ÃÎÊ-ROOT-±í£¬½Ó×Å·ÃÎÊ.META.±í£¬×îºó²ÅÄÜÕÒµ½Óû§Êý¾ÝµÄλÖÃÈ¥·ÃÎÊ£º

3.4 Region Server
£¨1£©Region Serverά»¤HMaster·ÖÅ䏸ËüµÄRegion£¬´¦Àí¶ÔÕâЩRegionµÄIOÇëÇó
£¨2£©Region Server¸ºÔðÇзÖÔÚÔËÐйý³ÌÖбäµÃ¹ý´óµÄRegion
¿ÉÒÔ¿´³ö£¬client ·ÃÎÊhbase ÉÏÊý¾ÝµÄ¹ý³Ì²¢²»ÐèÒªmaster ²ÎÓ룬Ѱַ·ÃÎÊzookeeper ºÍregion server£¬Êý¾Ý¶Áд·ÃÎÊregioneserver¡£HRegionServerÖ÷Òª¸ºÔðÏìÓ¦Óû§I/OÇëÇó£¬ÏòHDFSÎļþϵͳÖжÁдÊý¾Ý£¬ÊÇHBaseÖÐ×îºËÐĵÄÄ£¿é¡£
|