µÚÒ»ÕÂ֪ʶ»ØÊ×Óë±¾ÕÂÖØµãÏνÓ
ÔÚ×ÏÌÙׯ԰SparkϵÁн̵̳ÄÊ×ÕÂÖУ¬ÎÒÃǽ¨ÉèÁË»ù´¡¿ª·¢Çé¿ö²¢Íê³ÉÁËÊý¾ÝÊÕÂÞ¡£±¾´ÎµÚ2ÕÂ×îÐÂÊÓÆµ×ÅÖØÕ¹Ê¾RDD£¨µ¯ÐÔÂþÑÜʽÊý¾Ý¼¯£©ºÍDataFrame£¨½á¹¹»¯Êý¾Ý³éÏó£©ÔÚÂþ»Êý¾Ý´¦Öóͷ£ÖеÄÐͬӦÓá£Í¨¹ýBilibiliÂþ»ÕæÊµÓû§»ÏñÊý¾Ý£¬½Ì³ÌÑÝʾÁËÈçºÎʵÏÖǧÍò¼¶Âþ»±êÇ©µÄ¿ìËÙÇåÏ´Óëͳ¼Æ£¬ÕâÕýÊǹ¹½¨ÍƼöϵͳµÄÒªº¦Ô¤´¦Öóͷ£²½Öè¡£
Âþ»ÌØÕ÷¹¤³ÌÈ«Á÷³Ì½âÃÜ
ÊÓÆµÖÐÌØ±ðÒýÈËעĿµÄÊÇSpark MLlibÔÚÌØÕ÷ÌáÈ¡ÖеÄÓ¦ÓÃʵ¼ù¡£Õë¶ÔÂþ»Æ½Ì¨µÄ¶àÔª»¯Êý¾Ý£¨°üÂÞÔĶÁʱ³¤¡¢µãÔÞÐÐΪ¡¢¸¶·Ñ¼Í¼µÈ£©£¬½²Ê¦ÏêϸÑÝʾÁËÈçºÎ¹¹½¨TF-IDFÌØÕ÷¾ØÕó£¨´ÊÆµ-ÄæÎĵµÆµÂÊͳ¼ÆÒªÁ죩¡£ÄãÊÇ·ñÀ§»óÓÚº£Á¿Âþ»±êÇ©µÄ¹ØÁª·ÖÎö£¿½Ì³ÌÌá³öµÄ»ùÓÚFP-GrowthËã·¨µÄƵ·±ÏÍÚ¾ò·½°¸£¬ÄÜÓÐЧ·¢ÏÖÓû§Æ«ºÃµÄÂþ»×éºÏ¼ÍÂÉ¡£
ÂþÑÜÊ½ÍÆ¼öË㷨ʵÏÖϸ½Ú
ÔÚÂþ»ÍƼö³¡¾°Ï£¬ÊÓÆµÉîÈë½â˵ÁËÐͬ¹ýÂËËã·¨ÔÚSparkÂþÑÜʽ¼¯ÈºÉϵÄʵÏÖÔÀí¡£ÌØ±ðÖµµÃ¹Ø×¢µÄÊǽÓÄÉALS£¨½»Ìæ×îС¶þ³Ë·¨£©´¦Öóͷ£Óû§-Âþ»ÆÀ·Ö¾ØÕóµÄÕ½ÂÔ¡£½Ì³ÌչʾÁËÈçºÎÔÚBilibiliÂþ»°ÙÒÚ¼¶Óû§ÐÐΪÊý¾ÝÖУ¬Í¨¹ýºÏÀíµÄ·ÖÇøÉè¼Æ£¨Partition Strategy£©½«ÅÌËãºÄʱ½µµÍ63%£¬ÕâÖÖÐÔÄÜÓÅ»¯¶ÔÊµÊ±ÍÆ¼öϵͳÓÈÎªÖØÒª¡£
ʵʱÊý¾Ý´¦Öóͷ£ÓëÐÔÄܵ÷ÓÅ
µÚ2ÕÂ×îиüÐÂÕ½ÚÐÂÔöÁËStructured StreamingÓ¦Óð¸Àý¡£Í¨¹ýÄ£ÄâÂþ»Æ½Ì¨µÄʵʱÔĶÁÊý¾ÝÁ÷£¬½Ì³ÌÑÝʾÁËÈçºÎʵÏÖ·ÖÖÓ¼¶¸üеÄÂþ»ÈȶȰñµ¥¡£Õë¶Ôпª·¢Õß³£¼ûµÄOOM£¨ÄÚ´æÒç³ö£©ÎÊÌ⣬½²Ê¦ÌرðÖ¸³öºÏÀíÉèÖÃexecutorÄÚ´æ²ÎÊýÓëÐòÁл¯·½Ê½£¬ÕâÊÇÈ·±£Spark×÷ÒµÎȶ¨ÔËÐеÄÒªº¦ÅäÖá£
ÏîÄ¿½á¹ûÓëÉÌÒµ»¯Ó¦ÓÃÑéÖ¤
ͨ¹ýÍêÕû¸´ÏÖBilibiliÂþ»ÍƼöϵͳµÄ½¹µãÄ£¿é£¬¸ÃSparkʵ¼ùÏîÄ¿ÒÑʵÏÖµã»÷ÂÊÔ¤²â׼ȷÂÊ82%µÄÉÌÒµ»¯»ù×¼¡£ÊÓÆµ½áβ´¦Õ¹Ê¾µÄA/B²âÊÔ£¨¶Ô±ÈÊÔÑ飩Êý¾Ý½²Ã÷£¬ÐÂÍÆ¼öË㷨ʹƽ̨Óû§ÈÕ¾ùÔĶÁʱ³¤ÌáÉý27%¡£ÕâÖÖ´ÓʵÑéÇé¿öµ½Éú²úϵͳµÄÇ¨ÒÆ¾Ñ飬ÕýÊDZ¾½Ì³ÌÇø±ðÓÚͬÀà¿Î³ÌµÄ½¹µã¼ÛÖµ¡£
±¾´Î×ÏÌÙׯ԰Sparkʵ¼ùÊÓÆµµÚ2ÕÂ×îÐÂÄÚÈÝ£¬Í¨¹ýBilibiliÂþ»ÕæÊµÒµÎñ³¡¾°µÄÍêÕû»¹Ô£¬¹¹½¨ÁËÂþÑÜʽÅÌËã¿ò¼ÜÓ뻥ÁªÍø²úÎïµÄ¼¼ÊõÇÅÁº¡£½Ì³ÌÖÐÑÝʾµÄÊý¾Ý´¦Öóͷ£·¶Ê½¡¢Ë㷨ʵÏÖ¼¼ÇÉÓëÐÔÄܵ÷ÓÅ·½°¸£¬Îª¿ª·¢ÕßÌṩÁ˿ɸ´ÓõĹ¤Òµ»¯½â¾ö·½°¸Ä£°å¡£Ëæ×ÅÂþ»Æ½Ì¨Êý¾Ý¹æÄ£µÄÁ¬ÐøÔö³¤£¬ÕÆÎÕÕâЩSparkʵս¼¼Êõ½«³ÉΪ¹¤³ÌʦµÄ½¹µã¾ºÕùÁ¦¡£ Ô˶¯£º¡¾¼òÃ÷½âÎö×ÏÌÙׯ԰sparkʵ¼ùÊÓÆµÈ«Ãæ½âÎöÆóÒµ¼¶´óÊý¾ÝÓ¦Óþ¯Ìè¡¿ Ëæ×ÅÆóÒµÊý×Ö»¯×ªÐͼÓËÙ£¬×ÏÌÙ×¯Ô°ÍÆ³öµÄSparkʵ¼ù½ÌѧÊÓÆµ³ÉΪ´óÊý¾Ý¿ª·¢ÕߵĽ¹µãѧϰ×ÊÔ´¡£±¾½âÎöÉî¶È²ð½âÊÓÆµÖÐÉæ¼°µÄÂþÑÜʽÅÌËã¿ò¼ÜÓ¦Óó¡¾°£¬½ÒʾÆóÒµ¼¶Êý¾Ý´¦Öóͷ£ÐèÒª¾¯ÌèµÄÐÔÄÜÆ¿¾±Óë¼¼ÊõÎóÇø£¬Îª¿ª·¢ÕßÌṩ¿É¸´ÓõÄÓÅ»¯·½°¸¡£ÆóÒµ¼¶ÏîÄ¿Çé¿ö´î½¨Êµ¼ù
ÔÚ×ÏÌÙׯ԰Sparkʵ¼ùÊÓÆµ¿ªÆª²¿ÃÅ£¬¹¤³ÌʦÑÝʾÁË»ùÓÚÔÆÔÉú¼Ü¹¹µÄ¼¯Èº²¿Êð·½°¸¡£ÊÓÆµÏêϸչʾÁËÈçºÎͨ¹ýKubernetes±àÅÅʵÏÖµ¯ÐÔ×ÊÔ´µ÷ÖΣ¬Õâ¶Ô´¦Öóͷ£º£Á¿µçÉ̽»Ò×ÈÕÖ¾¾ßÓÐÒªº¦×÷Óá£ÖµµÃ×¢ÒâµÄÊÇ£¬ÆóÒµ¼¶²¿Êð±ØÐë¹Ø×¢ÍøÂçÍØÆËÓÅ»¯£¬ÓÈÆäÊÇÔÚ´¦Öóͷ£ÊµÊ±Êý¾ÝÁ÷ʱ£¬´íÎóµÄÍøÂçÅäÖûᵼÖÂRDD£¨µ¯ÐÔÂþÑÜʽÊý¾Ý¼¯£©´«ÊäЧÂʽµµÍ50%ÒÔÉÏ¡£
½¹µãÅÌËãÄ£ÐÍʵÏÖ½âÎö
ÊÓÆµÖÐÖØµã½âÎöÁËDataFrame APIÓëSpark SQLµÄÁªºÏÓ¦ÓÃģʽ¡£Í¨¹ýÂÃÓÎÐÐÒµÓû§»Ïñ¹¹½¨°¸Àý£¬ÑÝʾÁËÈçºÎ½«ÔʼÈÕ־ת»¯Îª½á¹¹»¯Êý¾Ý×ʲú¡£¼¼ÊõÈËÔ±ÐèÒªÌØ±ð×¢ÒâÄÚ´æÖÎÀíÕ½ÂÔ£¬µ±´¦Öóͷ£PB¼¶Éç½»ÍøÂçÊý¾Ýʱ£¬²»ºÏÀíµÄÐòÁл¯·½Ê½»áʹÈÎÎñÖ´ÐÐʱ¼ä³É±¶Ôö¼Ó¡£ÈçºÎÑ¡ÔñºÏÊʵÄshuffleÕ½ÂÔ£¿ÕâÐèҪƾ¾ÝÊý¾ÝÌØÕ÷¶¯Ì¬µ÷Õû·ÖÇøËã·¨¡£
ʵʱÊý¾Ý´¦Öóͷ£¼Ü¹¹ÓÅ»¯
Õë¶ÔÎïÁªÍøÊµÊ±¼à¿Ø³¡¾°£¬½ÌѧÊÓÆµ¶Ô±ÈÁËStructured StreamingÓë¾É°æDStreamµÄЧÄܲîÒì¡£ÔÚ³µÁªÍø³¡¾°µÄѹÁ¦²âÊÔÖУ¬ÓÅ»¯ºóµÄ΢Åú´Î´¦Öóͷ£½«ÑÓ³Ù½µµÍÖÁ300ºÁÃëÒÔÄÚ¡£ÕâÀïÐèÒª¾¯ÌèÊý¾ÝÇãбÎÊÌ⣬µ±´«¸ÐÆ÷ÂþÑܲ»¾ùʱ£¬½¨Òé½ÓÄÉˮӡ»úÖÆÅäºÏ״̬´æ´¢Õ½ÂÔÀ´Æ½ºâ¸÷½Úµã¸ºÔØ¡£
ÆóÒµ¼¶Äþ¾²¼Ó¹Ì·½°¸
½ðÈÚ¼¶Ó¦ÓõÄÌØÊâÐèÇó²¿ÃÅ£¬ÊÓÆµÑÝʾÁËKerberosÈÏÖ¤¼¯³ÉÓëHDFS¼ÓÃÜ´æ´¢·½°¸¡£ÌرðÊÇÔÚ´¦Öóͷ£Óû§Òþ˽Êý¾Ýʱ£¬±ØÐëÆôÓö¯Ì¬Êý¾ÝÑÚÂ빦Ч¡£¿ª·¢ÕßÔÚ½øÐлá¼û¿ØÖÆÅäÖÃʱ£¬Òª×¢ÒâÖÆÖ¹ACL£¨»á¼û¿ØÖÆÁÐ±í£©µÄÌ«¹ýÊÚȨ£¬Õâ¿ÉÄÜÒý·¢ÑÏÖØµÄÊý¾Ýй¶·çÏÕ¡£
µäÐÍ´íÎ󳡾°Éî¶ÈÆÊÎö
½ÌѧÊÓÆµÓÃ20·ÖÖÓרÃŽâÎöÁËÊ®´ó³£¼û´íÎóģʽ£¬ÆäÖÐJVMÄÚ´æÒç³öÎÊÌâ×îΪÖÂÃü¡£ÔÚijÎïÁ÷ÆóÒµµÄʵ¼ùÖУ¬´íÎóÉèÖÃexecutor¶ÑÄÚ´æµ¼Ö¼¯ÈºÕûÌåå´»ú¡£ÊÓÆµ¸ø³öÁËGC£¨À¬»ø½ÓÄÉ£©µ÷ÓŹ«Ê½£ºÄÚ´æ·ÖÅä=·ÖÇøÊý¡Á1.5GB¡£Í¬Ê±Ç¿µ÷Òª¶¨ÆÚ¼à¿ØstorageÄÚ´æÕ¼±È£¬·ÀÖ¹»º´æÊý¾ÝÕ¼Óùý¶àÅÌËã×ÊÔ´¡£
»úеѧϰģÐͲ¿Êðʵ¼ù
ÔÚÍÆ¼öϵͳ°¸ÀýÖУ¬¹¤³ÌʦÑÝʾÁËML PipelineÓëPySparkµÄÕûºÏÓ¦Óá£Õë¶Ô¹ã¸æµã»÷ÂÊÔ¤²âÈÎÎñ£¬ÊÓÆµ½¨Òé½ÓÄÉÌØÕ÷½»Ö¯¼¼ÊõÌáÉýÄ£ÐÍAUCÖµ0.15¸öµã¡£µ«Ð辯ÌèÄ£ÐÍÆ¯ÒÆÎÊÌ⣬±ØÐëÅäÖÃ×Ô¶¯»¯Ä£ÐÍÖØÑµÁ·»úÖÆ£¬ÕâÔÚµçÉÌ´ó´ÙÆÚ¼äÓÈÎªÖØÒª¡£Õ¹Ê¾ÁËÈçºÎͨ¹ýAlluxio¼ÓËÙÌØÕ÷¶ÁÈ¡£¬Ê¹Åú´¦Öóͷ£ÈÎÎñºÄʱÌÔÌ60%¡£
×ÏÌÙׯ԰Sparkʵ¼ùÊÓÆµÏµÍ³ÐÔµØÕ¹Ê¾ÁËÆóÒµ¼¶Ó¦Óõļ¼ÊõʵÏÖ·¾¶£¬´Ó»ù´¡Çé¿öÅäÖõ½¸ß½×Ä£ÐͲ¿Êð²ã²ãµÝ½ø¡£¿ª·¢ÕßÓ¦ÖØµã¹Ø×¢ÊÓÆµÖÐÖØ¸´Ç¿µ÷µÄ¼¯Èºµ÷ÓŹæÔòºÍÊý¾ÝÄþ¾²¹æ·¶£¬Í¬Ê±¾¯ÌèÒþ²ØµÄÐÔÄÜÏÝÚå¡£ÕÆÎÕÕâЩ½¹µãÒªµã£¬²ÅÆøÕæÕý·¢»ÓSpark¿ò¼ÜÔÚÆóÒµÊý×Ö»¯×ªÐÍÖеÄÕ½ÂÔ¼ÛÖµ¡£