ͨ¹ý¶ÔHadoop·Ö²¼Ê½¼ÆËãÆ½Ì¨×îºËÐĵķֲ¼Ê½ÎļþϵͳHDFS¡¢MapReduce´¦Àí¹ý³Ì£¬ÒÔ¼°Êý¾Ý²Ö¿â¹¤¾ßHiveºÍ·Ö²¼Ê½Êý¾Ý¿âHbaseµÄ½éÉÜ£¬»ù±¾º¸ÇÁËHadoop·Ö²¼Ê½Æ½Ì¨µÄËùÓм¼ÊõºËÐÄ¡£
ͨ¹ýÕâÒ»½×¶ÎµÄµ÷ÑÐ×ܽᣬ´ÓÄÚ²¿»úÀíµÄ½Ç¶ÈÏêϸ·ÖÎö£¬HDFS¡¢MapReduce¡¢Hbase¡¢HiveÊÇÈçºÎÔËÐУ¬ÒÔ¼°»ùÓÚHadoopÊý¾Ý²Ö¿âµÄ¹¹½¨ºÍ·Ö²¼Ê½Êý¾Ý¿âÄÚ²¿¾ßÌåʵÏÖ¡£ÈçÓв»×㣬ºóÐø¼°Ê±Ð޸ġ£
HDFSµÄÌåϵ¼Ü¹¹
Õû¸öHadoopµÄÌåϵ½á¹¹Ö÷ÒªÊÇͨ¹ýHDFSÀ´ÊµÏÖ¶Ô·Ö²¼Ê½´æ´¢µÄµ×²ãÖ§³Ö£¬²¢Í¨¹ýMRÀ´ÊµÏÖ¶Ô·Ö²¼Ê½²¢ÐÐÈÎÎñ´¦ÀíµÄ³ÌÐòÖ§³Ö¡£
HDFS²ÉÓÃÖ÷´Ó£¨Master/Slave£©½á¹¹Ä£ÐÍ£¬Ò»¸öHDFS¼¯ÈºÊÇÓÉÒ»¸öNameNodeºÍÈô¸É¸öDataNode×é³ÉµÄ£¨ÔÚ×îеÄHadoop2.2°æ±¾ÒѾʵÏÖ¶à¸öNameNodeµÄÅäÖÃ-ÕâÒ²ÊÇһЩ´ó¹«Ë¾Í¨¹ýÐÞ¸ÄhadoopÔ´´úÂëʵÏֵŦÄÜ£¬ÔÚ×îеİ汾ÖоÍÒѾʵÏÖÁË£©¡£NameNode×÷ΪÖ÷·þÎñÆ÷£¬¹ÜÀíÎļþϵͳÃüÃû¿Õ¼äºÍ¿Í»§¶Ë¶ÔÎļþµÄ·ÃÎʲÙ×÷¡£DataNode¹ÜÀí´æ´¢µÄÊý¾Ý¡£HDFSÖ§³ÖÎļþÐÎʽµÄÊý¾Ý¡£
´ÓÄÚ²¿À´¿´£¬Îļþ±»·Ö³ÉÈô¸É¸öÊý¾Ý¿é£¬ÕâÈô¸É¸öÊý¾Ý¿é´æ·ÅÔÚÒ»×éDataNodeÉÏ¡£NameNodeÖ´ÐÐÎļþϵͳµÄÃüÃû¿Õ¼ä£¬Èç´ò¿ª¡¢¹Ø±Õ¡¢ÖØÃüÃûÎļþ»òĿ¼µÈ£¬Ò²¸ºÔðÊý¾Ý¿éµ½¾ßÌåDataNodeµÄÓ³Éä¡£DataNode¸ºÔð´¦ÀíÎļþϵͳ¿Í»§¶ËµÄÎļþ¶Áд£¬²¢ÔÚNameNodeµÄͳһµ÷¶ÈϽøÐÐÊý¾Ý¿âµÄ´´½¨¡¢É¾³ýºÍ¸´Öƹ¤×÷¡£NameNodeÊÇËùÓÐHDFSÔªÊý¾ÝµÄ¹ÜÀíÕߣ¬Óû§Êý¾ÝÓÀÔ¶²»»á¾¹ýNameNode¡£

Èçͼ£ºHDFSÌåϵ½á¹¹Í¼
ͼÖÐÉæ¼°Èý¸ö½ÇÉ«£ºNameNode¡¢DataNode¡¢Client¡£NameNodeÊǹÜÀíÕߣ¬DataNodeÊÇÎļþ´æ´¢Õß¡¢ClientÊÇÐèÒª»ñÈ¡·Ö²¼Ê½ÎļþϵͳµÄÓ¦ÓóÌÐò¡£
ÎļþдÈ룺
1£© ClientÏòNameNode·¢ÆðÎļþдÈëµÄÇëÇó¡£
2£© NameNode¸ù¾ÝÎļþ´óСºÍÎļþ¿éÅäÖÃÇé¿ö£¬·µ»Ø¸øClientËü¹ÜÀíµÄDataNodeµÄÐÅÏ¢¡£
3£© Client½«Îļþ»®·ÖΪ¶à¸öblock£¬¸ù¾ÝDataNodeµÄµØÖ·£¬°´Ë³Ðò½«blockдÈëDataNode¿éÖС£
Îļþ¶ÁÈ¡£º
1£© ClientÏòNameNode·¢Æð¶ÁÈ¡ÎļþµÄÇëÇó¡£
2£© NameNode·µ»ØÎļþ´æ´¢µÄDataNodeÐÅÏ¢¡£
3£© Client¶ÁÈ¡ÎļþÐÅÏ¢¡£
HDFS×÷Ϊ·Ö²¼Ê½ÎļþϵͳÔÚÊý¾Ý¹ÜÀí·½Ãæ¿É½è¼øµã£º
Îļþ¿éµÄ·ÅÖãºÒ»¸öBlock»áÓÐÈý·Ý±¸·Ý£¬Ò»·ÝÔÚNameNodeÖ¸¶¨µÄDateNodeÉÏ£¬Ò»·Ý·ÅÔÚÓëÖ¸¶¨µÄDataNode²»ÔÚͬһ̨»úÆ÷µÄDataNodeÉÏ£¬Ò»¸ùÔÚÓÚÖ¸¶¨µÄDataNodeÔÚͬһRackÉϵÄDataNodeÉÏ¡£±¸·ÝµÄÄ¿µÄÊÇΪÁËÊý¾Ý°²È«£¬²ÉÓÃÕâÖÖ·½Ê½ÊÇΪÁË¿¼Âǵ½Í¬Ò»Rackʧ°ÜµÄÇé¿ö£¬ÒÔ¼°²»Í¬Êý¾Ý¿½±´´øÀ´µÄÐÔÄܵÄÎÊÌâ¡£
MapReduceÌåϵ¼Ü¹¹
MR¿ò¼ÜÊÇÓÉÒ»¸öµ¥¶ÀÔËÐÐÔÚÖ÷½ÚµãÉϵÄJobTrackerºÍÔËÐÐÔÚÿ¸ö¼¯Èº´Ó½ÚµãÉϵÄTaskTracker¹²Í¬×é³É¡£Ö÷½Úµã¸ºÔðµ÷¶È¹¹³ÉÒ»¸ö×÷ÒµµÄËùÓÐÈÎÎñ£¬ÕâЩÈÎÎñ·Ö²¼ÔÚ²»Í¬µÄ²»Í¬µÄ´Ó½ÚµãÉÏ¡£Ö÷½Úµã¼àÊÓËüÃǵÄÖ´ÐÐÇé¿ö£¬²¢ÖØÐÂÖ´ÐÐ֮ǰʧ°ÜµÄÈÎÎñ¡£´Ó½Úµã½ö¸ºÔðÓÉÖ÷½ÚµãÖ¸ÅɵÄÈÎÎñ¡£µ±Ò»¸öJob±»Ìύʱ£¬JobTracker½ÓÊܵ½Ìá½»×÷ÒµºÍÅäÖÃÐÅÏ¢Ö®ºó£¬¾Í»á½«ÅäÖÃÐÅÏ¢µÈ·Ö·¢¸ø´Ó½Úµã£¬Í¬Ê±µ÷¶ÈÈÎÎñ²¢¼à¿ØTaskTrackerµÄÖ´ÐС£JobTracker¿ÉÒÔÔËÐÐÓÚ¼¯ÈºÖеÄÈÎÒâһ̨¼ÆËã»úÉÏ¡£TaskTracker¸ºÔðÖ´ÐÐÈÎÎñ£¬Ëü±ØÐëÔËÐÐÔÚDataNodeÉÏ£¬DataNode¼ÈÊÇÊý¾Ý´æ´¢½Úµã£¬Ò²ÊǼÆËã½Úµã¡£JobTracker½«mapÈÎÎñºÍreduceÈÎÎñ·Ö·¢¸ø¿ÕÏеÄTaskTracker£¬ÕâЩÈÎÎñ²¢ÐÐÔËÐУ¬²¢¼à¿ØÈÎÎñÔËÐеÄÇé¿ö¡£Èç¹ûJobTracker³öÁ˹ÊÕÏ£¬JobTracker»á°ÑÈÎÎñת½»¸øÁíÒ»¸ö¿ÕÏеÄTaskTrackerÖØÐÂÔËÐС£
HDFSºÍMR¹²Í¬×é³ÉHadoop·Ö²¼Ê½ÏµÍ³Ìåϵ½á¹¹µÄºËÐÄ¡£HDFSÔÚ¼¯ÈºÉÏʵÏÖÁË·Ö²¼Ê½Îļþϵͳ£¬MRÔÚ¼¯ÈºÉÏʵÏÖÁË·Ö²¼Ê½¼ÆËãºÍÈÎÎñ´¦Àí¡£HDFSÔÚMRÈÎÎñ´¦Àí¹ý³ÌÖÐÌṩÁËÎļþ²Ù×÷ºÍ´æ´¢µÈÖ§³Ö£¬MRÔÚHDFSµÄ»ù´¡ÉÏʵÏÖÁËÈÎÎñµÄ·Ö·¢¡¢¸ú×Ù¡¢Ö´Ðеȹ¤×÷£¬²¢ÊÕ¼¯½á¹û£¬¶þÕßÏ໥×÷Óã¬Íê³É·Ö²¼Ê½¼¯ÈºµÄÖ÷ÒªÈÎÎñ¡£
HadoopÉϵIJ¢ÐÐÓ¦ÓóÌÐò¿ª·¢ÊÇ»ùÓÚMR±à³Ì¿ò¼Ü¡£MR±à³ÌÄ£ÐÍÔÀí£ºÀûÓÃÒ»¸öÊäÈëµÄkey-value¶Ô¼¯ºÏÀ´²úÉúÒ»¸öÊä³öµÄkey-value¶Ô¼¯ºÏ¡£MR¿âͨ¹ýMapºÍReduceÁ½¸öº¯ÊýÀ´ÊµÏÖÕâ¸ö¿ò¼Ü¡£Óû§×Ô¶¨ÒåµÄmapº¯Êý½ÓÊÜÒ»¸öÊäÈëµÄkey-value¶Ô£¬È»ºó²úÉúÒ»¸öÖмäµÄkey-value¶ÔµÄ¼¯ºÏ¡£MR°ÑËùÓоßÓÐÏàͬµÄkeyÖµµÄvalue½áºÏÔÚÒ»Æð£¬È»ºó´«µÝ¸öreduceº¯Êý¡£Reduceº¯Êý½ÓÊÜkeyºÍÏà¹ØµÄvalue½áºÏ£¬reduceº¯ÊýºÏ²¢ÕâЩvalueÖµ£¬ÐγÉÒ»¸ö½ÏСµÄvalue¼¯ºÏ¡£Í¨³£ÎÒÃÇͨ¹ýÒ»¸öµü´úÆ÷°ÑÖмäµÄvalueÖµÌṩ¸øreduceº¯Êý£¨µü´úÆ÷µÄ×÷ÓþÍÊÇÊÕ¼¯ÕâЩvalueÖµ£©£¬ÕâÑù¾Í¿ÉÒÔ´¦ÀíÎÞ·¨È«²¿·ÅÔÚÄÚ´æÖеĴóÁ¿µÄvalueÖµ¼¯ºÏÁË¡£



˵Ã÷£º£¨µÚÈý·ùͼΪͬ°é×Ô¼º»µÄ£©
Á÷³Ì¼ò¶øÑÔÖ®£¬´óÊý¾Ý¼¯±»·Ö³ÉÖÚ¶àСµÄÊý¾Ý¼¯¿é£¬Èô¸É¸öÊý¾Ý¼¯±»·ÖÔÚ¼¯ÈºÖеÄÒ»¸ö½Úµã½øÐд¦Àí²¢²úÉúÖмä½á¹û¡£µ¥½ÚµãÉϵÄÈÎÎñ£¬mapº¯ÊýÒ»ÐÐÐжÁÈ¡Êý¾Ý»ñµÃÊý¾ÝµÄ£¨k1,v1£©£¬Êý¾Ý½øÈ뻺´æ£¬Í¨¹ýmapº¯ÊýÖ´ÐÐmap£¨»ùÓÚkey-value£©ÅÅÐò£¨¿ò¼Ü»á¶ÔmapµÄÊä³ö½øÐÐÅÅÐò£©Ö´ÐкóÊäÈ루k2,v2£©¡£Ã¿Ò»Ì¨»úÆ÷¶¼Ö´ÐÐͬÑùµÄ²Ù×÷¡£²»Í¬»úÆ÷Éϵģ¨k2,v2£©Í¨¹ýmergeÅÅÐòµÄ¹ý³Ì£¨shuffleµÄ¹ý³Ì¿ÉÒÔÀí½â³ÉreduceǰµÄÒ»¸ö¹ý³Ì£©£¬×îºóreduceºÏ²¢µÃµ½£¬£¨k3,v3£©£¬Êä³öµ½HDFSÎļþÖС£
̸µ½reduce£¬ÔÚreduce֮ǰ£¬¿ÉÒÔÏȶÔÖмäÊý¾Ý½øÐÐÊý¾ÝºÏ²¢£¨Combine£©£¬¼´½«ÖмäÓÐÏàͬµÄkeyµÄ<key,value>¶ÔºÏ²¢¡£CombineµÄ¹ý³ÌÓëreduceµÄ¹ý³ÌÀàËÆ£¬µ«CombineÊÇ×÷ΪmapÈÎÎñµÄÒ»²¿·Ö£¬ÔÚÖ´ÐÐÍêmapº¯Êýºó½ö½Ó×ÅÖ´ÐС£CombineÄܼõÉÙÖмä½á¹ûkey-value¶ÔµÄÊýÄ¿£¬´Ó¶ø½µµÍÍøÂçÁ÷Á¿¡£
MapÈÎÎñµÄÖмä½á¹ûÔÚ×öÍêCombineºÍPartitionºó£¬ÒÔÎļþµÄÐÎʽ´æÓÚ±¾µØ´ÅÅÌÉÏ¡£Öмä½á¹ûÎļþµÄλÖûá֪ͨÖ÷¿ØJobTracker£¬JobTrackerÔÙ֪ͨreduceÈÎÎñµ½ÄÄÒ»¸öDataNodeÉÏȥȡÖмä½á¹û¡£ËùÓеÄmapÈÎÎñ²úÉúµÄÖмä½á¹û¾ù°´ÆäkeyÖµ°´hashº¯Êý»®·Ö³ÉR·Ý£¬R¸öreduceÈÎÎñ¸÷×Ô¸ºÔðÒ»¶ÎkeyÇø¼ä¡£Ã¿¸öreduceÐèÒªÏòÐí¶à¸ömapÈÎÎñ½ÚµãÈ¡µÄÂäÔÚÆä¸ºÔðµÄkeyÇø¼äÄÚµÄÖмä½á¹û£¬È»ºóÖ´ÐÐreduceº¯Êý£¬×îºóÐγÉÒ»¸ö×îÖÕ½á¹û¡£ÓÐR¸öreduceÈÎÎñ£¬¾Í»áÓÐR¸ö×îÖÕ½á¹û£¬ºÜ¶àÇé¿öÏÂÕâR¸ö×îÖÕ½á¹û²¢²»ÐèÒªºÏ²¢³ÉÒ»¸ö×îÖÕ½á¹û£¬ÒòΪÕâR¸ö×îÖÕ½á¹û¿ÉÒÔ×÷ΪÁíÒ»¸ö¼ÆËãÈÎÎñµÄÊäÈ룬¿ªÊ¼ÁíÒ»¸ö²¢ÐмÆËãÈÎÎñ¡£Õâ¾ÍÐγÉÁËÉÏÃæÍ¼Öжà¸öÊä³öÊý¾ÝƬ¶Î£¨HDFS¸±±¾£©¡£
HbaseÊý¾Ý¹ÜÀí
Hbase¾ÍÊÇHadoop database¡£Ó봫ͳµÄmysql¡¢oracle¾¿¾¹ÓÐʲô²î±ð¡£¼´ÁÐʽÊý¾ÝÓëÐÐʽÊý¾ÝÓÉÊ²Ã´Çø±ð¡£NoSqlÊý¾Ý¿âÓ봫ͳ¹ØÏµÐÍÊý¾ÝÓÉÊ²Ã´Çø±ð£º
Hbase VS Oracle
1¡¢ HbaseÊʺϴóÁ¿²åÈëͬʱÓÖÓжÁµÄÇé¿ö¡£ÊäÈëÒ»¸öKey»ñȡһ¸övalue»òÊäÈëһЩkey»ñµÃһЩvalue¡£
2¡¢ HbaseµÄÆ¿¾±ÊÇÓ²ÅÌ´«ÊäËÙ¶È¡£HbaseµÄ²Ù×÷£¬Ëü¿ÉÒÔÍùÊý¾ÝÀïÃæinsert£¬Ò²¿ÉÒÔupdateһЩÊý¾Ý£¬µ«updateµÄʵ¼ÊÉÏÒ²ÊÇinsert£¬Ö»ÊDzåÈëÒ»¸öеÄʱ¼ä´ÁµÄÒ»ÐС£DeleteÊý¾Ý£¬Ò²ÊÇinsert£¬Ö»ÊÇinsertÒ»ÐдøÓÐdelete±ê¼ÇµÄÒ»ÐС£HbaseµÄËùÓвÙ×÷¶¼ÊÇ×·¼Ó²åÈë²Ù×÷¡£HbaseÊÇÒ»ÖÖÈÕÖ¾¼¯Êý¾Ý¿â¡£ËüµÄ´æ´¢·½Ê½£¬ÏñÊÇÈÕÖ¾ÎļþÒ»Ñù¡£ËüÊÇÅúÁ¿´óÁ¿µÄÍùÓ²ÅÌÖÐд£¬Í¨³£¶¼ÊÇÒÔÎļþÐÎʽµÄ¶Áд¡£Õâ¸ö¶ÁдËÙ¶È£¬¾ÍÈ¡¾öÓÚÓ²ÅÌÓë»úÆ÷Ö®¼äµÄ´«ÊäÓжà¿ì¡£¶øOracleµÄÆ¿¾±ÊÇÓ²ÅÌѰµÀʱ¼ä¡£Ëü¾³£µÄ²Ù×÷Ê±Ëæ»ú¶Áд¡£ÒªupdateÒ»¸öÊý¾Ý£¬ÏÈÒªÔÚÓ²ÅÌÖÐÕÒµ½Õâ¸öblock£¬È»ºó°ÑËü¶ÁÈëÄڴ棬ÔÚÄÚ´æÖеĻº´æÖÐÐ޸쬹ý¶Îʱ¼äÔÙ»ØÐ´»ØÈ¥¡£ÓÉÓÚÄãѰÕÒµÄblock²»Í¬£¬Õâ¾Í´æÔÚÒ»¸öËæ»úµÄ¶Á¡£Ó²Å̵ÄѰµÀʱ¼äÖ÷ÒªÓÉתËÙÀ´¾ö¶¨µÄ¡£¶øÑ°µÀʱ¼ä£¬¼¼Êõ»ù±¾Ã»Óиı䣬Õâ¾ÍÐγÉÁËѰµÀʱ¼äÆ¿¾±¡£
3¡¢ HbaseÖÐÊý¾Ý¿ÉÒÔ±£´æÐí¶à²»Í¬Ê±¼ä´ÁµÄ°æ±¾£¨¼´Í¬Ò»Êý¾Ý¿ÉÒÔ¸´ÖÆÐí¶à²»Í¬µÄ°æ±¾£¬×¼ÐíÊý¾ÝÈßÓ࣬ҲÊÇÓÅÊÆ£©¡£Êý¾Ý°´Ê±¼äÅÅÐò£¬Òò´ËHbaseÌØ±ðÊʺÏѰÕÒ°´ÕÕʱ¼äÅÅÐòѰÕÒTop
nµÄ³¡¾°¡£ÕÒ³öij¸öÈË×î½üä¯ÀÀµÄÏûÏ¢£¬×î½üдµÄNƪ²©¿Í£¬NÖÖÐÐΪµÈµÈ£¬Òò´ËHbaseÔÚ»¥ÁªÍøÓ¦Ó÷dz£¶à¡£
4¡¢ HbaseµÄ¾ÖÏÞ¡£Ö»ÄÜ×öºÜ¼òµ¥µÄKey-value²éѯ¡£ËüÊʺÏÓиßËÙ²åÈ룬ͬʱÓÖÓдóÁ¿¶ÁµÄ²Ù×÷³¡¾°¡£¶øÕâÖÖ³¡¾°Óֺܼ«¶Ë£¬²¢²»ÊÇÿһ¸ö¹«Ë¾¶¼ÓÐÕâÖÖÐèÇó¡£ÔÚһЩ¹«Ë¾£¬¾ÍÊÇÆÕͨµÄOLTP£¨Áª»úÊÂÎñ´¦Àí£©Ëæ»ú¶Áд¡£ÔÚÕâÖÖÇé¿öÏ£¬OracleµÄ¿É¿¿ÐÔ£¬ÏµÍ³µÄ¸ºÔð³Ì¶ÈÓÖ±ÈHbaseµÍһЩ¡£¶øÇÒHbase¾ÖÏÞ»¹ÔÚÓÚËüÖ»ÓÐÖ÷¼üË÷Òý£¬Òò´ËÔÚ½¨Ä£µÄʱºò¾ÍÓöµ½ÁËÎÊÌâ¡£±ÈÈ磬ÔÚÒ»ÕűíÖУ¬ºÜ¶àµÄÁÐÎÒ¶¼Ïë×öijÖÖÌõ¼þµÄ²éѯ¡£µ«È´Ö»ÄÜÔÚÖ÷¼üÉϽ¨¿ìËÙ²éѯ¡£ËùÒÔ˵£¬²»ÄÜÁýͳµÄ˵ÄÇÖÖ¼¼ÊõÓÐÓÅÊÆ¡£
5¡¢ OracleÊÇÐÐʽÊý¾Ý¿â£¬¶øHbaseÊÇÁÐʽÊý¾Ý¿â¡£ÁÐʽÊý¾Ý¿âµÄÓÅÊÆÔÚÓÚÊý¾Ý·ÖÎöÕâÖÖ³¡¾°¡£Êý¾Ý·ÖÎöÓ봫ͳµÄOLTPµÄÇø±ð¡£Êý¾Ý·ÖÎö£¬¾³£ÊÇÒÔij¸öÁÐ×÷Ϊ²éѯÌõ¼þ£¬·µ»ØµÄ½á¹ûÒ²¾³£ÊÇijһЩÁУ¬²»ÊÇÈ«²¿µÄÁС£ÔÚÕâÖÖÇé¿öÏ£¬ÐÐʽÊý¾Ý¿â·´Ó¦µÄÐÔÄܾͺܵÍЧ¡£
ÐÐʽÊý¾Ý¿â£ºOracleΪÀý£¬Êý¾ÝÎļþµÄ»ù±¾×é³Éµ¥Î»£º¿é/Ò³¡£¿éÖÐÊý¾ÝÊǰ´ÕÕÒ»ÐÐÐÐдÈëµÄ¡£Õâ¾Í´æÔÚÒ»¸öÎÊÌ⣬µ±ÎÒÃÇÒª¶ÁÒ»¸ö¿éÖеÄijЩÁеÄʱºò£¬²»ÄÜÖ»¶ÁÕâЩÁУ¬±ØÐë°ÑÕâ¸ö¿éÕû¸öµÄ¶ÁÈëÄÚ´æÖУ¬ÔÙ°ÑÕâЩÁеÄÄÚÈݶÁ³öÀ´¡£»»¾ä»°¾ÍÊÇ£ºÎªÁ˶Á±íÖеÄijЩÁУ¬±ØÐëÒª°ÑÕû¸ö±íµÄÐÐÈ«²¿¶ÁÍ꣬²ÅÄܶÁµ½ÕâЩÁС£Õâ¾ÍÊÇÐÐÊý¾Ý¿â×îÔã¸âµÄµØ·½¡£
ÁÐʽÊý¾Ý¿â£ºÊÇÒÔÁÐ×÷ÎªÔªËØ´æ´¢µÄ¡£Í¬Ò»¸öÁеÄÔªËØ»á¼·ÔÚÒ»¸ö¿é¡£µ±Òª¶ÁijЩÁУ¬Ö»ÐèÒª°ÑÏà¹ØµÄÁпé¶Áµ½ÄÚ´æÖУ¬ÕâÑù¶ÁµÄIOÁ¿¾Í»áÉٺܶࡣͨ³££¬Í¬Ò»¸öÁеÄÊý¾ÝÔªËØÍ¨³£¸ñʽ¶¼ÊÇÏà½üµÄ¡£Õâ¾ÍÒâζ×Å£¬µ±Êý¾Ý¸ñʽÏà½üµÄʱºò£¬Êý¾Ý¾Í¿ÉÒÔ×ö´ó·ù¶ÈµÄѹËõ¡£ËùÒÔ£¬ÁÐʽÊý¾Ý¿âÔÚÊý¾ÝѹËõ·½ÃæÓкܴóµÄÓÅÊÆ£¬Ñ¹Ëõ²»½ö½ÚÊ¡ÁË´æ´¢¿Õ¼ä£¬Í¬Ê±Ò²½ÚÊ¡ÁËIO¡££¨ÕâÒ»µã£¬¿ÉÀûÓÃÔÚµ±Êý¾Ý´ïµ½°ÙÍò¡¢Ç§Íò¼¶±ðÒÔºó£¬Êý¾Ý²éѯ֮¼äµÄÓÅ»¯£¬Ìá¸ßÐÔÄÜ£¬Ê¾³¡¾°¶ø¶¨£©
HiveÊý¾Ý¹ÜÀí
HiveÊǽ¨Á¢ÔÚHadoopÉϵÄÊý¾Ý²Ö¿â»ù´¡¼Ü¹¹¡£ËüÌṩÁËһϵÁеŤ¾ß£¬ÓÃÀ´½øÐÐÊý¾ÝÌáÈ¡¡¢×ª»»¡¢¼ÓÔØ£¬ÕâÊÇÒ»ÖÖ¿ÉÒÔ´æ´¢¡¢²éѯºÍ·ÖÎö´æ´¢ÔÚHadoopÖеĴó¹æÄ£Êý¾Ý»úÖÆ¡£¿ÉÒÔ°ÑHadoopϽṹ»¯Êý¾ÝÎļþÓ³ÉäΪһÕųÉHiveÖÐµÄ±í£¬²¢ÌṩÀàsql²éѯ¹¦ÄÜ£¬³ýÁ˲»Ö§³Ö¸üС¢Ë÷ÒýºÍÊÂÎñ£¬sqlÆäËü¹¦Äܶ¼Ö§³Ö¡£¿ÉÒÔ½«sqlÓï¾äת»»ÎªMapReduceÈÎÎñ½øÐÐÔËÐУ¬×÷Ϊsqlµ½MapReduceµÄÓ³ÉäÆ÷¡£Ìṩshell¡¢JDBC/ODBC¡¢Thrift¡¢WebµÈ½Ó¿Ú¡£Óŵ㣺³É±¾µÍ¿ÉÒÔͨ¹ýÀàsqlÓï¾ä¿ìËÙʵÏÖ¼òµ¥µÄMapReduceͳ¼Æ¡£×÷Ϊһ¸öÊý¾Ý²Ö¿â£¬HiveµÄÊý¾Ý¹ÜÀí°´ÕÕʹÓòã´Î¿ÉÒÔ´ÓÔªÊý¾Ý´æ´¢¡¢Êý¾Ý´æ´¢ºÍÊý¾Ý½»»»Èý¸ö·½Ãæ½éÉÜ¡£
£¨1£©ÔªÊý¾Ý´æ´¢
Hive½«ÔªÊý¾Ý´æ´¢ÔÚRDBMSÖУ¬ÓÐÈýÖÖ·½Ê½¿ÉÒÔÁ¬½Óµ½Êý¾Ý¿â£º
ÄÚǶģʽ£ºÔªÊý¾Ý±£³ÖÔÚÄÚǶÊý¾Ý¿âµÄDerby£¬Ò»°ãÓÃÓÚµ¥Ôª²âÊÔ£¬Ö»ÔÊÐíÒ»¸ö»á»°Á¬½Ó
¶àÓû§Ä£Ê½£ºÔÚ±¾µØ°²×°Mysql£¬°ÑÔªÊý¾Ý·Åµ½MysqlÄÚ
Ô¶³Ìģʽ£ºÔªÊý¾Ý·ÅÖÃÔÚÔ¶³ÌµÄMysqlÊý¾Ý¿â
£¨2£©Êý¾Ý´æ´¢
Ê×ÏÈ£¬HiveûÓÐרÃŵÄÊý¾Ý´æ´¢¸ñʽ£¬Ò²Ã»ÓÐΪÊý¾Ý½¨Á¢Ë÷Òý£¬ÓÃÓÚ¿ÉÒԷdz£×ÔÓɵÄ×éÖ¯HiveÖÐµÄ±í£¬Ö»ÐèÒªÔÚ´´½¨±íµÄʱºò¸æËßHiveÊý¾ÝÖеÄÁзָô·ûºÍÐзָô·û£¬Õâ¾Í¿ÉÒÔ½âÎöÊý¾ÝÁË¡£
Æä´Î£¬HiveÖÐËùÓеÄÊý¾Ý¶¼´æ´¢ÔÚHDFSÖУ¬HiveÖаüº¬4ÖÐÊý¾ÝÄ£ÐÍ£ºTabel¡¢ExternalTable¡¢Partition¡¢Bucket¡£
Table£ºÀàËÆÓ봫ͳÊý¾Ý¿âÖеÄTable£¬Ã¿Ò»¸öTableÔÚHiveÖж¼ÓÐÒ»¸öÏàÓ¦µÄĿ¼À´´æ´¢Êý¾Ý¡£ÀýÈ磺һ¸ö±ízz£¬ËüÔÚHDFSÖеÄ·¾¶Îª£º/wh/zz£¬ÆäÖÐwhÊÇÔÚhive-site.xmlÖÐÓÉ$Ö¸¶¨µÄÊý¾Ý²Ö¿âµÄĿ¼£¬ËùÓеÄTableÊý¾Ý£¨²»º¬External
Table£©¶¼±£´æÔÚÕâ¸öĿ¼ÖС£
Partition£ºÀàËÆÓÚ´«Í³Êý¾Ý¿âÖл®·ÖÁеÄË÷Òý¡£ÔÚHiveÖУ¬±íÖеÄÒ»¸öPartition¶ÔÓ¦ÓÚ±íϵÄÒ»¸öĿ¼£¬ËùÓеÄPartitionÊý¾Ý¶¼´æ´¢ÔÚ¶ÔÓ¦µÄĿ¼ÖС£ÀýÈ磺zz±íÖаüº¬dsºÍcityÁ½¸öPartition£¬Ôò¶ÔÓ¦ÓÚds=20140214£¬city=beijingµÄHDFS×ÓĿ¼Ϊ£º/wh/zz/ds=20140214/city=Beijing;
Buckets£º¶ÔÖ¸¶¨ÁмÆËãµÄhash£¬¸ù¾ÝhashÖµÇзÖÊý¾Ý£¬Ä¿µÄÊÇΪÁ˱ãÓÚ²¢ÐУ¬Ã¿Ò»¸öBuckets¶ÔÓ¦Ò»¸öÎļþ¡£½«userÁзÖÊýÖÁ32¸öBucketÉÏ£¬Ê×ÏȶÔuserÁеÄÖµ¼ÆËãhash£¬±ÈÈ磬¶ÔÓ¦hash=0µÄHDFSĿ¼Ϊ£º/wh/zz/ds=20140214/city=Beijing/part-00000;¶ÔÓ¦hash=20µÄ£¬Ä¿Â¼Îª£º/wh/zz/ds=20140214/city=Beijing/part-00020¡£
ExternalTableÖ¸ÏòÒÑ´æÔÚHDFSÖеÄÊý¾Ý£¬¿É´´½¨Partition¡£ºÍTableÔÚÔªÊý¾Ý×éÖ¯½á¹¹Ïàͬ£¬ÔÚʵ¼Ê´æ´¢ÉÏÓнϴó²îÒì¡£Table´´½¨ºÍÊý¾Ý¼ÓÔØ¹ý³Ì£¬¿ÉÒÔÓÃͳһÓï¾äʵÏÖ£¬Êµ¼ÊÊý¾Ý±»×ªÒƵ½Êý¾Ý²Ö¿âĿ¼ÖУ¬Ö®ºó¶ÔÊý¾ÝµÄ·ÃÎʽ«»áÖ±½ÓÔÚÊý¾Ý²Ö¿âµÄĿ¼ÖÐÍê³É¡£É¾³ý±íʱ£¬±íÖеÄÊý¾ÝºÍÔªÊý¾Ý¶¼»áɾ³ý¡£ExternalTableÖ»ÓÐÒ»¸ö¹ý³Ì£¬ÒòΪ¼ÓÔØÊý¾ÝºÍ´´½¨±íÊÇͬʱÍê³É¡£ÊÀ½çÊý¾ÝÊÇ´æ´¢ÔÚLocationºóÃæÖ¸¶¨µÄHDFS·¾¶Öе쬲¢²»»áÒÆ¶¯µ½Êý¾Ý²Ö¿âÖС£
£¨3£©Êý¾Ý½»»»
Óû§½Ó¿Ú£º°üÀ¨¿Í»§¶Ë¡¢Web½çÃæºÍÊý¾Ý¿â½Ó¿Ú
ÔªÊý¾Ý´æ´¢£ºÍ¨³£ÊÇ´æ´¢ÔÚ¹ØÏµÊý¾Ý¿âÖеģ¬ÈçMysql£¬DerbyµÈ
Hadoop£ºÓÃHDFS½øÐд洢£¬ÀûÓÃMapReduce½øÐмÆËã¡£
¹Ø¼üµã£ºHive½«ÔªÊý¾Ý´æ´¢ÔÚÊý¾Ý¿âÖУ¬ÈçMysql¡¢DerbyÖС£HiveÖеÄÔªÊý¾Ý°üÀ¨±íµÄÃû×Ö¡¢±íµÄÁкͷÖÇø¼°ÆäÊôÐÔ¡¢±íµÄÊôÐÔ£¨ÊÇ·ñΪÍⲿ±í£©¡¢±íÊý¾ÝËùÔÚµÄĿ¼µÈ¡£
HiveµÄÊý¾Ý´æ´¢ÔÚHDFSÖУ¬´ó²¿·ÖµÄ²éѯÓÉMapReduceÍê³É¡£
×ܽ᣺
ͨ¹ý¶ÔHadoop·Ö²¼Ê½¼ÆËãÆ½Ì¨×îºËÐĵķֲ¼Ê½ÎļþϵͳHDFS¡¢MapReduce´¦Àí¹ý³Ì£¬ÒÔ¼°Êý¾Ý²Ö¿â¹¤¾ßHiveºÍ·Ö²¼Ê½Êý¾Ý¿âHbaseµÄ½éÉÜ¡£»ù±¾º¸ÇÁËHadoop·Ö²¼Ê½Æ½Ì¨µÄËùÓм¼ÊõºËÐÄ¡£´ÓÌåϵ¼Ü¹¹µ½Êý¾Ý¶¨Òåµ½Êý¾Ý´æ´¢ÔÙµ½Êý¾Ý´¦Àí£¬´Óºê¹Ûµ½Î¢¹ÛµÄϵͳ½éÉÜ£¬ÎªHadoopƽ̨ÉÏ´ó¹æÄ£µÄÊý¾Ý´æ´¢ºÍÈÎÎñ´¦Àí´òÏ»ù´¡¡£ |