Ëæ×ÅÔÆ¼ÆË㣬ÒÔ¼°ÃæÏò´ó¹æÄ£º£Á¿Êý¾Ý·ÖÎö´¦Àí¼¼Êõ£¬ÒÔ¼°¶àºË¼ÆËãÆ½Ì¨µÄÆÕ¼°»¯Óë½øÒ»²½·¢Õ¹£¬Ê¹µÃ²¢ÐУ¨Parallel£©»òÕß²¢·¢£¨Concurrent£©³ÌÐòÉè¼Æ£¨ÕâÀï²»·Á³ÆËüÃÇΪ²¢Ðл¯³ÌÐòÉè¼Æ£©³ÉΪһÖÖ±à³Ì¼¼ÊõÖ÷Á÷¡£Æäʵ²¢ÐмÆËãµÄÈí¼þ¼¼ÊõÔçÒÑ´æÔÚÁ˼¸Ê®Ä꣬Ȼ¶øÆäÔÀ´Ö÷Òª·þÎñÓÚ¸ßÐÔÄܼÆËãÒ»ÀàµÄÓ¦Óã¬ËùÒÔ²¢Ðл¯±à³ÌÒ»Ö±Ò²¶¼ÎªÑô´º°×Ñ©µÄ¹â»·ÁýÕÖ¡£ÏÖÔÚ̸µ½·Ö²¼Ê½»ò¶àºË±à³Ì£¬ÌÖÂ۽϶àµÄÊǸ÷ÖÖÈí¼þ»òÕß²¢Ðбà³ÌÄ£Ð͵ÄʹÓã»¶ÔÓÚ³õѧÕß¶øÑÔÈ´ÈÔ¿ÉÄÜÄÑÒÔÑÆä¾¶¶øÈë¡£
Æäʵ£¬²¢Ðл¯µÄ³ÌÐòÉè¼ÆÊÇÓÐÕ¿Éѵġ£°´ÕÕËã·¨Éè¼ÆÓ뿪·¢Á÷³ÌµÄ˳Ðò£¬¿ÉÒ԰Ѳ¢Ðл¯³ÌÐòÉè¼Æ·ÖΪÒÔÏÂËĸö½×¶Î£º
1. ·Ö²¼Ê½¿ÉÐÐËã·¨£¨½â¾ö·½°¸£©µÄÃèÊöÓë·ÖÎö
2. ¹¤×÷·Ö½â£¨Decomposition£©¡ª¡ªÒÀÀµÐÔºÍͬ²½ÓëͨÐÅ¿ªÏú·ÖÎö
3. Ñ¡Ôñ±à³Ì£¨ÊµÏÖ£©Ä£ÐÍ£¬ÈçMapReduce¡¢MPIµÈ
4. ÐÔÄܼì²é¼°ÓÅ»¯
ÔÚÉè¼ÆµÄ³õʼ½×¶Î£¬¿ª·¢ÕßÓ¦µ±Õë¶ÔÒª½â¾öµÄÎÊÌâÏÈÕÒµ½Ò»¸ö¿ÉÐеĽâ¾ö·½°¸»òÕßËã·¨¡£±ÈÈ磬ÅÅÐòÎÊÌâµÄ½â¾ö·½°¸ÓÐÆøÅÝÅÅÐò£¬¿ìËÙÅÅÐò£¬¶þ²æÊ÷ÅÅÐòµÈÒÑÖª¿ÉÐеķ½·¨¿ÉÒÔ×÷Ϊ²¢Ðл¯µÄ»ù´¡Ëã·¨¡£¶øÔÚ½øÐоßÌåµÄ²¢Ðл¯Éè¼ÆÖ®Ç°£¬ÓÐÒ»¸öºÜÖØÒªµÄ·ÖÎö£¨»òÕ߯À¹À£©Òª×ö£¬ÄǾÍÊDz¢Ðл¯µÄ±ØÒªÐÔ·ÖÎö£»¼´£¬Ó¦¸Ã¹À¼ÆÒ»ÏÂÄ¿±êÎÊÌâµÄ¼ÆËãÁ¿¡£Èç¹ûÐèÒª½â¾öµÄÎÊÌâ¼ÆËãÁ¿²¢²»ÊǺܴ󣬱ÈÈçÖ»ÐèÒª¶Ô30¸öÕûÊý½øÐÐÅÅÐò£¬¼´Ê¹²ÉÓô«Í³´®ÐгÌÐòÒ²²»»áÕ¼ÓÃÌ«¶àʱ¼ä£¬ÄÇô¾Í¿ÉÄÜûÓÐΪ֮Éè¼Æ²¢Ðл¯³ÌÐòµÄ±ØÒª£¬ÒòΪ²¢Ðл¯Ò²ÊÇÒª¸¶³öÆäËü¼ÆËãµÄ´ú¼ÛµÄ¡£±ÈÈç˵ÉçÇø³£¼ûµ½ÓÐÈË×Éѯ£¬ÎªÊ²Ã´hadoopÀ´Ö´ÐÐwordcount³ÌÐò£¬ÕâôÂý£¿ÆäÖ÷ÒªÔÒòÔÚÓÚÔÚ½ÚµãÊýÄ¿ÉÙ£¬Êý¾ÝÁ¿Ð¡µÄ¼¯ÈºÉÏ£¬²¢ÐеÄËÙ¶ÈԶԶСÓÚ´®ÐС£Ö»ÓÐÔÚº£Á¿Êý¾ÝÓë´ó¹æÄ£¼¯ÈºÖУ¬MapReduceµÄÓŵã²ÅÄÜÏÔÏÖ³öÀ´¡£
ÁíÍ⣬»ù´¡Ëã·¨µÄÑ¡ÔñÒ²ºÜÓн²¾¿¡£ÓÐЩËã·¨±¾Éí¾Í²»¾ß±¸Ì«¶àµÄ²¢ÐÐÐÔ£¬±ÈÈçͼÂÛËã·¨ÖÐ×îСÉú³ÉÊ÷/Minimum Spanning Tree£¨MST£©µÄKruskalËã·¨£»¶øÓÐЩËã·¨Ôò¾ßÓкܺõĿÉÀ©Õ¹ÐÔ£¨Scalability£©£¬±ÈÈçMSTµÄBoruvkaËã·¨ £¨¹ØÓÚMSTËã·¨²¢Ðл¯µÄÀý×ӿɲμûISNѧÊõÉçÇø¿Î¼þ£©¡£ÎªÈ·¶¨Ëã·¨µÄ²¢ÐÐÐÔ£¬Ò»°ãÐèÒª½èÖúһЩÀíÂۺ͹¤¾ßµÄ°ïÖú¡£Amdal's lawÊÇ´ó¶àÊýÉè¼ÆÕßËù²ÉÓõĹÀ¼Æ²¢Ðл¯¼ÓËÙ±ÈÉÏÏ޵͍Àí£»¶øGustafson's lawÔòÊÇ·ÖÎö²¢ÐгÌÐò¿ÉÀ©Õ¹ÐÔµÄÓÐÁ¦ÀíÂÛÖ¸µ¼¡£¶øÎªÁËÄܹ»Ê¹ÓÃÕâЩ¶¨Àí¸ø³öÖ¸µ¼£¬»¹ÐèҪһЩÈí¼þ¹¤¾ß£¨Profiling Tools£©µÄ¸¨Öú£¬´Ó¶øÈ·¶¨ÀíÂÛËùÐèµÄһЩ²ÎÊý£¨Èç´®ÐгÌÐòµÄ²¢ÐÐÁ¿p£©¡£ÌṩÕâÒ»ÖÖ¹¦Äܵij£ÓõŤ¾ßÓÐIntelÐÔÄÜ·ÖÎöÆ÷Vtune£¬WindowsÀïÃæµÄPerfMonµÈ¡£¶ÔÓÚÀíÂÛºÍÈí¼þ¹¤¾ßµÄʹÓÿÉÒÔ²ÎÕÕѧÊõÉçÇøµÄ¿Î¼þ¡£»ù´¡Ëã·¨µÄÈ·¶¨ÐèÒª¿ª·¢Õß½áºÏÏÂÒ»²½½øÐÐ×ۺϿ¼ÂÇ£¬·´¸´³¢ÊÔ¼¸´Î¡£
µ±ºòÑ¡µÄ»ù´¡Ë㷨ȷ¶¨ºó£¬¿ª·¢ÈËÔ±¾ÍÐèÒª½øÐÐÒ»¸ö²¢Ðл¯±à³ÌÖзdz£ÖØÒªµÄ²½Ö衪¡ª¹¤×÷·Ö½â£¨Decomposition£©¡£·Ö½âÊǶԻù´¡Ëã·¨·ÖÎö£¬½«Ö®·Ö½âΪÈô¸ÉÏà¶Ô¶ÀÁ¢µÄ²¿·Ö£¨»òÕß²Ù×÷£©£»½ø¶ø¿ÉÒÔͨ¹ýºóÃæÒ»²½£¨Ñ¡ÔñÊʵ±±à³ÌÄ£ÐÍ£©°ÑÕâЩÏà¶Ô¶ÀÁ¢µÄ²¿·Ö·ÖÅäµ½¶à¸öÖ´ÐУ¨´¦Àí£©µ¥ÔªÖ´ÐС£¹¤×÷·Ö½âµÄÊÖ¶ÎÒ»°ã¿ÉÒÔ·ÖΪÈÎÎñ·Ö½â£¨Task Decomposition£©ºÍÊý¾Ý·Ö½â£¨Data Decomposition£©¡£ÈÎÎñ·Ö½â¾ÍÊǰÑÒ»¸öËã·¨°´ÕÕ²Ù×÷µÄÏà¹ØÐÔ£¨ÒÀÀµÐÔ£©·Ö½âΪÈô¸É¿ÉÒÔͬʱִÐеÄ×ÓÈÎÎñ£¬±ÈÈçÏÂͼÖеĺ¯Êýh£¬qºÍr»òÕßsÊÇ¿ÉÒÔ²¢Ðеġ£Í¨³£¼ÆËãÃܼ¯ÐÍÈÎÎñ£¬ÓÃÕâÖÖ·½·¨¡£

Êý¾Ý·Ö½âÔòÊǽ«Ò»¸ö±È½Ï´óµÄ´ý´¦ÀíµÄÊý¾Ý¼¯£¬ÈçÊý×é·Ö¸îΪÈô¸É×Ó¼¯£¬´Ó¶ø¿ÉÒԵIJ»Í¬²¿·ÖµÄ³ÉԱʵʩͬʱµÄÔËËã»ò²Ù×÷¡£Í¨³£Êý¾ÝÃܼ¯ÐÍÈÎÎñ£¬ÓÃÕâÖÖ·½·¨¡£
´ËÍ⻹ÓÐÒ»ÖÖ³£ÓõŤ×÷·Ö½â·½·¨ÊÇÁ÷Ë®Ïߣ¨Pipeline£©·½Ê½£¬Æä»ù±¾ÔÀíÊÇ·ÂÕÕÉú²úÁ÷Ë®ÏߵIJÙ×÷£¬°ÑÒ»¸ö´óÈÎÎñ·Ö½âΪÈô¸É½ôÃÜÏàÁ¬µÄ½×¶Î£¬´Ó¶øÌá¸ßÿ¸ö½×¶Î¹¤×÷µ¥ÔªµÄÔËÐÐЧÂÊ¡£Ñ§ÊõÉçÇøµÄÔÚÏ߿μþÓжԹ¤×÷·Ö½âµÄ¾ßÌå½²½â£¬ÕâÀï¾Í²»ÔÙ׸Êö¡£¶ÔÓڷֽⷽ·¨µÄÓ¦Óã¬ÐèÒª¿ª·¢Õß½øÐдóÁ¿µÄ·ÖÎöʵ¼ù£¬»ýÀÛ¾Ñ飬Ìá¸ß·Ö½âµÄÕýÈ·ÐÔºÍЧÂÊ£»ÁíÒ»·½Ã棬Ҳ»¹ÊÇÓÐһЩͨÓõľÑé¿ÉÒÔ½è¼ø¡£±ÈÈ磬Ëã·¨ÖÐÓÐÑ»·ÌåµÄ£¬Ò»°ãÒâζ×Å¿ÉÄÜ¿ÉÒÔ²ÉÓÃÊý¾Ý·Ö½â£¬½«²»Í¬µÄµü´ú£¨Èç¹ûËüÃÇÖ®¼äûʲôÒÀÀµÐԵϰ£©»®·ÖΪ²»Í¬µÄÖ´ÐÐ×Ó¼¯£¬·ÖÅ䏸²»Í¬µÄÏ̻߳òÕß½ø³ÌÖ´ÐУ»ÀàËÆµÄ£¬¹ý³ÌºÍº¯ÊýÊdzÌÐòÔ±°ÑͨÓòÙ×÷´ò°ü£¬´Ó¶ø±ãÓÚÔĶÁºÍά»¤ÓÐЧÊֶΣ¬ÕâÒ²¾Í°µÊ¾Á˺¯ÊýÌåÒ²ÊǺܺõÄÊý¾Ý·Ö½âµÄºòÑ¡ÈË£»¶øÔÚýÌåÁ÷´¦ÀíÕâÀàÓ¦ÓÃÖУ¬Á÷Ë®ÏßÊdz£ÓõķֽâÊֶΡ£ÓÐÐĵĶÁÕß¿ÉÄÜ×¢Òâµ½ÎÒÃÇÇ°Ãæ½éÉֽܷⷽ·¨ÊǶà´ÎÌáµ½Ïà¹ØÐÔ»òÕßÒÀÀµÐÔ£¨Dependence£©¡£ÕâÊÇÔÚ½øÐй¤×÷·Ö½âÊ±ÒªÃæ¶ÔµÄÒ»¸öÖØÒªÖ¸±ê£¬ÒòΪ·Ö½â²¿·ÖÖ®¼äµÄÒÀÀµÐÔÖ±½ÓÓ°ÏìËüÃǵĿɲ¢ÐÐÐÔ¡£±ÈÈçÏÂͼÖУ¬ÎÒÃÇʹÓÃÒÀÀµÐÔͼ£¨Dependence Graph£©½øÐзÖÎö£¬¾Í»á·¢ÏÖ¸÷¸öÑ»·µü´úÖжÔÓÚ±äÁ¿a[i]¾ßÓжÁдÒÀÀµ£¬ÄÇôÕâ¸öÑ»·ÌåÊDz»Äܱ»Í¨¹ýÊý¾Ý·Ö½â¶ø²¢Ðл¯µÄ£¬´Ó¶øÕâÖַֽⷽ°¸ÊDz»¿ÉÐе썵±È»Ò²ÓÐһЩÒÀÀµÐÔͨ¹ýÓÅ»¯ÊֶοÉÒÔÈ¥³ý£¬ÓÉÓÚÆª·ùµÄÔµ¹Ê£¬¹ØÓÚÒÀÀµÐÔ·ÖÎöÇë²ÎÕÕѧÊõÉçÇøµÄ¿Î¼þ£©¡£
Ó¦µ±Ö¸³öµÄÊÇ£¬´ó¶àÊýµÄÓ¦Óã¨Ëã·¨£©ÊDz»¿ÉÄÜ·Ö½âΪÍêÈ«¶ÀÁ¢µÄ²¿·Ö£¬ÕâЩ²¿·Ö¶àÉÙ¶¼ÐèÒªÒ»¶¨µÄÒÀÀµºÍе÷À´Íê³É¹¤×÷¡£·Ö½âËùÒª´ïµ½µÄÄ¿µÄÓ¦¸ÃÊǰѻù´¡Ëã·¨·Ö½âΪÏ໥ÒÀÀµÐÔ×îСµÄÈô¸É²¿·Ö£¬ÒòΪ¸÷¸ö²¿·ÖµÄе÷ºÍͬ²½£¨Synchronizations£©ÓëͨÐÅ£¨Communications£©ÊÇÐèÒª¶îÍ⿪ÏúµÄ£¬ÕâÊDz¢Ðл¯ËùÒª¸¶³öµÄ¿ªÏú¡£¿ª·¢Õß½øÐв¢Ðл¯±à³ÌÓ¦µ±ÊÇʹ²¢Ðл¯µÄÊÕÒæ´óÓÚ¿ªÏú£¨ÒªÊ¹ÓÃÉÌÈ˵ÄÕÜѧ£©¡£¹¤×÷·Ö½âµÄÒÀÀµÐÔ·ÖÎö¿ÉÒÔ°ïÖúÎÒÃÇÈ·¶¨×ÊÔ´£¨Èç±äÁ¿£¬Êý¾Ý½á¹¹£©µÄÐÔÖÊ£¬±ÈÈçÊ**²Ïí»¹ÊÇ˽Óеȣ¬´Ó¶øÈ·¶¨Í¬²½ºÍͨÐŵĶÔÏó£¬ÒÔ¼°ÊÊÓÃÊֶΣ¨Èç²ÉÓÃÐźÅÁ¿»¹ÊÇ»¥³âµÈ£©¡£
µ±Íê³ÉÁË»ù´¡Ëã·¨µÄ¹¤×÷·Ö½âºó£¬Ò»¸ö²¢Ðл¯µÄËã·¨£¨½â¾ö·½°¸£©Ò²¾Í¾ß±¸³ûÐÎÁË¡£Õâʱºò£¬Éè¼ÆÕßҪѡÓÃÒ»ÖÖ£¨¶ÔÓÚÓоÑéÕßÒ²¿ÉÒÔ²ÉÓöàÖÖ»ìºÏ£©±à³ÌÄ£ÐÍÀ´ÊµÏÖ²¢Ðл¯µÄËã·¨¡£ÓÉÓÚ¹ØÓÚÕâ·½ÃæµÄ½éÉÜÒѾº¹Å£³ä¶°£¬ËùÒÔÕâÀï²»¹ý¶àÖØ¸´£¬Ö»ÊÇÉÔ΢·ÖÏí×Ô¼ºµÄ¾Ñé¡£Ò»°ã¶ÔÓÚ³õѧÕߺÍÏ£Íû¿ìËÙ²¢Ðл¯µÄ¿ª·¢Õߣ¬¿ÉÒÔÊÊÓÃÀàËÆOpenMPÒ»ÀàÒþʽÏ̻߳¯ÊµÏÖ£¨Implicit Threading£©£»¶ÔÓÚÓÐÓоÑéÕß»òÕßÓ²ºËÅÉ£¬¿ÉÒÔÊÊÓÃWindowsµÄWin32 API£¬P-threads API»òÕßÊÊÓÃÓÚ·Ö²¼Ê½Æ½Ì¨µÄMPI£¬ÕâÀàÏÔÐÔ£¨Explicit Threading£©½øÐÐÏà¶Ôµ×²ãµÄ£¨ÈçÏ̴߳´½¨¡¢Ïú»ÙÒѾͬ²½£©¿ØÖÆ£»Èç¹ûÏëʹÓüÈÌṩ¸ß²ã£¨ÒþÐÔ£©²¢Ðл¯£¬ÓÖÌṩµÍ²ã£¨ÏÔÐÔ£©²¢Ðл¯Êֶεıà³ÌÄ£ÐÍ£¬JavaºÍIntelµÄThreading Building Blocks£¨TBB£©»áÊǺܺõÄÑ¡Ôñ¡£Èç¹ûÔÚÔÆÖнøÐÐÉè¼Æ£¬²ÉÓÿªÔ´µÄHadoop£¬À´½øÐÐMapReduce±à³Ì£¬Ò²ÊǸö²»´íµÄÖ÷Òâ¡£Èç¹ûÐèÒªÊý¾Ý¿âÀ´¹ÜÀí£¬¿ÉÒÔʹÓÃHive/PigµÈ¡£Èç¹ûʵʱ´¦Àí£¬¿ÉÒÔʹÓÃStorm£¬µ±È»·Ö²¼Ê½Êý¾Ý´¦ÀíÄ£ÐÍÓ빤¾ß²»Ö»ÒÔÉϼ¸ÖÖ£¬´ó¼Ò¿ÉÒԲ鿴һÏÂÏêϸÎÄÏ××ÊÁÏ¡£
¾¹ýÇ°ÃæÈý²½£¬¿ª·¢ÕßÓ¦¸ÃÒѾÓÐÁËÒ»¸öÄܹ»¹¤×÷µÄ²¢Ðл¯³ÌÐò¡£´Ëʱ£¬Ó¦¸ÃÎÊ×Ô¼ºµÄÎÊÌâÊÇ£¬²¢Ðл¯µÄЧ¹û×ã¹»Âð£¿Äܹ»Âú×ãÐèÇóÂð£¿Èç¹û´ð°¸ÊÇ·ñ¶¨µÄ£¬¾ÍÐèÒªÎÊ×Ô¼º»¹ÓÐ×ã¹»µÄ×ÊÔ´£¨ÈËÁ¦£¬Ê±¼ä£©À´×÷½øÒ»²½µÄÓÅ»¯Âð£¿Èç¹û´ð°¸Êǿ϶¨µÄ£¬ÄÇô¿ÉÒÔÖØ¸´Ç°ÃæÈý¸ö²½Ö裬¸ü½øÒ»²½µØ·¢¾ò²¢ÐÐÐÔ£¬½µµÍͬ²½ÓëͨÐŵĿªÏú£¬´Ó¶ø»ñµÃÐÔÄܵÄÌáÉý¡£ ÁíÍâÔÆ¼ÆËãÖеÄÊý¾ÝÖÐÐļ¼Êõ£¬ÔÆ´æ´¢¼¼Êõ£¬ÔÆÊý¾Ý¹ÜÀí¼¼ÊõÈýÕßÊÇͳһµÄÕûÌ壬´ó¹æÄ£Êý¾Ý·ÖÎö£¬»¹ÐèÒª´Ó¸÷²ã¼Ü¹¹½øÐÐÑо¿ÓëºÏÀíÉè¼Æ²ÅÐС£
²Î¿¼×Ô£¬http://www.cnblogs.com/me115/archive/2011/01/24/1943189.html
ÃÎÏè¶ùÔÚÔÎÄ»ù´¡ÉÏ£¬¸ù¾ÝÔÆ¼ÆËã½üÄê½øÕ¹£¬½øÐÐÁËÊÊÁ¿ÐÞ¸ÄÓë²¹³ä¡£