»»¸ö½Ç¶ÈÀí½âÔÆ¼ÆËãÖ®MapReduce
Ñ§Ï°ÔÆ¼ÆË㣬±ØÈ»µÃÁ˽âHadoop£¬¶øHadoopÖеÄHDFS£¨·Ö²¼Ê½Îļþϵͳ£©ÊÇÒ»¸ö»ù´¡£¬½ÓÏÂÀ´¾ÍдһÏÂÎÒËùÀí½âµÄHDFS¡£
ÓÐÒ»¸öºÜÓÐÌØ±ðµÄ´åׯ£¬´åׯÀïÃæÓÐÒ»¸öºÜÅ£±ÆµÄÈË£¬½Ð×ö¡°´ó¸ç¡±£¬´åÃñÃǶ¼ÐŵùýËû£¬ÓÚÊÇ»á°Ñ×Ô¼º¼ÒµÄÁ¸Ê³¡¢Å©¾ßµÈµÈ¸÷ÖÖ¸÷ÑùµÄ¶«Î÷¡°´ò°ü³ÉÒ»¸ö´óµÄ°ü¹ü¡±Èá°´ó¸ç¡±¸ø´æ×Å£¬µÈÓõÄʱºò£¬ÔÙÈ¥ÕÒ´ó¸çÒª¡£ÎÒÃÇ¿ÉÒÔ¹ÃÇÒ¼òµ¥µÄÈÏΪ£º¡°´ó¸ç¡±¾ÍÊÇ·þÎñÆ÷Server£¬´åÃñÃÇÊǿͻ§¶ËClient£¬¶ø´åÃñ´ò°üµÄÒ»¸ö´óµÄ°ü¹ü¾ÍÊÇÒ»¸öºÜ´óµÄÎļþ¡£
Ò»¿ªÊ¼´ó¼ÒÏà°²ÎÞÊ£¬ºóÀ´±ðµÄ´åµÄÈË£¨¸ü¶àµÄClient£©¾õµÃÔÚ×Ô¼º¼ÒÀï·ÅÄÇô¶à¶«Î÷£¬Ì«Õ¼µØ·½£¬ÓÚÊǶ¼ÕÒ¡°´ó¸ç¡±£¬Òª°Ñ¶«Î÷·ÅËûÕâ¶ù¡£¡°´ó¸ç¡±ÈËÒ²ËãºÃ£¬À´Õß²»¾Ü£¬¿ÉÊÇ×Ô¼º¼ÒÀï¾ÍÄÇô¶àµã¶ùµØ·½£¬·Å²»ÏÂÁËÔõô°ì£¿
ÓÚÊÇ¡°´ó¸ç¡±Ïëµ½Ò»¸ö°ì·¨£¬À©´ó×Ô¼º¼ÒµÄµØ·½£¨·þÎñÆ÷À©´óÓ²ÅÌÈÝÁ¿£©£¬ÕâÑù¾ÍºÜºÃµÄ½â¾öÁËÎÊÌâ¡£
¿ÉÊÇ¡°´ó¸ç¡±µÄÃûÆøÔ½À´Ô½¶à£¬ÍùËûÕâ¶ù´æ¶«Î÷µÄÈËÔ½À´Ô½¶à£¬ÎÞÐÝÖ¹µÄµÄÀ©´ó×Ô¼º¼ÒµÄµØ·½£¬Ò²²»ÊÇÒ»¸ö°ì·¨°¡¡£¡°´ó¸ç¡±¿ªÊ¼Æ´Ãü¶ÁÊ飬Çë½Ì¸÷·ÅóÓÑÖ§ÕУ¬×îÖÕÒ»¸ö½Ð×ö¡°¹¥³Çʨ¡±ÅóÓÑһϵãÖÐÒªº¦£º¡°´ó¸ç£¬ÄãÏÖÔÚÓöµ½µÄÎÊÌâ½Ð×ö´óÊý¾Ý£¬ÓÐÈËÒ²³ÆÎªº£Á¿Êý¾Ý£¬ÓÐÈËÒ²³ÆÎªbigdata¡±¡£¡°ÐǪ̈¸ß¼û£¬¿ÉÓÐÆÆ½âÖ®µÀ£¿¡±
¡°¹â¿¿À©³ä×Ô¼ºµÄ¼ÒµØ·½Ò²²»Êǰ취£¬»¹µÃÏëµ½Ò»¸öÍòȫ֮²ß¡±¡£ËûÃǾ¹ýÈÕҹ˼¿¼£¬ÖÕÓÚÏëµ½Ò»¸ö¾øÃîµÄ°ì·¨£¬ÇÒÌýÎÒÂýÂýµÀÀ´¡£
´ó¸ç¹ÍÓ¶ÁËÆäËûһЩÈË£¬ÎÒÃǹÃÇÒ½ÐËûÃÇ¡°Ð¡µÜÃÇ¡±£¬ËûÃÇÊÇ¡°Ö÷´ÓµÄ¹ØÏµ¡±¡£Ð¡µÜÃǼÒÀï»áÓÐЩµØ·½£¬ÕâÑù´åÃñÃÇÍù´ó¸çÕâ¶ù´æ¶«Î÷µÄ»°£¬´ó¸ç²¢²»ÓÃ×Ô¼º¼ÒµÄµØ·½£¬¶øÊÇ·ÅÔÚ±ðµÄСµÜÄǶù£¬Ëæ×Å´åÃñÃÇ´æµÄ¶«Î÷Ô½À´Ô½¶à£¬´ó¸çÖ»ÐèÒª¶à¹ÍÓ¶µã¶ùСµÜ¾ÍÐÐÁË¡£
ÉÏÃæ¾ÍÊÇ¡°´ó¸ç¡±ºÍ¡°¹¥³Çʨ¡±Ïëµ½µÄÒ»¸öÍòȫ֮²ß£¬ËûÃdzÆÖ®ÎªHDFS£¬¶ø´ó¸çΪÁËСµÜÃdzƺô·½±ã£¬¸ø×Ô¼ºÆðÁËÒ»¸ö»¨Ãû£¬½Ð×ö¡°NameNode¡±£¬Ò²¸øÐ¡µÜÃÇÿ¸öÈËÆðÁ˸ö»¨Ãû£ºDataNode1¡¢DataNode2¡¢DataNode3¡¢¡¡¡£¶ÔÓÚ´åÃñ£¨¿Í»§¶Ë£©À´Ëµ£¬ÎÒÐèÒª´æ¶«Î÷µ½ÄãÄǶù£¬Ö±½Ó¸øÄã¾ÍÐÐÁË£¬²»Óÿ¼ÂÇÌ«¶à£¬¿ÉÊÇ´ó¸çÐÄËᣬÓÖÔõ¿ÉÖª¡£ÎÒÃÇ¿´¿´´ó¸çÊÇÈçºÎºÜºÃµÄÔË×÷HDFSµÄ¡£
¼ÙÉèÓиö´åÃñÒª´æÒ»¸ö´ó°ü¹ü¸ø´ó¸ç£¬Õâ¸ö´ó°ü¹üÓжà´óÄØ£¬³ÆÁ˳ƣ¬´ó¸ÅÊÇ¡°6GB¡±¡£½ÓÏÂÀ´ÊÇ´ó¸çÃæ¶ÔÕâ¡°6GB¡±µÄ¶«Î÷£¬Ë¼¿¼µÄһЩÎÊÌâºÍ½â¾öµÄ·½·¨¡£
1.Õâô´ó¶«Î÷Ôõô´æÄØ£¿
Ëû°ÑÕâôһ¸ö´óµÄ¶«Î÷£¬ÇзֳÉÁË64MB´óСµÄ¿é£¨Block£©£¬¸øÐ¡µÜÃÇ£¨DataNode£©·Ö³öÈ¥£¬¶ø´ó¸ç£¨DataNode£©ÄÔ×Ó£¨Äڴ棩ÀïÃæ¼Çϸ÷¸ö¿é¶¼·Ö¸øÁËÄĸöСµÜ¡£ÕâÑùÈ˼ҴåÃñÀ´È¡¶«Î÷µÄʱºò£¬´ó¸ç¡°NameNode¡±»á¸æËß´åÃñ¸÷¸ö¿é£¨Block£©ÔÚÄĸöСµÜÊÖÀȻºóÖ±½ÓÕÒСµÜÒª¾ÍÐÐÁË¡£
2.¹â¼ÇÔÚÄÔ×ÓÀï²»ÐУ¬ÒªÊÇÍüÁËÔõô°ì£¿
´åÃñµÄ¸÷ÖÖÐÐΪ£¨´´½¨¡¢Ð޸ġ¢É¾³ý£©µÈ²Ù×÷ʱ£¬´ó¸ç²»Äܽö½ö¼ÇÔÚÄÔ×ÓÀ»¹×¼±¸ÁËÁ½¸ö±¾×Ó£¨Îļþ£©£¬Ò»¸ö½Ð×öEditLog£¬Ò»¸ö½Ð×öFSImage¡£ÎÞÂÛ´åÃñд涫Î÷¡¢ÐÞ¸Ä×Ô¼º´æµÄ¶«Î÷¡¢É¾³ý×Ô¼º´æµÄ¶«Î÷£¬´ó¸ç¡°NameNode¡±¶¼»áÔÚEditLog¼ÇÏÂÒ»±Ê¡£
ÍòÒ»EditLog»òFSImage¶ªÁËÔõô°ì£¿ÓÚÊÇËûÕÒÁ˸ö¹Ü¼Ò£¬½Ð×ö¡°SecondaryNameNode¡±£¬°ïËûÒ²´æ×ÅÕâÁ½¸öÎļþ£¬Çмǣ¬ËäȻҲÓÐNameNode³ÆºÅ£¬µ«Ëû½ö½öÊÇ¡°¹Ü¼Ò¡±£¬²»ÊÇ¡°´ó¸ç¡±£¬ÒªÊÇ´ó¸çËÀÁË£¬¹Ü¼ÒÒ²µ£µ±²»ÁË´ó¸çµÄλÖá£
3.´æÊý¾Ý¿éµÄСµÜ¡°¹ÒÁË¡±Ôõô°ìÄØ£¿
£¨1£©Ôõô֪µÀСµÜ¡°¹ÒÁË¡±ÄØ£¿
ΪÁ˱£Ö¤Ð¡µÜÃǺúøɻСµÜ£¨DataNode£©ÐèÒªÖÜÆÚÐÔµÄÏò´ó¸ç£¨NameNode£©»ã±¨Çé¿ö£¬³ÆÎª¡°ÐÄÌøÐźÅheartbeat¡±£¬Èç¹ûÖÜÆÚÐÔµÄÊÕµ½Ðźţ¬±íʾСµÜûÊ£»Èç¹ûûÓÐÊÕµ½ÄØ£¬Ôò˵Ã÷СµÜÒì³£ÁË¡£¡¡¡¡
£¨2£©´ó¸çµÄÓ¦¶Ô²ßÂÔÊÇÊ²Ã´ÄØ£¿
´ó¸ç°Ñ´óÎļþ·Ö³ÉÒ»¸ö¸ö64MBµÄС¿é¸øÁËСµÜ£¬ÍòÒ»ÄĸöСµÜ¹ÒÁË£¬Õâ¸öÊý¾Ý¿é²»¾Í¶ªÊ§ÁË£¬´åÃñ»¹²»µÃ¶ÂÎÒ¼ÒÃÅ¡£Òò´Ë´ó¸ç°Ñijһ¸ö¿é¸øÆäÖÐÒ»¸öСµÜǰ£¬»áÏȸ´ÖƳöÁ½·Ý£¬½Ð×ö¡°¸±±¾¡±£¬¸øÆäËûСµÜÒ²´æ×Å£¬ÕâÖÖÈßÓà´æ´¢£¬±£Ö¤ÁËÊý¾ÝµÄ°²È«ÐÔ¡£
£¨3£©¸±±¾¸øÄÄЩСµÜÄØ£¿
Ò»¸öÊý¾Ý¿éĬÈϵÄ3¸ö¸±±¾£¬²»ÊÇËæ±ã¸øÄĸöСµÜµÄ£¬Ò»°ã¸ø·ûºÏÏÂÃæÒªÇóµÄСµÜ£º
1£©µÚÒ»¸ö¸±±¾¸øÈÎÒâÒ»¸öСµÜ£¨DataNode£©¡£
2£©µÚ¶þ¸ö¸±±¾¸øµÚÒ»¸öСµÜµÄÁÚ¾Ó¡££¨Í¬Ò»¸ö»ú¼ÜÉÏ£©
3£©µÚÈý¸ö¸±±¾¸øÆäËûСµÜ£¬ÀëÇ°ÃæÁ½¸ö¶¼Ô¶µã¶ù¡££¨²»Í¬»ú¼ÜµÄDataNode£©
±¸×¢£ºÍ¬Ò»¸ö»ú¼ÜϵÄÁ½¸ö·þÎñÆ÷´ø¿í±È²»Í¬»ú¼Ü¼äÁ½Ì¨´ø¿íÒª´ó¡£
£¨4£©¸±±¾Ôõô¸øÐ¡µÜ
¸±±¾µÄ¸´ÖÆÊDzÉÓõÄÁ÷Ë®Ïßʽ¸´ÖÆ·½·¨¡£¾ßÌåÀ´Ëµ£º¿Í»§¶Ë´æÊý¾ÝµÄʱºò£¬ÏȰÑÊý¾Ýдµ½±¾µØ´ÅÅÌÁÙʱÎļþÖУ¬µÈд¹»64MBÁË£¬NameNode²Å»á¸æË߿ͻ§¶ËÒ»¸öDataNodeµØÖ·£¬Èÿͻ§¶ËÍùÀïÃæÐ´Êý¾Ý£¬µÚÒ»¸öDataNodeһС²¿·ÖһС²¿·ÖµÄ½ÓÊÕÊý¾Ý£¬È»ºó°Ñ½Óµ½µÄÊý¾Ý¸´ÖƸøµÚ¶þ¸öDataNode£¬È»ºóµÚ¶þ¸öDataNode¸´ÖƸøµÚÈý¸ö£¬ÒÔÕâÖÖÁ÷Ë®ÏßʽµÄ½øÐи±±¾µÄ¸´ÖÆ¡£
£¨5£©ÍòÒ»ÓÐÒ»¸öСµÜ¹ÒÁËÔõô°ì£¿
ÌìÓв»²â·çÔÆÈËÓе©Ï¦»ö¸££¬Èç¹ûÆäÖÐÒ»¸öСµÜÕæ¹ÒÁË£¬ÄÇôÏÖÔÚ¸±±¾Êý±ä³ÉÁËÁ½¸ö£¬´ó¸ç»áÔÙ´´½¨Ò»¸ö¸±±¾¸øÆäËûСµÜ´æ×Å£¬±£Ö¤¸±±¾µÄÊýÁ¿²»ÉÙÓÚ3¸ö£¬Ò»Çа²È«µÚÒ»¡£
ÄáÂ꣬ÖÕÓڸ㶨Á˺£Á¿Êý¾Ý´æ´¢µÄÎÊÌ⣬´ó¸ç¹ÍÓ¶ÁËÕâô¶àСµÜ£¬²»ÄÜÖ»´æ´¢Êý¾Ý°É£¬Ôõô×ÅÒ²µÃÔٸɵã¶ù±ðµÄ°É£¬ÓÚÊÇËûÃÇÓÖÏë×ÅÈ¥°ïÖú´åÃñÈ¥Íê³ÉËûÃǵÄһЩ¼ÆËãµÈÈÎÎñ£¬Õâ¸öʱºò£¬´ó¸çÓÖÓÐÁ˸öÃû×Ö£¬½Ð×ö¡°JobTracker¡±£¬¶øÐ¡µÜÃÇÓÖÓÐÁ˸öеÄÃû×Ö£¬½Ð×ö¡°TaskTracker¡±£¬ÓÖ×é³ÉÁËÒ»¸öеÄÍŶӣ¬½Ð×ö£ºMapReduce¡£
»»¸ö½Ç¶ÈÀí½âÔÆ¼ÆËãÖ®MapReduce
ÉÏһƪ¼òµ¥½²ÁËÒ»ÏÂHDFS£¬¼òµ¥À´Ëµ¾ÍÊÇÒ»¸ö½Ð×ö¡°NameNode¡±µÄ´ó¸ç£¬´ø×ÅһȺ½Ð×ö¡°DataNode¡±µÄСµÜ£¬Íê³ÉÁËÒ»ÛçÛçÊý¾ÝµÄ´æ´¢£¬ÆäÖдó¸ç¸ºÔð±£´æÊý¾ÝµÄĿ¼£¬Ð¡µÜÃǸºÔðÊý¾ÝµÄÕæÕý´æ´¢£¬¶ø´ó¸çºÍСµÜÆäʵ¾ÍÊÇһ̨̨µÄµçÄÔ£¬ËûÃÇÖ®¼äͨ¹ý½»»»»ú£¬»¥ÏàÁªÏµµ½ÁËÒ»Æð¡£
ÆäʵÕâλ´ó¸çºÍÕâȺСµÜ²»½öÄÜ´æ´¢Êý¾Ý£¬»¹ÄÜÍê³ÉºÜ¶à¼ÆËãÈÎÎñ£¬ÓÚÊÇËûÃÇÓÐÁËеÄÃû×Ö£¬´ó¸ç½Ð×ö¡°JobTracker¡±£¬¶øÐ¡µÜÃǽÐ×ö¡°TaskTracker¡±£¬Ò»Æð×é³ÉÁËMapReduce¡£½ñÌì¾ÍÀ´ËµËµMapReduceÊÇÔõôһ»ØÊ¡£
ÕâÀï½ö½öÊÇ´Ó´óÃæÉÏÈ¥½éÉÜ£¬Èôó¼ÒÓÐÒ»¸öÕûÌåµÄÈÏʶ£¬¶øÕûÌåÉÏÈÏʶºó£¬¸ö±ðµÄϸ½Ú֪ʶ×Ô¼ºÔÙÈ¥¿´¿´±ðµÄ×ÊÁÏ£¬Ò²¾ÍºÜÈÝÒ×Àí½âÁË£¬Ö»ÊÇʱ¼äÎÊÌâ¶øÒÑ¡£
¸Õ¿ªÊ¼Ñ§Ï°MapReduce£¬¿Ï¶¨»á±»¸÷ÖÖ¸÷ÑùµÄ¸ÅÄîÕûµÄÔÎͷתÏò£¬µ½µ×ÄáÂêÈÎÎñ¡¢job¡¢×÷Òµ¡¢TaskÓÐÊ²Ã´Çø±ð£¿split¡¢Êý¾Ý·ÖƬ¡¢Êý¾Ý¿é¡¢blockµ½µ×Ê²Ã´Çø±ð£¿Map¡¢Mapper¡¢Map·½·¨µ½µ×ÊDz»ÊÇÒ»»ØÊ£¿µ½µ×MapÊäÈëµÄKeyºÍValueÊÇʲô£¬ÊÇÒ»ÐÐÊý¾Ý£¬»¹ÊÇÒ»ÐÐÐеÄÊý¾Ý£¿ReduceµÄÊäÈëµ½µ×ÄáÂêÊÇʲô¶«Î÷£¿ËûÃÇÖ®¼äµ½µ×ÊÇÔõôһ¸öÊý¾ÝÁ÷³Ì£¿»¹³öÏÖÁËʲôSort¡¢Merge¡¢Shuffle£¿ÎÒÁ˸öÈ¥°¡£¡£¡£¡
Èç¹ûÄãÒ²ÓÐÕâÑùµÄÒÉ»ó£¬ÄÇôÏÂÃæÌýÎÒÂýÂýµÀÀ´°É£¬Çë¼ÇסÁ½µã£º1.MapReduceÊǸö¿ò¼Ü£¬Òò´ËÊǺܼòµ¥µÄ£¬Ç°ÏÈÔÚÄÔ×ÓÀïÃæÓÐÕâ¸ö¹ÛÄî¡£2.ÓÐÁËÕâ¸ö¹ÛÄ¾Í²»Òª±©ÔêÁË£¬ÂýÂý¿´ÏÂÈ¥°É¡£
ΪÁË˵ÇåMapReduceÕâ¸öÎÊÌ⣬ÎÒ»¹ÊÇÒÔ¾µäµÄͳ¼Æµ¥´ÊÊýÁ¿À´Ò»²½²½µÄ˵Ã÷¡£ÎÒÀ´Ò»²½²½µÄȥ˵£º
Ò»¡¢ÎÒÃÇÒª¸Éʲô£¿
ÏÖÔÚÓÐÒ»¸öÎı¾Îļþ£¬ÀïÃæºÃ¶àºÃ¶àµ¥´Ê£¬ÎļþÓжà´óÄØ£¿±ð¹ÜËü¶à´óÁË£¬·´ÕýÓкܶàÐУ¬ÎÒÃÇÒª×öµÄÊÂÇé¾ÍÊÇ£ºÍ³¼Æ³öÀ´µ½µ×Õâ¸öÎļþÀïÃæÃ¿¸öµ¥´Ê³öÏֵĴÎÊý£¬×îÖÕÊä³ö½á¹ûµ½ÎļþÖС£¼òµ¥À´ËµÈçÏ£º
ÊäÈ룺һ¸öÓкܶ൥´ÊµÄÎı¾Îļþ¡£ ¡¡
ÀýÈ磺ÎļþΪtest.txt,ÎļþÄÚÈÝÈçÏ£º hello world hello hadoop hello dog hello world hello jobs |
Êä³ö£ºÒ»¸öÏÔʾµ¥´Ê³öÏÖ´ÎÊýµÄÎļþ¡£
ÀýÈ磺ͳ¼Æ³öÀ´½á¹ûΪ£º hello 29 world 300 hadoop 34 jobs 1
|
¶þ¡¢±àд³ÌÐò
Õë¶ÔÉÏÃæÕâ¼þÊ£¬ÎÒÃDZàд³ÌÐò£¬³ÌÐòÃû×Ö½ÐMyWordCount£¬ÎÒÃǰѳÌÐòÌá½»¸øMapReduce£¬Èôó¸çºÍСµÜÃÇÈ¥×ö£¬ÎÒÃdzÆÖ®ÎªÒ»¸ö×÷Òµ£¬Ó¢ÎÄÃû½Ð×öjob¡£
Èý¡¢³ÌÐò×öÁËʲô
¹Ø¼üµãÀ´ÁË¡£
1¡¢Îļþ·Ö¸î
Õâô´óÒ»¸öÊý¾ÝÎļþtest.txt,Ê×ÏÈÊäÈë½øÀ´Ö®ºó£¬»á±»·Ö¸î³ÉÒ»¿éÒ»¿éµÄ£¬³ÆÖ®ÎªÒ»¸ö¸ösplit¡£ÎªÁË·½±ãÎÒÃǼÙÉè·Ö³ÉÁË5¸ösplit£¬·Ö±ðÊÇsplit1~5£¬Ëµ°×ÁË£¬¿ÉÒÔÈÏΪÊǰÑtest.txt·Ö³ÉÁËÎå¸öСÎļþsplit1~5£¬Ã¿¸ösplitÀïÃæÓкܶàÐÐÊý¾Ý¡££¨µ½µ×ÊäÈëÎļþÔõô»®·Ö£¬¿ÉÒÔ¿´¿´InputSplit,¿ÉÒÔÉèÖõģ¬ÕâÀïÎÒÃǾͼÙÉèÄǸötest.txtÎļþÄÚÈÝ´ÓÉϵ½Ï·ֳÉÁË5·Ý£©¡£½ÓÏÂÀ´·Ö±ð¶ÔÕâ5¸ösplit½øÐе¥´ÊµÄͳ¼Æ£¬½Ð×ö·Ö²¼Ê½ÔËË㡣ÿһ¸ösplit×÷ΪÊäÈëÊý¾Ý£¬¸øÁËÒ»¸öMap£¬Òò´Ë½Ð×öMapÈÎÎñ£¬ÄãÒ²¿ÉÒÔ½Ð×öMapper£¬ÔÚ±àд³ÌÐòÀïÃæMapperÊÇÒ»¸öÀ࣬ÓÃÁ˼̳еġ£
Òò´Ë£¬×ܽáһϾÍÊÇ£ºÒ»¸öÎļþ£¬·Ö³ÉÁËsplit1~5Îå¸öÊý¾Ý·ÖƬ£¬Ã¿¸öÊý¾Ý·ÖƬ¶ÔÓ¦Ò»¸öMapÈÎÎñ£¬¹²Îå¸öMapÈÎÎñ£¬·Ö±ðΪMap1~5¡£ÄÇôÕâ5¸öÈÎÎñÈÃËÈ¥¸ÉÄØ£¿´ó¸ç¡°JobTracker¡±Ëµ£¬Ð¡µÜ¡°Tasktracker¡±ÃÇÈ¥¸É°É¡£ÒªÊÇÓÐ5¸öСµÜ£¬Ò»ÈËÒ»¸öMapÈÎÎñ£¬¿ÉÊǼÙÈçÓÐÈý¸öСµÜµÄ»°£¬ÄÇôÆäÖÐÁ½¸öСµÜ¾Í±ØÐë¶à¸ÉÒ»¸öÈÎÎñ¡£
£¨Êµ¼ÊÔËÐйý³ÌÖУ¬´ó¸ÅÊÇÿ¸öСµÜ´óÔ¼10µ½100¸öMap£¬¶ÔÓÚCPUÏûºÄ½ÏСµÄ£¬´ó¸ç¿ÉÄÜ»á¸øÕâ¸öСµÜ·ÖÅä300¸ö×óÓÒ£©
2.Map²Ù×÷
ÈÃÎÒÃǰѾµÍ·À½øÆäÖÐÒ»¸ösplitµÄMap¹ý³Ì£¬¼ÙÉèÊÇsplit1µÄMap1¹ý³Ì¡£
Split1ÓкöàÐÐÊý¾Ý£¬ÕûÌ司ÁËMapÈÎÎñÈ¥²Ù×÷¡£ÄÇôMapÈÎÎñÔõô²Ù×÷ÄØ£¿ÔÚ³ÌÐòÀïÃæÆäʵ¾ÍÊÇÒ»¸öMapperÀà¶øÒÑ¡£Òò´ËÕæÕýʵÏÖ²Ù×÷µÄÊÇMapperÀàµÄÆäÖеÄmap·½·¨À´²Ù×÷£¬map·½·¨»á¶ÔÊäÈëÎļþ½øÐвÙ×÷¡£ÄÇôÎÊÌâÀ´ÁË£¬map·½·¨µÄÊäÈëkeyºÍvalueÊÇÊ²Ã´ÄØ£¬ÊÇsplit1µÄËùÓÐÊý¾Ý»¹ÊÇijһÐÐÊý¾Ý¡£´ð°¸ÊÇ£ºÄ³Ò»ÐÐÊý¾Ý¡£ÄÇÊÇÔõôÔõô´¦ÀíÍê³ÉÄÇô¶àÐÐÊý¾ÝµÄ¡£´ð°¸ÊÇ£ºÔËÐжà´Îmap·½·¨¡£
Òò´Ë£¬×ܽáһϾÍÊÇ£ºsplit1ÓкܶàÐÐÊý¾Ý£¬map1ÈÎÎñÈ¥´¦Àí£¬¶ÔÓÚÿһÐÐÊý¾Ý£¬ÔËÐÐÒ»´Îmap·½·¨¡£
¼ÙÈçsplit1ÓÐÈýÐУºµÚÒ»ÐУºhello world µÚ¶þÐУºhello hadoop µÚÈýÐУºhello
hadoop¡£
¾¹ýMap1ÈÎÎñÔËÐÐÈý´Îmap·½·¨£¬
µÚÒ»´Îmap·½·¨µÄ£º
ÊäÈëµÄkeyΪ1£¬valueΪ£ºhello world£¨ÆäÖÐkeyµÄÖµÊÇÎÒϹ±àµÄ£¬valueÖµÊǶԵģ©¡£ÔËÐÐmap·½·¨ÀïÃæµÄ´úÂëºó
Êä³öΪ£ºµÚÒ»ÐУºhello 1£¬µÚ¶þÐУºworld 1
µÚ¶þ´ÎÔËÐÐmap·½·¨µÄ
ÊäÈëµÄkeyΪ12£¬valueΪ£ºhello hadoop£¬ÔËÐÐmap·½·¨ºó£¬
Êä³öΪ£ºµÚÒ»ÐУºhello 1,£¬µÚ¶þÐУºhadoop 1
µÚÈý´ÎÔËÐÐmap·½·¨
ÊäÈëµÄkeyΪ23£¬valueΪ£ºhello hadoop£¬ÔËÐÐmap·½·¨ºó£¬
Êä³öΪ£ºµÚÒ»ÐУºhello 1£¬hadoop 1
×îÖÕ£¬split1£¬¾¹ýÒ»´ÎMap1ÈÎÎñµÄºÃ¶à´Îmap·½·¨ÔËÐкó£¬×îÖÕÊä³ö½á¹û¿ÉÄÜÈçÏ£º
hello 1 world 1 hello 1 hadoop 1 hello 1 hadoop 1 |
×îÖÕ£¬5¸ösplit1~5ºÍ5¸ömap1~5Êä³öÁË5·Ý½á¹û£¬·Ö±ð´æÔÚÁ˲»Í¬µÄ½ÚµãÉÏ£¬ÒÔÖмäÎļþ´æÔڵģ¬¿ÉÄܲ¢²»ÊÇÖªµÀËüÃÇÔÚÄÄÀï¡£
½ÓÏÂÀ´£¬¾Í¸Ã½øÐÐReduceµÄ¹é²¢²Ù×÷£¬×îÖÕͳ¼Æ³öÀ´½á¹û£¬¿ÉÊÇÔÚReduce֮ǰ£¬MapÖ®ºó£¬»¹×öÁ˺ܶàÊÂÇ飬ÏÂÆªÔÙд°É£¬ÕâÆªÄÚÈÝÌ«³¤ÁË¡£
3.Combiner²Ù×÷
Ç°Ãæ½²ÍêMap²Ù×÷£¬×ܽáһϾÍÊÇ£ºÒ»¸ö´óÎļþ£¬·Ö³Ésplit1~5£¬¶ÔÓ¦ÓÚMap1~5£¬Ã¿Ò»¸öMap´¦ÀíÒ»¸ösplit£¬Ã¿Ò»¸ösplitµÄÿһÐУ¬»áÓÃÿһ¸öMapµÄmap·½·¨È¥´¦Àí£¬¾¹ýÉÏÃæ²Ù×÷£¬×îÖÕÊä³öÁË5¸öÖмä½á¹û¡£
¶ÔÓÚÕâ5¸öÖмä½á¹ûµÄÿһ¸öÀ´Ëµ£¬¶¼ÓкܶàÐУ¬Ã¿Ò»ÐÐÊÇkey value¸ñʽµÄ£¬Èçhello¡¡¡¡1£¬ÕâÑù×Ó£¬ÔÚ´«¸øReducer֮ǰ£¬ÎªÁ˼õÉÙ´«ÊäµÄÊý¾ÝÁ¿£¬¿ÉÒÔÔö¼ÓÒ»¸öCombiner¹ý³Ì£¬°Ñÿ¸öÖмä½á¹û½øÐл¯¼ò¡£ÒòΪÿ¸öÖмä½á¹û¿ÉÄÜÓÐÏàͬµÄ¼üÖµµÄÐУ¬È磺hello
1£¬hello 1£¬Í¨¹ýcombiner£¬¾Í¿ÉÒԺϲ¢³ÉÒ»ÐУºhello 2.
ÇмǣºCombinerÊÇMapperÈÎÎñµÄÒ»²¿·Ö£¬½ôËæmap·½·¨Ö®ºó¡£¿´ÆðÀ´ÀàËÆReduceµÄ²Ù×÷¡£
Ö®ºó£¬¾Í¿ÉÒÔ°ÑCombinerµÄÊä³ö´«ÈëReducer£¬¶ø²»ÊÇMapµÄÊä³ö´«ÈëReducer¡£CombinerÐèÒª×Ô¼ºÖ¸¶¨£¬µ±È»Ò²¿ÉÒÔ²»Ð´¡£
4.Reducer²Ù×÷
Reduce²Ù×÷·Ö³ÉÁËÈý¸ö¹ý³Ì
£¨1£©Shuffle
Ç°ÃæµÄMap»òÕßCombinerµÄÊä³ö£¬Ò»¹²ÓÐÓÐ5·ÝÖмä½á¹û£¬ÆäÖеÄÿһ·Ý½á¹û£¬°´ÕÕKeyÖµ¿ÉÒԷֳɣ¨Ô¤Ïȶ¨ÒåµÄR·Ý£©£¬ÓÉR¸öReduceÀ´²Ù×÷£¨Í¨¹ýPartitioner½Ó¿ÚÍê³É£©¡£Òò´ËR¸öReduceÐèÒªÏò5¸öÖмä½á¹û¶¼È¡Ò»¶ÎÊý¾Ý£¬5¸öÖмä½á¹ûµÄÆäÖÐÿһ½á¹ûÊÇÓÉR¸öReduce²Ù×÷µÄ¡£
¼òµ¥À´Ëµ£º¶ÔÓÚÆäÖÐijһ¸ö¸öReduce1À´Ëµ£¬·Ö±ð´ÓMap1~Map5ÀïÃæ°ÑÐèÒªµÄÄÇÒ»·ÝcopyÖÁ±¾µØ£¬È»ºóÔٺϲ¢Mergeһϣ¬¹©SortʹÓá£
£¨2£©Sort
¶ÔÓÚÿһ¸öReduceÀ´Ëµ£¬½øÀ´µÄÊý¾ÝΪ5¸öÖмä½á¹ûµÄÖеÄÒ»¶Î£¬¼´ShuffleµÄ½á¹û£¬ÀïÃæ¿ÉÄÜÓÐÖØ¸´µÄkey£¬Òò´Ë×÷ΪReduceÊäÈë֮ǰ£¬»áÓÐÒ»¸ösort²Ù×÷£¬°ÑÏàͬKeyµÄÕûºÏһϣ¬ÀýÈç<hello£¬1>,<hello,1>ÕûºÏ³É<hello,(1,1)>£¬×÷ΪReduceµÄÊäÈ룬ËùÒÔReduceµÄÊäÈëµÄvalueÒ»°ãÊÇIterableµÄ¡£
£¨3£©Reduce
ÕâÀïÊÇÎÒÃDZàд³ÌÐòµÄµØ·½ÁË£¬Ò»¹²R¸öReduce£¬¾ÍÄܲúÉúR¸öÖмä½á¹ûÁË¡£
×¢Ò⣺shuffle¡¢sort¡¢ReduceÊÇÔÚReduce½ÚµãÍê³ÉµÄ£¬¶ø²»ÊÇÔÚMap½ÚµãÍê³É£¬ÓÐЩÊé¼®ÉÏдµÄÊÇ´íµÄ£¡
†ª†ªàÂྐྵȻ½²ÁËÕâô¶à£¬ÉÏÒ»¸öÎÒ×Ô¼ºËæÊÖ»µÄͼ£¬´ÕºÏ¿´°É¡£
|