ÆóÒµÊý¾Ý´¦Öóͷ£µÄÏÖʵÌôÕ½ÓëÍ»ÆÆÆ«Ïò
ÔÚ½ðÈÚ·ç¿ØºÍÖÇÄÜÍÆ¼öµÈÆóÒµ³¡¾°ÖУ¬º£Á¿Êý¾Ý´¦Öóͷ£ÃæÁÙÏìÓ¦ÑÓʱÓëÅÌËã׼ȷ¶ÈµÄË«ÖØÌôÕ½¡£×ÏÌÙׯ԰sparkʵ¼ùÊÓÆµµÚ46¹ØÊ×´ÎÅû¶µÄʵʱ·´Ú²Æ°¸ÀýÏÔʾ£¬»ùÓÚSpark Structured Streaming¹¹½¨µÄ»ìÏý´¦Öóͷ£¼Ü¹¹£¬ÓÐÓýâ¾öÁ˹ŰåÅú´¦Öóͷ£ÏµÍ³µÄ·ÖÖÓ¼¶ÑÓ³ÙÎÊÌâ¡£ÌØÊâÊÇÔÚDAG£¨ÓÐÏòÎÞ»·Í¼£©µ÷ÀíÓÅ»¯·½Ã棬ͨ¹ý¶¯Ì¬×ÊÔ´·ÖÅÉ»úÖÆ½«Êý¾Ý´¦Öóͷ£Ð§ÂÊÌáÉý47%£¬¸ÃÁ¢Òìµã»ñµÃIBMÊÖÒÕÍŶӵÄÏÖ³¡ÑéÖ¤¡£
×ÏÌÙׯ԰ÊÓÆµÄÚÈݼܹ¹ÆÊÎö
ÕâÌ×°üÀ¨46¸öÊÖÒÕÄ£¿éµÄϵÁпγ̣¬½ÓÄÉ"ÀíÂÛ-ʵÑé-µ÷ÓÅ"µÄÈý¶Îʽ½Ìѧ½á¹¹¡£ÔÚµÚ5ÕÂSpark CoreÔÀíÆÊÎöÖУ¬ÖصãÑÝʾÁËRDDµ¯ÐÔÂþÑÜʽÊý¾Ý¼¯µÄÈÝ´í»úÖÆ£¬¸¨ÒÔÒ½ÁÆÓ°ÏñÊý¾Ý´¦Öóͷ£³¡¾°¾ÙÐÐÑéÖ¤¡£ÖµµÃ×¢ÖØµÄÊǵÚ32¹ØÒýÈëµÄShuffleÓÅ»¯¼Æ»®£¬Í¨¹ýµ÷½âspark.sql.shuffle.partitions²ÎÊýÖµ£¬Àֳɽ«µçÉÌÍÆ¼öϵͳµÄÅÌËãºÄʱ´Ó18·ÖÖÓѹËõÖÁ6·ÖÖÓ£¬ÕâÖÖʵսÉèÖü¼ÇɹØÓÚ½ðÈÚ·ç¿ØÏµÍ³µÄʵʱ¾öÒé¾ßÓÐÖ÷ÒªÒâÒå¡£
ÆóÒµ¼¶Spark¼¯Èº°²ÅÅÒªº¦ÒªËØ
ÔõÑù¹¹½¨¸ß¿ÉÓõÄÉú²ú¼¶Spark¼¯Èº£¿µÚ46¹ØÏêϸ±ÈÕÕÁËYARNÓëKubernetesÁ½ÖÖ×ÊÔ´µ÷Àí¿ò¼ÜµÄ²î±ð¡£²âÊÔÊý¾ÝÏÔʾ£¬ÔÚÏàͬӲ¼þÉèÖÃÏ£¬K8s¼Æ»®µÄʹÃü»Ö¸´ËÙÂÊ±È¹Å°å¼Æ»®¿ì3.8±¶¡£ÊÓÆµÖÐÌØÊâÑÝʾÁ˶¯Ì¬Executor·ÖÅÉ»úÖÆ£¬Í¨¹ýÉèÖÃspark.dynamicAllocation.enabled=true²ÎÊý£¬ÀÖ³ÉÓ¦¶ÔÁË֤ȯÉúÒâϵͳµÄÁ÷Á¿Âö³å³¡¾°£¬ÕâÏîÉèÖü¼ÇÉÒÑÔÚº£ÄÚij´óÐÍÖ§¸¶Æ½Ì¨»ñµÃÏÖʵӦÓÃÑéÖ¤¡£
»úеѧϰ³¡¾°ÏµÄSparkÓÅ»¯Êµ¼ù
ÔÚÉî¶Èѧϰģ×ÓѵÁ·³¡¾°ÖУ¬SparkÓëTensorFlowµÄÐͬÊÂÈËÇéÁÙÐòÁл¯Ð§ÂÊÆ¿¾±¡£×ÏÌÙׯ԰¿Î³ÌÌá³öµÄÄ£×Ó·ÖÆ¬²¢Ðмƻ®£¬Í¨¹ýPetastormÊý¾ÝÃûÌÃת»»½«ÌØÕ÷´¦Öóͷ£ËÙÂÊÌáÉý62%¡£µÚ46¹ØÕ¹Ê¾µÄÂþÑÜʽ³¬²Îµ÷Ó۸ÀýÖУ¬½ÓÄÉSpark MLlibÓëHyperopt×éºÏ¿ò¼Ü£¬Ê¹Ä³ÒøÐз´Ï´Ç®Ä£×ÓµÄF1Öµ´Ó0.81ÌáÉýÖÁ0.89£¬ÕâÖÖÁ¢Òì¼Æ»®ÎªºóÐø¿Î³ÌÖеÄÁª°îѧϰÊÖÒÕÂñÏ·ü±Ê¡£
ʵʱÊý²Ö½¨ÉèµÄ½¹µãÊÖÒÕÍ»ÆÆ
ÔõÑùʵÏÖÃë¼¶ÑÓ³ÙµÄʵʱÊý¾Ý¿ÍÕ»£¿¿Î³ÌµÚ40-46¹Ø¹¹½¨µÄÍêÕû½â¾ö¼Æ»®ÖµµÃ¹Ø×¢¡£Í¨¹ýDelta LakeµÄÊÂÎñÈÕÖ¾»úÖÆ°ü¹ÜÊý¾ÝÒ»ÖÂÐÔ£¬ÅäºÏSpark Structured StreamingµÄ΢Åú´¦Öóͷ£Ä£Ê½£¬ÔÚµçÐÅÐÅÁîÊý¾ÝÆÊÎö³¡¾°Öеִï80000Ìõ/ÃëµÄ´¦Öóͷ£ÍÌÍÂÁ¿¡£ÌØÊâÊÇÔÚµÚ46¹Ø×îÐÂÄÚÈÝÖУ¬Ê״ιûÕæÁ˶˵½¶ËExactly-OnceÓïÒåµÄʵÏּƻ®£¬¸ÃÊÖÒÕÒÑÓ¦ÓÃÓÚijÎïÁ÷ÆóÒµµÄÈ«Çò¶©µ¥×·×Ùϵͳ¡£
ÆóÒµ¼¶Êý¾ÝÖÎÀíµÄÍêÕû½â¾ö¼Æ»®
Êý¾ÝÖÎÀíÊÇÆóÒµ´óÊý¾ÝÂ䵨µÄ±ÚÀÝ¡£×ÏÌÙׯ԰½Ì³ÌÔÚµÚ46¹Ø¼¯³ÉÑÝʾÁËÊý¾ÝѪԵ׷×Ù¡¢ÖÊÁ¿¼à¿ØÓëȨÏÞÖÎÀíÈý´óÄ£¿é¡£»ùÓÚSpark SQLÀ©Õö¿ª·¢µÄÊý¾ÝѪԵÆÊÎö×é¼þ£¬¿É×Ô¶¯ÌìÉúÁè¼Ý200¸ö½ÚµãµÄÒÀÀµÍ¼Æ×¡£ÔÚÊÓÆµÕ¹Ê¾µÄijÁãÊÛÆóÒµ°¸ÀýÖУ¬Í¨¹ýColumn-levelȨÏÞ¿ØÖƽ«Êý¾Ý×ß©Σº¦½µµÍ92%£¬ÕâÖÖϵͳ¼¶½â¾ö¼Æ»®Îª¼´½«µ½À´µÄÊý¾ÝÇå¾²·¨ÌṩÁËÊÖÒÕ×¼±¸¡£
´ÓµÚ46¹ØÊÖÒÕÍ»ÆÆ¿ÉÒÔ¿´³ö£¬×ÏÌÙׯ԰sparkʵ¼ùÊÓÆµÍ¨¹ýÕæÊµ³¡¾°²ð½â£¬ÍêÕû·ºÆðÁËÆóÒµ¼¶´óÊý¾ÝÓ¦ÓõÄÊÖÒÕÑݽøÂ·¾¶¡£ÎÞÂÛÊǽ¹µãÔÀíÆÊÎöÕÕ¾ÉK8s¼¯Èº°²ÅÅ£¬¶¼ÌåÏÖÁËÀíÂÛÓëʵ¼ùµÄ¸ß¶ÈÈںϡ£¹ØÓÚØ½´ýÉý¼¶Êý¾Ý´¦Öóͷ£¼Ü¹¹µÄÆóÒµ¶øÑÔ£¬ÕâÌ׿γÌÌṩµÄshuffleÓÅ»¯¡¢ÊµÊ±ÅÌËã¼Æ»®ÒÔ¼°Êý¾ÝÖÎÀí¿ò¼Ü£¬ÕýÔÚÖØÐ½ç˵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¿ò¼ÜÔÚÆóÒµÊý×Ö»¯×ªÐÍÖеÄÕ½ÂÔ¼ÛÖµ¡£