ΪÁËÂú×ãÍÚ¾ò·ÖÎöÓë½»»¥Ê½ÊµÊ±²éѯµÄ¼ÆËãÐèÇó£¬ÌÚѶ´óÊý¾ÝʹÓÃÁËSparkƽ̨À´Ö§³ÖÍÚ¾ò·ÖÎöÀà¼ÆËã¡¢½»»¥Ê½ÊµÊ±²éѯ¼ÆËãÒÔ¼°ÔÊÐíÎó²î·¶Î§µÄ¿ìËÙ²éѯ¼ÆË㣬ĿǰÌÚѶ´óÊý¾ÝÓµÓг¬¹ý200̨µÄSpark¼¯Èº£¬²¢¶ÀÁ¢Î¬»¤SparkºÍShark·ÖÖ§¡£Spark¼¯ÈºÒÑÎȶ¨ÔËÐÐ2Ä꣬»ýÀÛÁË´óÁ¿µÄ°¸ÀýºÍÔËÓª¾ÑéÄÜÁ¦£¬ÁíÍâ¶à¸öÒµÎñµÄ´óÊý¾Ý²éѯÓë·ÖÎöÓ¦Óã¬ÒÑÔÚÂ½ÐøÉÏÏß²¢Îȶ¨ÔËÐС£ÔÚSQL²éѯÐÔÄÜ·½ÃæÆÕ±é±ÈMapReduce¸ß³ö2±¶ÒÔÉÏ£¬ÀûÓÃÄÚ´æ¼ÆËãºÍÄÚ´æ±íµÄÌØÐÔ£¬ÐÔÄÜÖÁÉÙÔÚ10±¶ÒÔÉÏ¡£ÔÚµü´ú¼ÆËãÓëÍÚ¾ò·ÖÎö·½Ã棬¾«×¼ÍƼö½«Ð¡Ê±ºÍÌì¼¶±ðµÄÄ£ÐÍѵÁ·×ª±äΪSparkµÄ·ÖÖÓ¼¶±ðµÄѵÁ·£¬Í¬Ê±¼ò½àµÄ±à³Ì½Ó¿ÚʹµÃË㷨ʵÏÖ±ÈMRÔÚʱ¼ä³É±¾ºÍ´úÂëÁ¿Éϸ߳öÐí¶à¡£
Spark VS MapReduce
¾¡¹ÜMapReduceÊÊÓôó¶àÊýÅú´¦Àí¹¤×÷£¬²¢ÇÒÔÚ´óÊý¾Ýʱ´ú³ÉΪÆóÒµ´óÊý¾Ý´¦ÀíµÄÊ×Ñ¡¼¼Êõ£¬µ«ÓÉÓÚÒÔϼ¸¸öÏÞÖÆ£¬Ëü¶ÔһЩ³¡¾°²¢²»ÊÇ×îÓÅÑ¡Ôñ£º
1.ȱÉÙ¶Ôµü´ú¼ÆËãÒÔ¼°DAGÔËËãµÄÖ§³Ö
2.Shuffle¹ý³Ì¶à´ÎÅÅÐòºÍÂ䵨£¬MRÖ®¼äµÄÊý¾ÝÐèÒªÂäHdfsÎļþϵͳ
SparkÔÚºÜ¶à·½Ãæ¶¼ÃÖ²¹ÁËMapReduceµÄ²»×㣬±ÈMapReduceµÄͨÓÃÐÔ¸üºÃ£¬µü´úÔËËãЧÂʸü¸ß£¬×÷ÒµÑÓ³Ù¸üµÍ£¬ËüµÄÖ÷ÒªÓÅÊÆ°üÀ¨£º
1.ÌṩÁËÒ»Ì×Ö§³ÖDAGͼµÄ·Ö²¼Ê½²¢ÐмÆËãµÄ±à³Ì¿ò¼Ü£¬¼õÉÙ¶à´Î¼ÆËãÖ®¼äÖмä½á¹ûдµ½HdfsµÄ¿ªÏú
2.ÌṩCache»úÖÆÀ´Ö§³ÖÐèÒª·´¸´µü´ú¼ÆËã»òÕß¶à´ÎÊý¾Ý¹²Ïí£¬¼õÉÙÊý¾Ý¶ÁÈ¡µÄIO¿ªÏú
3.ʹÓöàÏ̳߳ØÄ£ÐÍÀ´¼õÉÙtaskÆô¶¯¿ªÉÔ£¬shuffle¹ý³ÌÖбÜÃâ²»±ØÒªµÄsort²Ù×÷ÒÔ¼°¼õÉÙ´ÅÅÌIO²Ù×÷
4.¹ã·ºµÄÊý¾Ý¼¯²Ù×÷ÀàÐÍ
MapReduceÓÉÓÚÆäÉè¼ÆÉϵÄÔ¼ÊøÖ»Êʺϴ¦ÀíÀëÏß¼ÆË㣬ÔÚʵʱ²éѯºÍµü´ú¼ÆËãÉÏÈÔÓнϴóµÄ²»×㣬¶øËæ×ÅÒµÎñµÄ·¢Õ¹£¬Òµ½ç¶Ôʵʱ²éѯºÍµü´ú·ÖÎöÓиü¶àµÄÐèÇ󣬵¥´¿ÒÀ¿¿MapReduce¿ò¼ÜÒѾ²»ÄÜÂú×ãÒµÎñµÄÐèÇóÁË¡£SparkÓÉÓÚÆä¿ÉÉìËõ¡¢»ùÓÚÄÚ´æ¼ÆËãµÈÌØµã£¬ÇÒ¿ÉÒÔÖ±½Ó¶ÁдHadoopÉÏÈκθñʽµÄÊý¾Ý£¬³ÉΪÂú×ãÒµÎñÐèÇóµÄ×î¼ÑºòÑ¡Õß¡£
Ó¦ÓÃSparkµÄ³É¹¦°¸Àý
Ŀǰ´óÊý¾ÝÔÚ»¥ÁªÍø¹«Ë¾Ö÷ÒªÓ¦ÓÃÔÚ¹ã¸æ¡¢±¨±í¡¢ÍƼöϵͳµÈÒµÎñÉÏ¡£ÔÚ¹ã¸æÒµÎñ·½ÃæÐèÒª´óÊý¾Ý×öÓ¦Ó÷ÖÎö¡¢Ð§¹û·ÖÎö¡¢¶¨ÏòÓÅ»¯µÈ£¬ÔÚÍÆ¼öϵͳ·½ÃæÔòÐèÒª´óÊý¾ÝÓÅ»¯Ïà¹ØÅÅÃû¡¢¸öÐÔ»¯ÍƼöÒÔ¼°Èȵãµã»÷·ÖÎöµÈ¡£ÕâЩӦÓó¡¾°µÄÆÕ±éÌØµãÊǼÆËãÁ¿´ó¡¢Ð§ÂÊÒªÇó¸ß¡£SparkǡǡÂú×ãÁËÕâЩҪÇ󣬸ÃÏîĿһ¾ÍƳö±ãÊܵ½¿ªÔ´ÉçÇøµÄ¹ã·º¹Ø×¢ºÍºÃÆÀ¡£²¢ÔÚ½üÁ½ÄêÄÚ·¢Õ¹³ÉΪ´óÊý¾Ý´¦ÀíÁìÓò×îÖËÊÖ¿ÉÈȵĿªÔ´ÏîÄ¿¡£±¾Õ½«ÁоٹúÄÚÍâÓ¦ÓÃSparkµÄ³É¹¦°¸Àý¡£
1.ÌÚѶ¡£¹ãµãͨÊÇ×îÔçʹÓÃSparkµÄÓ¦ÓÃÖ®Ò»¡£ÌÚѶ´óÊý¾Ý¾«×¼ÍƼö½èÖúSpark¿ìËÙµü´úµÄÓÅÊÆ£¬Î§ÈÆ¡°Êý¾Ý+Ëã·¨+ϵͳ¡±ÕâÌ×¼¼Êõ·½°¸£¬ÊµÏÖÁËÔÚ¡°Êý¾Ýʵʱ²É¼¯¡¢Ë㷨ʵʱѵÁ·¡¢ÏµÍ³ÊµÊ±Ô¤²â¡±µÄÈ«Á÷³Ìʵʱ²¢ÐиßάËã·¨£¬×îÖճɹ¦Ó¦ÓÃÓÚ¹ãµãͨpCTRͶ·ÅϵͳÉÏ£¬Ö§³ÖÿÌìÉϰÙÒÚµÄÇëÇóÁ¿¡£»ùÓÚÈÕÖ¾Êý¾ÝµÄ¿ìËÙ²éѯϵͳҵÎñ¹¹½¨ÓÚSparkÖ®ÉϵÄShark£¬ÀûÓÃÆä¿ìËÙ²éѯÒÔ¼°ÄÚ´æ±íµÈÓÅÊÆ£¬³Ðµ£ÁËÈÕÖ¾Êý¾ÝµÄ¼´Ï¯²éѯ¹¤×÷¡£ÔÚÐÔÄÜ·½Ã棬ÆÕ±é±ÈHive¸ß2-10±¶£¬Èç¹ûʹÓÃÄÚ´æ±íµÄ¹¦ÄÜ£¬ÐÔÄܽ«»á±ÈHive¿ì°Ù±¶¡£
2.Yahoo¡£Yahoo½«SparkÓÃÔÚAudience ExpansionÖеÄÓ¦Óá£Audience
ExpansionÊÇ¹ã¸æÖÐѰÕÒÄ¿±êÓû§µÄÒ»ÖÖ·½·¨£ºÊ×ÏÈ¹ã¸æÕßÌṩһЩ¹Û¿´ÁË¹ã¸æ²¢ÇÒ¹ºÂò²úÆ·µÄÑù±¾¿Í»§£¬¾Ý´Ë½øÐÐѧϰ£¬Ñ°ÕÒ¸ü¶à¿ÉÄÜת»¯µÄÓû§£¬¶ÔËûÃǶ¨Ïò¹ã¸æ¡£Yahoo²ÉÓõÄËã·¨ÊÇlogistic
regression¡£Í¬Ê±ÓÉÓÚÓÐЩSQL¸ºÔØÐèÒª¸ü¸ßµÄ·þÎñÖÊÁ¿£¬ÓÖ¼ÓÈëÁËרÃÅÅÜSharkµÄ´óÄڴ漯Ⱥ£¬ÓÃÓÚÈ¡´úÉÌÒµBI/OLAP¹¤¾ß£¬³Ðµ£±¨±í/ÒDZíÅ̺ͽ»»¥Ê½/¼´Ï¯²éѯ£¬Í¬Ê±Óë×ÀÃæBI¹¤¾ß¶Ô½Ó¡£Ä¿Ç°ÔÚYahoo²¿ÊðµÄSpark¼¯ÈºÓÐ112̨½Úµã£¬2TBÄÚ´æ¡£
3.ÌÔ±¦¡£°¢ÀïËÑË÷ºÍ¹ã¸æÒµÎñ£¬×î³õʹÓÃMahout»òÕß×Ô¼ºÐ´µÄMRÀ´½â¾ö¸´ÔӵĻúÆ÷ѧϰ£¬µ¼ÖÂЧÂʵͶøÇÒ´úÂë²»Ò×ά»¤¡£ÌÔ±¦¼¼ÊõÍŶÓʹÓÃÁËSparkÀ´½â¾ö¶à´Îµü´úµÄ»úÆ÷ѧϰËã·¨¡¢¸ß¼ÆË㸴ÔӶȵÄËã·¨µÈ¡£½«SparkÔËÓÃÓÚÌÔ±¦µÄÍÆ¼öÏà¹ØËã·¨ÉÏ,ͬʱ»¹ÀûÓÃGraphx½â¾öÁËÐí¶àÉú²úÎÊÌ⣬°üÀ¨ÒÔϼÆË㳡¾°£º»ùÓÚ¶È·Ö²¼µÄÖÐÊà½Úµã·¢ÏÖ¡¢»ùÓÚ×î´óÁ¬Í¨Í¼µÄÉçÇø·¢ÏÖ¡¢»ùÓÚÈý½ÇÐμÆÊýµÄ¹ØÏµºâÁ¿¡¢»ùÓÚËæ»úÓÎ×ßµÄÓû§ÊôÐÔ´«²¥µÈ¡£
4.ÓÅ¿áÍÁ¶¹¡£ÓÅ¿áÍÁ¶¹ÔÚʹÓÃHadoop¼¯ÈºµÄÍ»³öÎÊÌâÖ÷Òª°üÀ¨£ºµÚÒ»ÊÇÉÌÒµÖÇÄÜBI·½Ã棬·ÖÎöʦÌá½»ÈÎÎñÖ®ºóÐèÒªµÈ´ýºÜ¾Ã²ÅµÃµ½½á¹û£»µÚ¶þ¾ÍÊÇ´óÊý¾ÝÁ¿¼ÆË㣬±ÈÈç½øÐÐһЩģÄâ¹ã¸æÍ¶·Å֮ʱ£¬¼ÆËãÁ¿·Ç³£´óµÄͬʱ¶ÔЧÂÊÒªÇóÒ²±È½Ï¸ß£¬×îºó¾ÍÊÇ»úÆ÷ѧϰºÍͼ¼ÆËãµÄµü´úÔËËãÒ²ÊÇÐèÒªºÄ·Ñ´óÁ¿×ÊÔ´ÇÒËٶȺÜÂý¡£×îÖÕ·¢ÏÖÕâЩӦÓó¡¾°²¢²»ÊʺÏÔÚMapReduceÀïÃæÈ¥´¦Àí¡£Í¨¹ý¶Ô±È£¬·¢ÏÖSparkÐÔÄܱÈMapReduceÌáÉýºÜ¶à¡£Ê×ÏÈ£¬½»»¥²éѯÏìÓ¦¿ì£¬ÐÔÄܱÈHadoopÌá¸ßÈô¸É±¶£»Ä£Äâ¹ã¸æÍ¶·Å¼ÆËãЧÂʸߡ¢ÑÓ³ÙС£¨Í¬hadoop±ÈÑÓ³ÙÖÁÉÙ½µµÍÒ»¸öÊýÁ¿¼¶£©£»»úÆ÷ѧϰ¡¢Í¼¼ÆËãµÈµü´ú¼ÆË㣬´ó´ó¼õÉÙÁËÍøÂç´«Êä¡¢Êý¾ÝÂ䵨µÈ£¬¼«´óµÄÌá¸ßµÄ¼ÆËãÐÔÄÜ¡£Ä¿Ç°SparkÒѾ¹ã·ºÊ¹ÓÃÔÚÓÅ¿áÍÁ¶¹µÄÊÓÆµÍƼö£¨Í¼¼ÆË㣩¡¢¹ã¸æÒµÎñµÈ¡£
ÌÚѶ´óÊý¾ÝSparkµÄ¸Å¿ö
ÌÚѶ´óÊý¾Ý×ÛºÏÁ˶à¸öÒµÎñÏߵĸ÷ÖÖÐèÇóºÍÌØÐÔ£¬Ä¿Ç°ÕýÔÚ½øÐÐÒÔϹ¤×÷£º
1.¾¹ý¸ÄÔìºÍÓÅ»¯µÄSharkºÍSparkÎüÊÕÁËTDWƽ̨µÄ¹¦ÄÜ£¬ÈçHiveµÄÌØÓй¦ÄÜ£ºÔªÊý¾ÝÖØ¹¹£¬·ÖÇøÓÅ»¯µÈ£¬Í¬Ê±¿ÉÒÔͨ¹ýIDE»òÕßÂå×Óµ÷¶ÈÀ´Ö±½ÓÖ´ÐÐHiveSql²éѯºÍ¶¨Ê±µ÷¶ÈSparkµÄÈÎÎñ;
2.ÓëGaiaºÍTDWµÄµ×²ã´æ´¢Ö±½Ó¼æÈÝ£¬¿ÉÒÔÖ±½Ó°²È«ÇÒ¸ßЧµØÊ¹ÓÃTDW¼¯ÈºÉϵÄÊý¾Ý;
3.¶ÔSparkµ×²ãµÄʹÓÃÃż÷£¬×ÊÔ´¹ÜÀíÓëµ÷¶È£¬ÈÎÎñ¼à¿ØÒÔ¼°ÈÝÔֵȶà¸ö¹¦ÄܽøÐÐÍêÉÆ£¬²¢Ö§³Ö¿ìËÙµÄÇ¨ÒÆºÍÀ©ÈÝ¡£
SparkÔÚÏàËÆ¶È¼ÆËã·½ÃæµÄÓ¦ÓÃ
ÏàËÆ¶ÈÊÇÖ¸Á½¸ö½ÚµãÖ®¼äÌØ¶¨ÊôÐÔµÄÏàËÆ³Ì¶È£¬ÏàËÆ¶È¼ÆËãÊÇÊý¾ÝÍÚ¾ò¡¢ÍƼöÒýÇæÖеÄ×î»ù±¾ÎÊÌâ¡£ÀýÈçÔÚÍÆ¼öϵͳÖÐͨ¹ý¼ÆËãÍÆ¼öÎïÆ·µÄÏàËÆ¶È£¬´Ó¶ø¸øÄ¿±êÓû§ÍƼöÓëËûϲ»¶µÄÎïÆ·ÏàËÆ¶È½Ï¸ßµÄÎïÆ·£¬»òÊǼÆËãÓû§Ö®¼äµÄÏàËÆ¶È£¬¸øÄ¿±êÓû§ÍƼöÓëÆäÏàËÆµÄÓû§Ï²»¶µÄÎïÆ·¡£Òò´Ë£¬ÏàËÆ¶È¼ÆËã¼¼ÊõÔںܴó³Ì¶ÈÉϾö¶¨×ÅÍÆ¼öϵͳµÄÐÔÄÜ¡£
Ëæ×Å´óÊý¾Ýʱ´úµÄÀ´ÁÙ£¬ÈÕÒæÔö¼ÓµÄÊý¾ÝÁ¿Ê¹µÃµ¥»úµÄ¼ÆËãÄÜÁ¦ÒѾԶԶÎÞ·¨Âú×ãÐèÇó¡£ÔÚ¶Ô´ó¹æÄ£µÄ½Úµã¶Ô½øÐÐÏàËÆ¶È¼ÆËãʱ£¬·Ö²¼Ê½´¦ÀíÍùÍùÊÇ¿ÉÐеĽâ¾ö·½°¸¡£MapReduceÊÇĿǰÁ÷Ðеķֲ¼Ê½±à³Ì¿ò¼Ü¡£HadoopÓëSparkÊÇMapReduce±à³ÌÄ£Ð͵ÄÁ½¸ö¿ªÔ´ÊµÏÖ¡£Ïà±ÈÓÚHadoop£¬SparkÌṩÁËcache»úÖÆ£¬Ôö¼ÓÁ˶Եü´ú¼ÆËãµÄÖ§³Ö£»»¹ÌṩÁËDAGµ÷¶ÈÀ´Ö§³Ö¸´ÔӵļÆËãÈÎÎñ£¬¼õÉÙÁËÖмä½á¹ûµÄ´ÅÅ̶Áд£¬Äܹ»»ñµÃ¸ü¼ÑµÄÐÔÄÜ¡£
ÎÊÌâÃèÊö
ÊäÈëÊý¾Ý¿ÉÒÔ±íʾ³ÉÁ½ÕÅ±í£º
1.½Úµã¹ØÏµ±írelation£¬×Ö¶ÎÓÐid, fid£¬±íʾÁ½¸ö½Úµã´æÔÚ¹ØÏµ¡£
2.½ÚµãÌØÕ÷±ífeatures£¬×Ö¶ÎÓÐid, feature£¬±íʾÿ¸ö½Úµã¾ßÓеÄÌØÕ÷ÐÅÏ¢¡£
ÏÂÁÐÁ½¸ö±í¸ñ±íʾÁËÔÚÒ»¸öÓµÓÐ6¸ö½ÚµãµÄ¹ØÏµÍøÂçÖУ¬½Úµã¹ØÏµ±íºÍ½ÚµãÌØÕ÷±íµÄÇé¿ö¡£

ÏàËÆ¶È¼ÆËã¼´ÊÇ¶Ô½Úµã¹ØÏµ±íÖеÄËùÓнڵã¶Ô (id£¬fid)£¬ÆäÌØÕ÷ÏòÁ¿·Ö±ðΪ ºÍ,ÀûÓÃÏàËÆ¶È¼ÆË㺯Êýsimilarity-Calculation£¬¼ÆËãºÍÖ®¼äµÄÏàËÆ¶È¡£ÏàËÆ¶È¼ÆË㺯Êýsimilarity-CalculationÒÀ¾Ý¾ßÌåµÄÏàËÆ¶ÈºâÁ¿·½·¨¶ø¶¨¡£
MapReduce ½â¾ö·½°¸
HiveÊǽ¨Á¢ÔÚHadoopÖ®ÉÏÌṩSQL½Ó¿Ú´¦ÀíµÄº£Á¿Êý¾Ý´¦Àí¹¤¾ß£¬¶ÔÓÚÉÏÊöÏàËÆ¶È¼ÆËãÎÊÌ⣬Æä¼ÆËãÁ÷³Ì¿ÉÒÔÓÃÈçÏÂSQLÀ´ÃèÊö£¬²¢Ê¹ÓÃHiveÀ´¼ÆËã¡£

Õû¸ö¼ÆËãÁ÷³Ì¿ÉÒÔ·ÖΪÁ½¸ö²½Ö裺
ͨ¹ýÁ½´ÎJOIN²Ù×÷£¬Éú³ÉÒ»ÕÅÁÙʱ±í£¬ÁÙʱ±íÖеÄÒ»¸öÔª×é¶ÔÓ¦½Úµã¹ØÏµ±íÖеÄÒ»¶Ô½ÚµãºÍÕâÁ½¸ö½ÚµãµÄÌØÕ÷ÏòÁ¿¡£
±éÀúÁÙʱ±í£¬¶Ôÿ¸öÔª×éÖеÄÁ½¸ö½Úµã¼ÆËãÆäÏàËÆ¶È¡£
ÏÂͼչʾÁ˸ÃSQLÓï¾äµÄÖ´Ðйý³Ì£º

ʹÓÃHive¶ÔǧÒÚ½Úµã¹ØÏµ¼Ç¼½øÐÐÏàËÆ¶È¼ÆË㣬Á½´ÎJOIN²Ù×÷³ÉΪÐÔÄܵÄÖ÷Ҫƿ¾±Æ¿¾±¡£ÔÚÁ½´ÎJOINµÄ¹ý³ÌÖУ¬ÍøÂçÊý¾Ý´«ÊäºÍ´ÅÅ̶Áд´ïµ½ÁË200TB£¬¼¯Èº¶àÊý½áµãµÄÓ²ÅÌÎÞ·¨Ö§³Ö£¬ÈÎÎñʧ°Ü¾³£·¢Éú£¬×÷ÒµÔËÐÐÁËʱ¼ä³¬¹ýÁË24Сʱ¡£Í¨¹ý½«½Úµã¹ØÏµ±í²ð·Ö³É¶à¸ö×Ó±í£¬Ã¿¸ö×Ó±í¶ÀÁ¢µØ½øÐÐÏàËÆ¶È¼ÆË㣬¶à¸ö×Ó±íµÄÈÎÎñ²¢ÐÐÖ´ÐУ¬×îºóÔÙ½«¶à¸ö×Ó×÷ÒµµÄ½á¹û»ã×Ü£¬µÃµ½×îÖÕ½á¹û¡£²ÉÓÃÕâÑùµÄ·½Ê½£¬×÷Òµ×Üʱ¼äÈÔÈ»³¬¹ýÁË24Сʱ¡£
Spark½â¾ö·½°¸
ͨ¹ý¶ÔHive¼ÆËã¹ý³ÌµÄ·ÖÎö£¬ÎÒÃÇ·¢ÏÖÍøÂçÊý¾Ý¿ªÏúÖ÷ÒªÀ´×ÔÓÚ½ÚµãÌØÕ÷ÏòÁ¿µÄ´óÁ¿¸´ÖÆ¡£¶ÔÓÚ½Úµã¹ØÏµ±íÖеÄÿ¶Ô¹ØÏµ£¬¼ÆËãʱ¶¼ÐèÒªµÃµ½Á½¸ö½ÚµãµÄÌØÕ÷ÏòÁ¿£¬´Ó¶øµ¼ÖÂÁË´óÁ¿µÄÊý¾Ý¸´ÖÆ¡£Òò´Ë£¬ÎÒÃÇ´ÓÁ½¸ö·½ÃæÈ¥¼õÉÙÊý¾Ý¸´ÖÆ£º
1.²ÉÓöþάͼ»®·ÖµÄ˼Ï룬¼õÉÙ½ÚµãµÄ¸´ÖÆÊýÄ¿
2.ÿ¸öÊý¾Ý·ÖÇøÖУ¬¶ÔÓÚͬһ¸ö½Úµã£¬Ö»±£ÁôÒ»·Ý¸Ã½ÚµãÌØÕ÷ÏòÁ¿
¶þάͼ»®·Ö·½·¨£º
ÈκÎÒ»ÕŹØÏµÍøÂ磬¶¼¿ÉÒÔÓÃÒ»¸ö´ó¾ØÕóMÀ´±íʾ£¬¾ØÕóµÄÁ½¸öά¶ÈÓÃÀ´±íʾ½Úµã£¬¾ØÕóµÄÔªËØM[i, j]±íʾ½ÚµãiºÍ½ÚµãjÊÇ·ñ´æÔÚ¹ØÁª£¬Èç¹û´æÔÚ£¬ÔòM[i,j]ֵΪ1£¬·ñÔò£¬M[i,
j]ֵΪ0¡£ÏÂͼչʾÁËͨ¹ý²ÉÓöþά»®·ÖµÄ·½·¨£¬½«Ò»¸ö¾ØÕó»®·Ö³ÉÁË16¸ö·ÖÇø¡£
ʹÓöþά»®·Ö¿ÉÒÔ¼õÉÙ½ÚµãµÄ¸´ÖÆÊýÄ¿¡£¼ÙÉè·ÖÇø×ÜÊýΪ£¬²ÉÓÃһά»®·ÖµÄ·½·¨£¬×î²îÇé¿öÏÂÿ¸ö½ÚµãµÄ¸´ÖÆ·ÝÊýÊÇ£¬¼´Ã¿¸ö·ÖÇø¶¼»áÓиýڵãµÄ¸´ÖÆ£»²ÉÓöþά»®·Ö·½·¨£¬×î²îÇé¿öÏÂÿ¸ö½ÚµãµÄ¸´ÖÆ·ÝÊÇ
¡£¶ÔÓÚ´óÊý¾ÝÁ¿£¬·ÖÇø×ÜÊýͨ³£ºÜ´ó£¬ËùÒÔ²ÉÓöþά»®·Öͨ³£¿ÉÒÔ¼õÉÙÿ¸ö½ÚµãµÄ¸´ÖÆ·ÝÊý¡£
¼ÆËã²½Ö裺
ÀûÓöþά»®·Ö·½·¨½«½Úµã¹ØÏµ±í»®·Ö³É¶à¸öÊý¾Ý·ÖÇø£¬¼ÙÉèÎÒÃǽ«·ÖÇøÊýÉèΪ4£¬ÔòTable
1ËùʾµÄ½Úµã¹ØÏµ±í½«»á»®·Öµ½4¸ö·ÖÇø£¬Ã¿¸öÔª×é¶ÔÓ¦µÄ·ÖÇøÈçÏÂTable 3Ëùʾ£º
¸ù¾Ýÿ¸ö·ÖÇøÖеĽڵãÁÐ±í£¬¼ÆËã³öÿ¸ö½ÚµãËùÔڵķÖÇøÁÐ±í£¬³ÆÎªÂ·ÓÉ±í£¬¼Ç¼ÁËÿ¸ö½ÚµãËùÔڵķÖÇøÐÅÏ¢£¬Æä½á¹ûÈçTable
4Ëùʾ¡£
¸ù¾Ý·ÓÉ±í½«Ã¿¸ö½ÚµãµÄÌØÕ÷ÏòÁ¿·¢ËÍÖÁÿ¸ö·ÖÇøÖ®ÖУ¬±£Ö¤Ã¿¸ö·ÖÇøÖÐÒ»¸ö½ÚµãÖ»±£´æÒ»·ÝÌØÕ÷ÏòÁ¿£¬ÈçTable
5Ëùʾ¡£
¶ÔÓÚÿ¸ö·ÖÇø£¬½«¸Ã·ÖÇøµÄ¹ØÏµ¼¯ºÏÓë¸Ã·ÖÇøÖÐËùÓнáµãµÄÌØÕ÷ÏòÁ¿½øÐйØÁª£¬±éÀúÿ¶Ô½Úµã¹ØÏµ£¬ÀûÓÃÏàËÆ¶Èº¯ÊýºÍÌØÕ÷ÏòÁ¿¼ÆËã¶þÕßµÄÏàËÆ¶È¡£
ͨ¹ýÒÔÉϲ½Ö裬¼´¿ÉÒÔ¼ÆËã³ö½Úµã¹ØÏµ±íÖÐÿ¶Ô½ÚµãµÄÏàËÆ¶È¡£ÓëMapReduceµÄ¼ÆËã·½·¨Ïà±È£¬Èç¹ûÒ»¸öÓû§¶à´Î³öÏÖÔÚͬһ¸ö·ÖÇøÖУ¬±ÈÈçÓû§1ÔÚ·ÖÇø1ÖгöÏÖÁËÁ½´Î£¬ÉÏÊö¼ÆËã²½ÖèÖ»»á½«Óû§1µÄÌØÕ÷ÏòÁ¿·¢ËÍÒ»·Ýµ½·ÖÇø1ÖУ¬µ«ÊÇMapReduceµÄ¼ÆËã·½·¨»á·¢ËÍÁ½´Î£¬²úÉúÈßÓàµÄÍøÂçÊý¾Ý´«Ê䡣ʹÓÃÉÏÊö¼ÆËã·½·¨£¬ÎÒÃǽ«ÍøÂç´«ÊäÁ¿½µµ½ÁË50
T£¬Ô¶Ð¡ÓÚMapReduce·½·¨µÄÍøÂç´«ÊäÁ¿¡£
ϵͳ²ã´ÎÓÅ»¯£º
³ýÁËÔÚ¼ÆËãÁ÷³ÌÉϽøÐиĽø£¬ÎÒÃÇ»¹¶ÔSpark½øÐÐÁËÒÔÏ·½ÃæµÄÓÅ»¯£º
1.ÓÅ»¯·ÖÇø²ÎÊýÉèÖá£ÔÚÏàËÆ¶È¼ÆËãµÄÓ¦ÓÃÖУ¬·ÖÇø¸öÊýÔ½¶à£¬»áµ¼Ö½ڵãµÄ¸´ÖÆ·ÝÊýÔö¼Ó£¬´Ó¶øÔö´óÍøÂçÊý¾Ý´«ÊäÁ¿¡£Òò´ËÎÒÃÇ»ùÓÚÖмä½á¹ûµÄͳ¼ÆÐÅÏ¢À´È·¶¨È·¶¨·ÖÇø¸öÊý£¬Ê¹µÃÔÚ³ä·ÖÀûÓÃÿ¸ö½ÚµãÄÚ´æºÍCPUµÄǰÌáÏ£¬×îС»¯·ÖÇø¸öÊý¡£
2.ÓÅ»¯ÄÚ´æ±íʾ¡£ÓÉÓÚÊý¾ÝÁ¿´ó£¬¶ÔÏó¸öÊý¶à£¬µ¼ÖÂÄÚ´æÊ¹ÓÃÁ¿½Ï¸ß£¬GCʱ¼ä½Ï³¤¡£ÎÒÃÇʹÓÃÁд洢¸ñʽÀ´¶ÔÄÚ´æÊý¾Ý½øÐÐѹËõ£¬¼õÉÙÊý¾ÝÁ¿µÄͬʱҲ¼õÉÙÁ˶ÔÏó¸öÊý¡£
3.Ìá¸ßÍøÂçÎȶ¨ÐÔ¡£Ëæ×ż¯ÈºÖлúÆ÷ÊýÄ¿µÄÔö¼Ó£¬ÍøÂçÁ¬½ÓÊýÒ²»á³É±¶Ôö¼Ó¡£µ±ÍøÂç³öÏÖÓµ¼·Ê±£¬¾³£»á°éËæ×ÅÁ¬½Ó³¬Ê±´Ó¶øµ¼ÖÂshuffleÊý¾ÝÀȡʧ°Ü¡£¸üÔã¸âµÄÇé¿öÊÇ£¬ÍøÂ糬ʱ»áÈÃMasterÎóÈÏΪExecutorÒѾ¶ªÊ§£¬¹Ê»áʹµÃÕû¸öExecutorÉÏÒѾÍê³ÉµÄÈÎÎñÈ«²¿ÖØ×ö¡£Òò´ËÔÚshuffleʱÔö¼ÓÍøÂç³¬Ê±ÖØÊÔ»úÖÆ£¬Í¬Ê±¿ØÖÆÃ¿´Î·¢Ë͵ÄÇëÇóÁ¬½ÓÊý£¬±ÜÃâshuffleÀÊý¾Ý³¬Ê±£¬¼õÉÙÈÎÎñʧ°Ü´ÎÊý£¬·ÀÖ¹Executor¶ªÊ§µÄÇé¿ö³öÏÖ¡£
4.ʹÓÃsort-based shuffleʱ½«Îļþ¿éË÷ÒýÐÅÏ¢»º´æÒ»·ÝÔÚÄÚ´æÖУ¬ºóÐøÀÊý¾Ýʱֱ½Ó¶ÁÄÚ´æ»ñÈ¡Ë÷ÒýÐÅÏ¢¡£Ô¤²âÖ´ÐÐʱ£¬µ±Í¬Ò»ÈÎÎñµÄÒ»ÅúÔËÐÐʵÀýÓÐÒ»¸öÍê³Éʱ£¬É±µôÕýÔÚÔËÐÐµÄÆäÓàʵÀý£¬ÌáÔçÊͷżÆËã×ÊÔ´¡£
5.²ÎÊýµ÷Õû¡£ÓÉÓÚÿ¸öExecutor½ø³Ì»¹»áʹÓõ½¶ÑÍâÄڴ棬Òò´ËExecutor½ø³ÌÕ¼ÓõÄÄÚ´æÍùÍù»á´óÓÚJVMÉ趨µÄ×î´óÖµ£¬ÎªÁ˱£Ö¤Gaia²»»á½«³¬¹ýJVMÄÚ´æµÄExecutor½ø³Ìɱµô£¬ÅäÖòÎÊýyarn.executor.memoryOverheadÒÔÃâ±»kill¡£ÓÉÓÚExecutorÔÚFull
GCʱÐèÒª½Ï³¤Ê±¼ä£¬ÐèÒªÅäÖòÎÊýspark.storage.blockManagerSlaveTimeoutMsÀ´ÑÓ³¤blockManagerµÄ³¬Ê±Ê±¼ä¡£
ʵÑé¶Ô±È
ʵÑé»·¾³£º·Ö±ðÔÚÓµÓÐ200̨¡¢600̨ºÍ1000̨TS5»úÆ÷½ÚµãµÄ¼¯ÈºÉϽøÐÐÁ˶Աȣ¬Ã¿Ì¨»úÆ÷ÓµÓÐ64GBÄڴ棬2*12TÓ²ÅÌ£¬24Ïß³ÌCPU¡£ÔÚÁ½¸öÊý¾Ý¼¯ÉϽøÐÐÁËHadoop¡¢ÉçÇøGraphXºÍTDW-SparkµÄÐÔÄܶԱȣ¬Ò»¸öÊý¾Ý¼¯ÓµÓÐÎå°ÙÒÚ½Úµã¶Ô£¬¶øÁíÒ»¸öÓµÓÐǧÒÚÁ¿¼¶µÄ½Úµã¶Ô¡£ÊµÑé½á¹ûÈçϱíËùʾ:

ͨ¹ýÉÏÊöʵÑé¶Ô±È£¬¿ÉÒÔ¿´³öÔÚMapReduceÉϵÄʵÏÖµÄÐÔÄÜÔ¶Ô¶µÍÓÚÔÚSparkÉϵÄÐÔÄÜ£¬Ê¹ÓÃJOINµÄ·½·¨Ê¹µÃÍøÂçͨÐÅ¿ªÏú·Ç³£´ó£¬Îå°ÙÒÚÊý¾Ý¼¯µÄÈÎÎñÖ´ÐÐʱ¼ä³¬¹ý12¸öСʱ£¬Ç§ÒÚÊý¾Ý¼¯ÈÎÎñÖ´ÐÐʱ¼ä³¬¹ý24¸öСʱ£»GraphX²ÉÓõÄͬÑùÊǶþάͼ»®·Ö£¬µ«ÊÇÓÉÓÚÆäÊÇÒ»¸öÃæÏòͨÓõÄͼ¼ÆËã¿ò¼Ü£¬Î¬»¤Á˸´ÔÓµÄÊý¾Ý½á¹¹ºÍ¼ÆËãÁ÷³Ì£¬Ôì³ÉÐÔÄÜϽµ¡£Í¬Ê±£¬GraphXÔÚÍøÂçÎȶ¨ÐÔ·½Ãæ´æÔÚÐí¶àÎÊÌ⣬µ±¼¯Èº¹æÄ£´ïµ½600̨ʱ±ã»áÓдóÁ¿µÄÈÎÎñʧ°Ü¡£
ÓëǰÁ½ÕßÏà±È£¬TDW-SparkÔÚ¼¯ÈºÎª200̨ʱÔÚÁ½¸öÊý¾Ý¼¯É϶¼»ñµÃÁ˽ϴóµÄÐÔÄÜÔö³¤£¬ËùÏûºÄʱ¼äÉÙÓÚGraphXµÄÒ»°ë¡£µ±¼¯Èº¹æÄ£´Ó200̨À©³äÖÁ600̨£¬TDW-SparkÔÚÎå°ÙÒÚ½Úµã¶ÔÊý¾Ý¼¯ÉÏ»ñµÃ¼ÓËÙ±È218%£¬ÔÚǧÒÚ½ÚµãÉϵļÓËÙ±ÈΪ280%£»µ±¼¯Èº¹æÄ£´Ó200̨À©³äÖÁ1000̨ʱ£¬¼ÓËٱȷֱðΪ279%ºÍ350%¡£Òò´Ë£¬TDW-Spark²»½öÔÚÐÔÄÜÉÏ»ñµÃÁ˺ܴóµÄÌáÉý£¬»¹¿ÉÒÔÔÚǧ̨¹æÄ£µÄ¼¯ÈºÖ®ÉÏÎȶ¨ÔËÐУ¬Í¬Ê±»ñµÃÁ¼ºÃµÄˮƽÀ©Õ¹ÄÜÁ¦¡£
SparkÔÚ»ùÓÚÎïÆ·µÄÐͬ¹ýÂËÍÆ¼öËã·¨µÄÓ¦ÓÃ
»¥ÁªÍøµÄ·¢Õ¹µ¼ÖÂÁËÐÅÏ¢±¬Õ¨¡£Ãæ¶Ôº£Á¿µÄÐÅÏ¢£¬ÈçºÎ¶ÔÐÅÏ¢½øÐÐˢѡºÍ¹ýÂË£¬½«Óû§×î¹Ø×¢×î¸ÐÐËȤµÄÐÅÏ¢Õ¹ÏÖÔÚÓû§ÃæÇ°£¬ÒѾ³ÉΪÁËÒ»¸öؽ´ý½â¾öµÄÎÊÌâ¡£ÍÆ¼öϵͳ¿ÉÒÔͨ¹ýÓû§ÓëÐÅÏ¢Ö®¼äµÄÁªÏµ£¬Ò»·½Ãæ°ïÖúÓû§»ñÈ¡ÓÐÓõÄÐÅÏ¢£¬ÁíÒ»·½ÃæÓÖÄÜÈÃÐÅÏ¢Õ¹ÏÖÔÚ¶ÔÆä¸ÐÐËȤµÄÓû§ÃæÇ°£¬ÊµÏÖÁËÐÅÏ¢ÌṩÉÌÓëÓû§µÄ˫Ӯ¡£
Ðͬ¹ýÂËÍÆ¼ö£¨Collaborative Filtering Recommendation£©Ëã·¨ÊÇ×î¾µä×î³£ÓõÄÍÆ¼öËã·¨£¬Ë㷨ͨ¹ý·ÖÎöÓû§ÐËȤ£¬ÔÚÓû§ÈºÖÐÕÒµ½Ö¸¶¨Óû§µÄÏàËÆÓû§£¬×ÛºÏÕâЩÏàËÆÓû§¶ÔijһÐÅÏ¢µÄÆÀ¼Û£¬ÐγÉϵͳ¶Ô¸ÃÖ¸¶¨Óû§¶Ô´ËÐÅÏ¢µÄϲºÃ³Ì¶ÈÔ¤²â¡£Ðͬ¹ýÂË¿Éϸ·ÖΪÒÔÏÂÈýÖÖ£º
1.User-based CF: »ùÓÚUserµÄÐͬ¹ýÂË£¬Í¨¹ý²»Í¬Óû§¶ÔItemµÄÆÀ·ÖÀ´ÆÀ²âÓû§Ö®¼äµÄÏàËÆÐÔ£¬¸ù¾ÝÓû§Ö®¼äµÄÏàËÆÐÔ×ö³öÍÆ¼ö£»
2.Item-based CF: »ùÓÚItemµÄÐͬ¹ýÂË£¬Í¨¹ýÓû§¶Ô²»Í¬ItemµÄÆÀ·ÖÀ´ÆÀ²âItemÖ®¼äµÄÏàËÆÐÔ£¬¸ù¾ÝItemÖ®¼äµÄÏàËÆÐÔ×ö³öÍÆ¼ö£»
3.Model-based CF: ÒÔÄ£ÐÍΪ»ù´¡µÄÐͬ¹ýÂË£¨Model-based
Collaborative Filtering£©ÊÇÏÈÓÃÀúÊ·×ÊÁϵõ½Ò»¸öÄ£ÐÍ£¬ÔÙÓôËÄ£ÐͽøÐÐÔ¤²âÍÆ¼ö¡£
ÎÊÌâÃèÊö
ÊäÈëÊý¾Ý¸ñʽ£ºUid£¬ItemId£¬Rating £¨Óû§Uid¶ÔItemIdµÄÆÀ·Ö£©¡£
Êä³öÊý¾Ý£ºÃ¿¸öItemIdÏàËÆÐÔ×î¸ßµÄǰN¸öItemId¡£
ÓÉÓÚÆª·ùÏÞÖÆ£¬ÕâÀïÎÒÃÇֻѡÔñ»ùÓÚItemµÄÐͬ¹ýÂËËã·¨½â¾öÕâ¸öÀý×Ó¡£
Ëã·¨Âß¼£º»ùÓÚItemµÄÐͬ¹ýÂËËã·¨µÄ»ù±¾¼ÙÉèΪÁ½¸öÏàËÆµÄItem»ñµÃͬһ¸öÓû§µÄºÃÆÀµÄ¿ÉÄÜÐԽϸߡ£Òò´Ë£¬¸ÃËã·¨Ê×ÏȼÆËãÓû§¶ÔÎïÆ·µÄϲºÃ³Ì¶È£¬È»ºó¸ù¾ÝÓû§µÄϲºÃ¼ÆËãItemÖ®¼äµÄÏàËÆ¶È£¬×îºóÕÒ³öÓëÿ¸öItem×îÏàËÆµÄǰN¸öItem¡£¸ÃËã·¨µÄÏêϸÃèÊöÈçÏ£º
1.¼ÆËãÓû§Ï²ºÃ£º²»Í¬Óû§¶ÔItemµÄÆÀ·ÖÊýÖµ¿ÉÄÜÏà²î½Ï´ó£¬Òò´ËÐèÒªÏȶÔÿ¸öÓû§µÄÆÀ·Ö×ö¶þÔª»¯´¦Àí£¬ÀýÈç¶ÔÓÚijһÓû§¶ÔijһItemµÄÆÀ·Ö´óÓÚÆä¸ø³öµÄƽ¾ùÆÀ·ÖÔò±ê¼ÇΪºÃÆÀ1£¬·ñÔòΪ²îÆÀ0¡£
2.¼ÆËãItemÏàËÆÐÔ£º²ÉÓÃJaccardϵÊý×÷Ϊ¼ÆËãÁ½¸öItemµÄÏàËÆÐÔ·½·¨¡£ÏÁÒåJaccardÏàËÆ¶ÈÊʺϼÆËãÁ½¸ö¼¯ºÏÖ®¼äµÄÏàËÆ³Ì¶È£¬¼ÆËã·½·¨ÎªÁ½¸ö¼¯ºÏµÄ½»¼¯³ýÒÔÆä²¢¼¯£¬¾ßÌåµÄ·ÖΪÒÔÏÂÈý²½¡£
1¡¢ItemºÃÆÀÊýͳ¼Æ£¬Í³¼ÆÃ¿¸öItemµÄºÃÆÀÓû§Êý¡£
2¡¢ItemºÃÆÀ¼üÖµ¶Ôͳ¼Æ£¬Í³¼ÆÈÎÒâÁ½¸öÓйØÁªItemµÄÏàͬºÃÆÀÓû§Êý¡£
3¡¢ItemÏàËÆÐÔ¼ÆË㣬¼ÆËãÈÎÒâÁ½¸öÓйØÁªItemµÄÏàËÆ¶È¡£
ÕÒ³ö×îÏàËÆµÄǰN¸öItem¡£ÕâÒ»²½ÖУ¬ItemµÄÏàËÆ¶È»¹ÐèÒª¹éÒ»»¯ºóÕûºÏ£¬È»ºóÇó³öÿ¸öItem×îÏàËÆµÄǰN¸öItem£¬¾ßÌåµÄ·ÖΪÒÔÏÂÈý²½¡£
1.ItemÏàËÆÐÔ¹éÒ»»¯¡£
2.ItemÏàËÆÐÔÆÀ·ÖÕûºÏ¡£
3.»ñȡÿ¸öItemÏàËÆÐÔ×î¸ßµÄǰN¸öItem¡£
»ùÓÚMapReduceµÄʵÏÖ·½°¸
ʹÓÃMapReduce±à³ÌÄ£ÐÍÐèҪΪÿһ²½ÊµÏÖÒ»¸öMapReduce×÷Òµ£¬Ò»¹²´æÔÚ°üº¬Æß¸öMapRduce×÷Òµ¡£Ã¿¸öMapReduce×÷Òµ¶¼°üº¬MapºÍReduce£¬ÆäÖÐMap´ÓHDFS¶ÁÈ¡Êý£¬Êä³öÊý¾Ýͨ¹ýShuffle°Ñ¼üÖµ¶Ô·¢Ë͵½Reduce£¬Reduce½×¶ÎÒÔ<key£¬Iterator<value>>×÷ΪÊäÈ룬Êä³ö¾¹ý´¦ÀíµÄ¼üÖµ¶Ôµ½HDFS¡£ÆäÔËÐÐÔÀíÈçͼËùʾ:

Æß¸öMapReduce×÷ÒµÒâζ×ÅÐèÒªÆß´Î¶ÁÈ¡ºÍдÈëHDFS£¬¶øËüÃǵÄÊäÈëÊä³öÊý¾Ý´æÔÚ¹ØÁª£¬Æß¸ö×÷ÒµÊäÈëÊä³öÊý¾Ý¹ØÏµÈçͼËùʾ¡£

»ùÓÚMapReduceʵÏÖ´ËËã·¨´æÔÚÒÔÏÂÎÊÌ⣺
1.ΪÁËʵÏÖÒ»¸öÒµÎñÂß¼ÐèҪʹÓÃÆß¸öMapReduce×÷Òµ£¬Æß¸ö×÷Òµ¼äµÄÊý¾Ý½»»»Í¨¹ýHDFSÍê³É£¬Ôö¼ÓÁËÍøÂçºÍ´ÅÅ̵ĿªÏú¡£
2.Æß¸ö×÷Òµ¶¼ÐèÒª·Ö±ðµ÷¶Èµ½¼¯ÈºÖÐÔËÐУ¬Ôö¼ÓÁËGaia¼¯ÈºµÄ×ÊÔ´µ÷¶È¿ªÏú¡£
3.MR2ºÍMR3ÖØ¸´¶ÁÈ¡ÏàͬµÄÊý¾Ý£¬Ôì³ÉÈßÓàµÄHDFS¶Áд¿ªÏú¡£
ÕâЩÎÊÌâµ¼ÖÂ×÷ÒµÔËÐÐʱ¼ä´ó´óÔö³¤£¬×÷Òµ³É±¾Ôö¼Ó¡£
»ùÓÚSparkµÄʵÏÖ·½°¸
Ïà±ÈÓëMapReduce±à³ÌÄ£ÐÍ£¬SparkÌṩÁ˸ü¼ÓÁé»îµÄDAG£¨Directed Acyclic
Graph£© ±à³ÌÄ£ÐÍ£¬²»½ö°üº¬´«Í³µÄmap¡¢reduce½Ó¿Ú£¬»¹Ôö¼ÓÁËfilter¡¢flatMap¡¢unionµÈ²Ù×÷½Ó¿Ú£¬Ê¹µÃ±àдSpark³ÌÐò¸ü¼ÓÁé»î·½±ã¡£Ê¹ÓÃSpark±à³Ì½Ó¿ÚʵÏÖÉÏÊöµÄÒµÎñÂß¼ÈçͼËùʾ¡£

Ïà¶ÔÓÚMapReduce£¬SparkÔÚÒÔÏ·½ÃæÓÅ»¯ÁË×÷ÒµµÄÖ´ÐÐʱ¼äºÍ×ÊԴʹÓá£
1.DAG±à³ÌÄ£ÐÍ¡£Í¨¹ýSparkµÄDAG±à³ÌÄ£ÐÍ¿ÉÒÔ°ÑÆß¸öMapReduce¼ò»¯ÎªÒ»¸öSpark×÷Òµ¡£Spark»á°Ñ¸Ã×÷Òµ×Ô¶¯ÇзÖΪ°Ë¸öStage£¬Ã¿¸öStage°üº¬¶à¸ö¿É²¢ÐÐÖ´ÐеÄTasks¡£StageÖ®¼äµÄÊý¾Ýͨ¹ýShuffle´«µÝ¡£×îÖÕÖ»ÐèÒª¶ÁÈ¡ºÍдÈëHDFSÒ»´Î¡£¼õÉÙÁËÁù´ÎHDFSµÄ¶Áд£¬¶ÁдHDFS¼õÉÙÁË70%¡£
2.Spark×÷ÒµÆô¶¯ºó»áÉêÇëËùÐèµÄExecutor×ÊÔ´£¬ËùÓÐStageµÄTasksÒÔÏ̵߳ķ½Ê½ÔËÐУ¬¹²ÓÃExecutors£¬Ïà¶ÔÓÚMapReduce·½Ê½£¬SparkÉêÇë×ÊÔ´µÄ´ÎÊý¼õÉÙÁ˽ü90%¡£
3.SparkÒýÈëÁËRDD£¨Resilient Distributed
Dataset£©Ä£ÐÍ£¬ÖмäÊý¾Ý¶¼ÒÔRDDµÄÐÎʽ´æ´¢£¬¶øRDD·Ö²¼´æ´¢ÓÚslave½ÚµãµÄÄÚ´æÖУ¬Õâ¾Í¼õÉÙÁ˼ÆËã¹ý³ÌÖжÁд´ÅÅ̵ĴÎÊý¡£RDD»¹ÌṩÁËCache»úÖÆ£¬ÀýÈç¶ÔÉÏͼµÄrdd3½øÐÐCacheºó£¬rdd4ºÍrdd7¶¼¿ÉÒÔ·ÃÎÊrdd3µÄÊý¾Ý¡£Ïà¶ÔÓÚMapReduce¼õÉÙMR2ºÍMR3ÖØ¸´¶ÁÈ¡ÏàͬÊý¾ÝµÄÎÊÌâ¡£
Ч¹û¶Ô±È
²âÊÔʹÓÃÏàͬ¹æÄ£µÄ×ÊÔ´£¬ÆäÖÐMapReduce·½Ê½°üº¬200¸öMapºÍ100¸öReduce£¬Ã¿¸öMapºÍReduceÅäÖÃ4GµÄÄڴ棻
ÓÉÓÚSpark²»ÔÙÐèÒªReduce×ÊÔ´£¬¶øMapReduceÖ÷ÒªÂß¼ºÍ×ÊÔ´ÏûºÄÔÚMap¶Ë£¬Òò´ËʹÓÃ200ºÍ400¸öExecutor×ö²âÊÔ£¬Ã¿¸öExecutor°üº¬4GÄÚ´æ¡£²âÊÔ½á¹ûÈçϱíËùʾ£¬ÆäÖÐÊäÈë¼Ç¼Լ38ÒÚÌõ¡£

¶Ô±È½á¹û±íµÄµÚÒ»Ðк͵ڶþÐУ¬SparkÔËÐÐЧÂʺͳɱ¾Ïà¶ÔÓÚMapReduce·½Ê½¼õÉٷdz£Ã÷ÏÔ£¬ÆäÖУ¬DAGÄ£ÐͼõÉÙÁË70%µÄHDFS¶Áд¡¢cache¼õÉÙÖØ¸´Êý¾ÝµÄ¶ÁÈ¡£¬ÕâÁ½¸öÓÅ»¯¼´ÄܼõÉÙ×÷ÒµÔËÐÐʱ¼äÓÖÄܽµµÍ³É±¾£»¶ø×ÊÔ´µ÷¶È´ÎÊýµÄ¼õÉÙÄÜÌá¸ß×÷ÒµµÄÔËÐÐЧÂÊ¡£¶Ô±È½á¹û±íµÄµÚ¶þÐк͵ÚÈýÐУ¬Ôö¼ÓÒ»±¶µÄExecutorÊýÄ¿£¬×÷ÒµÔËÐÐʱ¼ä¼õÉÙÔ¼50%£¬³É±¾Ôö¼ÓÔ¼25%£¬´ÓÕâ¸ö½á¹û¿´µ½£¬Ôö¼ÓExecutor×ÊÔ´ÄÜÓÐЧµÄ¼õÉÙ×÷ÒµµÄÔËÐÐʱ¼ä£¬µ«²¢Ã»ÓÐ×öµ½ÍêÈ«ÏßÐÔÔö¼Ó¡£ÕâÊÇÒòΪÿ¸öTaskµÄÔËÐÐʱ¼ä²¢²»ÊÇÍêÈ«ÏàµÈµÄ£¬
ÀýÈçijЩtask´¦ÀíµÄÊý¾ÝÁ¿±ÈÆäËûtask¶à£»Õâ¿ÉÄܵ¼ÖÂStageµÄ×îºóʱ¿ÌijЩTaskδ½áÊø¶øÎÞ·¨Æô¶¯ÏÂÒ»¸öStage£¬ÁíÒ»·½Ãæ×÷ÒµÊÇÒ»Ö±Õ¼ÓÐExecutorµÄ£¬Õâʱºò»á³öÏÖһЩExecutor¿ÕÏеÄ×´¿ö£¬ÓÚÊǵ¼ÖÂÁ˳ɱ¾µÄÔö¼Ó¡£
|