Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
»ùÓÚ Docker ¿ìËÙ²¿Êð¶àÐèÇó Spark ×Ô¶¯»¯²âÊÔ»·¾³
 
  1846  次浏览      28
 2018-11-28
 

 

±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚCSDN£¬ÎÄÕÂÖ÷Òª½éÉÜ»ùÓÚSpark Cluster »·¾³ÒÔ¼°ÏàÓ¦µÄ Client ¶Ë²âÊÔ»·¾³µÄ²¿Êð½ø¶øÊµÏÖ¿ìËÙ×Ô¶¯»¯²âÊÔµÈÏã¹½ÄÇÄÚÈÝ¡£

ÒýÑÔ

ÔÚ½øÐÐÊý¾Ý·ÖÎöʱ£¬Spark Ô½À´Ô½¹ã·ºµÄ±»Ê¹Óá£ÔÚ²âÊÔÐèÇóÔ½À´Ô½¶à¡¢²âÊÔÓÃÀýÊýÁ¿Ô½À´Ô½´óµÄÇé¿öÏ£¬Äܹ»¸ù¾ÝÐèÇó¿ìËÙ×Ô¶¯»¯²¿Êð Spark »·¾³¡¢¿ìËÙÍê³ÉËùÓвâÊÔÔ½À´Ô½ÖØÒª¡£

±¾ÎÄ»ùÓÚ Docker¡¢Jenkins¡¢Apache Ant¡¢Apache Tomcat¡¢Git¡¢Shell µÈ¼¼Êõ»ò¹¤¾ß£¬¸ù¾ÝÓû§¶Ô Spark °æ±¾¡¢Scala °æ±¾¡¢JDK °æ±¾¡¢²âÊÔ·¶Î§¡¢²âÊÔ°æ±¾µÈÐèÇóµÄ²»Í¬£¬¿ìËÙÍê³É Spark Cluster »·¾³ÒÔ¼°ÏàÓ¦µÄ Client ¶Ë²âÊÔ»·¾³µÄ²¿Ê𣬽ø¶øÊµÏÖ¿ìËÙ×Ô¶¯»¯²âÊÔ¡¢½á¹û³Ê±¨£¬´Ó¶øÌá¸ß¿ª·¢²âÊÔЧÂÊ¡£

Docker µÈÏà¹Ø¼¼ÊõºÍ¹¤¾ß½éÉÜ

Docker ½éÉÜ

Docker ÊÇÊÀ½çÁìÏȵĿªÔ´Ó¦ÓÃÈÝÆ÷ÒýÇæ£¬ÌṩÁËÒ»¸ö¿É¹©¿ª·¢Õß´ò°üÆäÓ¦ÓõĿÉÒÆÖ²ÈÝÆ÷¡£¿ª·¢Õß¿ÉÒÔʹÓà Docker À´Ïû³ýºÏ×÷±àÂëʱËù³öÏÖµÄ"ÎҵĻúÆ÷"ÎÊÌ⣬ÔËÓªÉÌ¿ÉÒÔʹÓà Docker À´ÔËÐк͹ÜÀí²»Í¬ÈÝÆ÷ÖеÄÓ¦Óã¬ÆóÒµ¿ÉÒÔʹÓà Docker ¸ü¼Ó¿ìËÙ°²È«µÄ½¨Á¢Ãô½ÝÈí¼þ½»¸¶¹ÜµÀ¡£Docker Ö÷Òª°üÀ¨ËIJ¿·Ö£ºDocker Client¡¢Docker Image¡¢Docker Daemon¡¢Docker Container¡£

Dockerfile ÊÇΪÁË¿ìËÙ¹¹½¨ Docker Image Éè¼ÆµÄ£¬ÊÇÒ»¸ö°üº¬ÁË¿ÉÓÃÀ´´´½¨¾µÏñÃüÁîµÄ½Å±¾¡£µ±Ö´ÐÐ docker build ÃüÁîʱ£¬Docker ¿ÉÒÔͨ¹ý´Ó Dockerfile ÖÐ×Ô¶¯¶ÁȡָÁîÀ´´´½¨¾µÏñ¡£

Docker Compose ÊÇÒ»¸öÓÃÀ´¶¨ÒåºÍÔËÐжàÈÝÆ÷¸´ÔÓÓ¦ÓõŤ¾ß¡£Äã¿ÉÒÔʹÓÃÒ»¸ö YAML ÎļþÀ´ÅäÖÃÄãµÄÓ¦ÓúͷþÎñ£¬È»ºó½öʹÓÃÒ»ÌõÃüÁî¾Í¿ÉÒÔÆô¶¯ÒÑÅäÖõÄËùÓзþÎñ¡£

±¾ÏµÍ³ÖÐÎÒÃÇʹÓà Docker À´¿ìËÙ²¿Êð²»Í¬ Spark °æ±¾¡¢Scala °æ±¾¡¢JDK °æ±¾µÄ Spark Cluster Server ºÍ Test ¿Í»§¶Ë£¬Í¨¹ý Docker Compose Æô¶¯ËùÐèÒªµÄ·þÎñ¡£

Spark ½éÉÜ

Spark ÊÇÒ»ÖÖÓë Hadoop ÏàËÆµÄרÃÅΪ´óÊý¾Ý´¦ÀíÉè¼ÆµÄ¿ªÔ´¼¯Èº¼ÆËã»·¾³£¬Ê¹Óà Scala ÓïÑÔʵÏÖ£¬ÒÔͨÓá¢Ò×ÓÃΪĿ±ê¡£Spark µÄÖмäÊä³ö½á¹û¿ÉÒÔ±£´æÔÚÄÚ´æÖУ¬²»±ØÖØÐ¶Áд HDFS£¬´Ó¶øÊ¹Æä¾ßÓÐ Hadoop MapReduce ËùûÓеÄÓŵ㣬¸üÊÊÓÃÓÚÊý¾ÝÍÚ¾òÓë»úÆ÷ѧϰµÈËã·¨¡£

±¾ÏµÍ³ÖÐÎÒÃǽ«²»Í¬°æ±¾µÄ Spark ²¿ÊðÔÚ Docker ÖУ¬Í¨¹ý Dockerfile ¿ØÖÆ Spark µÄ°æ±¾Ñ¡Ôñ£¬´Ó¶ø¿ìËÙ²¿Êð²»Í¬°æ±¾ Spark Cluster Server¡£

Jenkins ½éÉÜ

Jenkins ÊÇÒ»ÖÖ¿ªÔ´µÄ³ÖÐø¼¯³É¹¤¾ß£¬Ìṩһ¸ö¿ª·ÅÒ×ÓÃµÄÆ½Ì¨ÓÃÓÚ¼à¿Ø³ÖÐøÖØ¸´¹¤×÷£¬Ê¹µÃÎÒÃÇ¿ÉÒÔ½øÐгÖÐøµÄÈí¼þ°æ±¾·¢²¼ºÍ²âÊÔ¡£

±¾ÏµÍ³ÖÐÎÒÃÇʹÓà Jenkins ´´½¨ job À´¿ØÖƲâÊÔµÄÆô¶¯ÓëÍ£Ö¹£¬Ò²¿ÉÒÔ½øÐÐÖÜÆÚÐÔÈÎÎñ¡£

Git ½éÉÜ

Git ÊÇÒ»¸öÃâ·Ñ¿ªÔ´µÄ·Ö²¼Ê½°æ±¾¿ØÖÆÏµÍ³£¬¿ÉÒÔ¸ßЧµØ´¦Àí¸÷ÖÖ´óСÏîÄ¿¡£Git Ò×ÓÚѧϰ£¬ÐÔÄܸßЧ£¬ÔÚÁ®¼Û±¾µØ·ÖÖ§¡¢·½±ãµÄÖÐ×ªÇø¡¢¶à¹¤×÷Á÷µÈ·½Ãæ¶¼³¬Ô½ÁË´«Í³µÄ SCM ¹¤¾ß£¬Èç Subversion£¬Perforce£¬CVS£¬ClearCase µÈ¡£

±¾ÏµÍ³ÖÐʹÓà Git ½øÐдúÂëµÄά»¤¼°ÊµÊ±¸üС£

Apache Ant ½éÉÜ

Apache Ant ÊÇÒ»ÖÖÓÃÓÚÔÚ Java »·¾³Ï½øÐÐÈí¼þ¿ª·¢µÄ×Ô¶¯»¯¹¤¾ß£¬¿ÉÒÔ½øÐбàÒë¡¢²âÊÔ¡¢²¿ÊðµÈ²½Ö裬Æä¹¹½¨ÎļþĬÈÏÃûΪ build.xml£¬Ant ¾ßÓÐºÜºÃµÄ¿çÆ½Ì¨ÐÔÇÒ²Ù×÷¼òµ¥¡£

±¾ÏµÍ³ÖÐÎÒÃÇʹÓà Ant ½øÐдúÂëµÄ±àÒë¡¢²âÊÔÒÔ¼°²âÊÔ±¨¸æµÄÉú³É¡£

Apache Tomcat ½éÉÜ

Apache Tomcat ÊÇÒ»¸ö¿ªÔ´µÄÇáÁ¿¼¶ Web Ó¦ÓÃÈí¼þÈÝÆ÷£¬¿ÉÒÔÓÃÀ´ÏìÓ¦ HTML Ò³ÃæµÄ·ÃÎÊÇëÇó£¬ÔÚÖÐСÐÍϵͳºÍ²¢·¢Óû§·ÃÎʳ¡¾°Öб»¹ã·ºÊ¹Óá£

±¾ÏµÍ³ÖÐÎÒÃÇʹÓà Tomcat À´Õ¹ÏÖ²âÊÔ±¨¸æ£¨¼´²âÊÔ½á¹û£©£¬Ê¹µÃ¶àÓû§¿ÉÒÔ²¢·¢·ÃÎʲâÊÔ±¨¸æ¡£

Shell ½éÉÜ

Shell ½Å±¾ÊÇÔÚ Linux/Unix ϵͳÖÐʹÓõÄÒ»ÖÖÀàËÆÓÚ Windows/Dos Åú´¦ÀíµÄ½Å±¾£¬¹¦ÄÜÓë.bat ÀàËÆ¡£Shell ÊÇÒ»ÖÖÃüÁîÓïÑÔ£¬¿ÉÒÔ»¥¶¯Ê½µÄÖ´ÐÐÓû§ÃüÁ½«¸÷ÀàÃüÁîÒÀ¾ÝÂß¼­¹ØÏµ·ÅÈëÎļþÖпÉÒÔÒ»´ÎÐÔÖ´ÐУ¬ÊÇ Linux ϵͳϹ㷺ʹÓõÄÒ»Öֽű¾¡£

±¾ÎÄÖÐÎÒÃÇʹÓõÄϵͳÊÇÖ§³Ö Docker µÄ Linux Ubuntu 14.04£¬ÒÀ¿¿ Shell ½Å±¾½«¸÷¸ö²½ÖèÁªÏµÆðÀ´×é³ÉÒ»¸öÍêÕûµÄÁ÷³Ì¡£

±¾ÎÄÖ÷Òª´Ó×Ô¶¯»¯µÄϵͳÕûÌå¹¹¼ÜÒÔ¼°»·¾³²¿ÊðÁ÷³Ì·½Ãæ½øÐнéÉÜ£¬¶óÆäÖØµã£¬ÒÔÇó¸ø¶ÁÕßÌṩһ¸ö²¿Êð´ËÀà»·¾³»òϵͳµÄ²Ù×÷˼·ºÍÁ÷³Ì£¬¶ÔÓÚÌØ±ðϸ½Ú¡¢ÌØÊâ»òÕß¹ýÓÚͨÓõIJ¿·Ö²»×öÏê½â£¬ÈçһЩÈí¼þµÄ°²×°½Ì³ÌÔÚÍøÂçÉÏËæ´¦¿É¼û£¬±¾ÎIJ»ÔÙ׸Êö¡£ÏÂÃæÕ½ÚÊ×ÏȽéÉÜÕû¸öϵͳ¹¹¼Ü£¬È»ºó¶Ôϵͳ¹¹¼ÜÖи÷¸ö²¿·Ö½øÐоßÌå½éÉÜ£¬×îºó½øÐÐ×ܽᡣ

»·¾³²¿Êð²âÊÔÕûÌå¼Ü¹¹

±¾ÕÂÖ÷Òª½éÉÜ×Ô¶¯»¯²âÊÔϵͳµÄÕûÌå¿ò¼ÜºÍÁ÷³Ì£¬Èçͼ 1 Ëùʾ¡£ÎÒÃÇͨ¹ýÔÚ Jenkins Server ÉÏ´´½¨ Job ×÷ΪÕû¸öϵͳµÄ²âÊÔÈë¿Ú£¬Jenkins ·¢Æð²âÊÔÇëÇóÖ®ºó£¬½ÓÏÂÀ´»á½øÐл·¾³²¿Ê𣨼´Í¼ÖÐ Deploy ½×¶Î£©ºÍ²âÊÔ£¨¼´Í¼ÖÐ Test ½×¶Î£©¡£»·¾³²¿Êð°üÀ¨Í¨¹ý Docker ²¿Êð Spark Cluster ºÍ Test Client£¬¼´²âÊÔËùÐèÒªµÄ·þÎñÆ÷¶ËºÍ¿Í»§¶Ë¡£»·¾³²¿ÊðÍê±Ïºó±ã¿É½øÐвâÊÔ£¬´ÓÖ¸¶¨µØ·½»ñÈ¡²âÊÔËùÐèÒªµÄ Build ºÍ Code£¬Code ¿ÉÒÔͨ¹ý Git ÔÚ±¾»úÉÏά»¤¸üУ¬Í¨¹ý¶Ô´úÂë½øÐвâÊÔËù±ØÐëµÄһЩÅäÖã¬È»ºó±ã¿É½øÐбàÒë¡¢²âÊÔ£¬²âÊÔÖ´ÐÐÍê±Ïºó¶ÔËùÉú³ÉµÄ xml Îļþ½øÐÐÉú³É±¨¸æ£¨HTML ÎļþÉú³É£©£¬´Ë´¦±àÒë¡¢²âÊÔ¡¢report Éú³É¾ùÓÉ Ant ʵÏÖ£¬ËùÉú³ÉµÄ report չʾÓÉ Tomcat ʵÏÖ£¬×îºóͨ¹ý Linux ϵͳµÄÓʼþ¹¦ÄܸøÖ¸¶¨ÓÊÏä·¢ËÍÓʼþÍê³ÉÕû¸ö²âÊÔÁ÷³Ì¡£

ͼ 1. ×Ô¶¯»¯²âÊÔϵͳÕûÌå¼Ü¹¹

»ùÓÚ Docker µÄ Spark »·¾³²¿Êð²âÊÔ

±¾Õ½«¸ù¾ÝÉÏÒ»Õ½ÚÖеÄ×Ô¶¯»¯ÏµÍ³ÕûÌå¼Ü¹¹¶ÔÁ÷³ÌÖÐËùÉæ¼°µÄ¸÷²¿·Ö½øÐоßÌå½éÉÜ£¬Öصã½éÉÜ×Ô¶¯»¯ÏµÍ³ÖлùÓÚ Docker Ëù²¿ÊðµÄ Spark Cluster Server ¶ËºÍ Client ¶Ë¡£

Jenkins ÈÎÎñ

²âÊÔÇëÇóÓÉ Jenkins ·¢Æð£¬°²×° Jenkins ²¢Ð½¨ Remote SSH ÈÎÎñºó£¬ÔÚ Script Ö´Ðд°¿ÚÖ¸¶¨ÅäÖÃÐÅÏ¢£¬Èçͼ 2 Ëùʾ£¬°üÀ¨ build_num¡¢scope¡¢sparkVersion¡¢javaVersion¡¢model£¬·Ö±ð±íʾҪ½øÐвâÊ﵀ build °æ±¾£¨ÒÔ jar °üµÄÐÎʽ´æÔÚ£©£¬²âÊԵķ¶Î§£¨Regression¡¢Smoke¡¢MiniSmoke Ëù¶¨Òå case µÄ·¶Î§ÒÀ´Î¼õС£©£¬Spark °æ±¾£¨Èç 1.6.0¡¢1.6.2¡¢2.0.1¡¢2.1.1 µÈ£¬scala °æ±¾ÓÉ spark ¾ö¶¨£©£¬Java °æ±¾£¨Èç openjdk8¡¢ibmjdk8 µÈ£©£¬Ä£¿é£¨´úÂëÖÐËù°üº¬µÄÒª²âÊÔµÄÄ£¿é£©¡£ÕâЩÅäÖÃÐÅϢͨ¹ýλÓÚÔ¶³Ì»úÆ÷É쵀 Shell ½Å±¾ getPropsFromJenkins.sh Ï·¢µ½»úÆ÷ÉϵÄÅäÖÃÎļþÖÐÒÔ±ã½øÐкóÐø²¿ÊðºÍ²âÊÔÁ÷³Ì¡£»úÆ÷É쵀 buildScope.props ºÍ model.props ÎļþÓÃÓÚ´æ´¢´Ó Jenkins ÉÏ»ñÈ¡µÄÐÅÏ¢£¬ºóÐøËùÓÐÐèÒªÕâЩÐÅÏ¢µÄ²Ù×÷¾ù´ÓÕâÁ½¸öÎļþÖжÁÈ¡¡£ÐèÒªÌØ±ð˵Ã÷µÄÊÇ model µÄ¸÷Ä£¿é¼ä¶ººÅ±íʾ´®ÐÐÖ´ÐУ¬·ÖºÅ±íʾ²¢ÐÐÖ´ÐУ¬´®ÐÐÖ»ÐèÒªÆô¶¯Ò»¸ö Client ¶Ë¼´¿É£¬²¢ÐÐÐèÒªÆô¶¯¶à¸ö Client ¶Ë²¢·¢Ö´ÐУ¬Õⲿ·Ö½«ÔÚºóÐøÕ½ھßÌå½éÉÜ¡£

ͼ 2. Jenkins ÈÎÎñÅäÖÃ

Spark Cluster

Deploy ½×¶Î½«¸ù¾Ý Jenkins Ï·¢µÄÅäÖÃÐÅÏ¢½øÐÐ Docker Spark Cluster ºÍ Client µÄ²¿Êð¡£

ÓÃÓÚ´´½¨ Docker Spark Cluster ¾µÏñ¼°Æô¶¯ Container µÄ½Å±¾ºÜ¶à£¬´úÂëÄÚÈÝÒ²¹ýÓÚ¸´ÔÓ£¬±¾½ÚÄÑÒÔÒ»Ò»ÍêÈ«½éÉÜ£¬ÒÀ¾ÉÒÀ¾Ý֮ǰԼ¶¨¶ÔÖØµã²¿·Ö½øÐнéÉÜ£¬ÒÔΪ¶ÁÕßÌṩ˼·£¬¾ßÌåϸ½Ú¿Éͨ¹ýÍøÂç»òÕ߲ο¼×ÊÁϽøÒ»²½ÉîÈëÑо¿¡£

ÿ¸ö°æ±¾µÄ Spark Docker ½Å±¾ÎÒÃǶ¼·ÅÔÚÒ»¸ö¶ÀÁ¢Îļþ¼ÐÖУ¬°´ÕÕ"spark-$spark_version-$java_version"µÄ·½Ê½ÃüÃû¡£ÒÔ spark-2.1.1-openjdk-8 ΪÀý£¬¸ÃÎļþ¼Ð½á¹¹Èçͼ 3 Ëùʾ£¬Îļþ¼ÐÖÐËùº¬ xml ¸ñʽÎļþÓëʵ¼Ê°²×°µÄ Spark »·¾³¶ÔÓ¦ÎļþÀàËÆ£¬Ö»ÊÇÔÚ Docker ÖÐÎÒÃÇʹÓà namenode ×÷Ϊ container µÄÃû×Ö£¬core-site.xml ÖÐҪʹÓÃ"hdfs://namenode:9000"Ìæ´úʵ¼Ê»·¾³ÖеÄ"fs.default.name"¡£yarn-site.xml ÖпÉÒÔʹÓÃ"yarn.nodemanager.resource.memory-mb"¶Ô YARN ¿ÉʹÓõÄÎïÀíÄÚ´æ×ÜÁ¿½øÐпØÖÆ£¬Ä¬ÈÏ 8192M£¬±¾ÏµÍ³ÎÒÃÇΪÁ˲¢ÐÐÁ½¸ö Client ¶Ëͬʱ²âÊÔÉèÖÃΪ 65536M¡£

ͼ 3. spark-2.1.1-openjdk-8 Îļþ¼Ð½á¹¹

yarn-cluster Îļþ¼ÐÏ嵀 Dockerfile ÎļþÊÇÕû¸ö cluster µÄºËÐÄ£¬ÓÃÓÚ´´½¨ Spark Cluster ¾µÏñ£¬ÄÚÈÝÖ÷Òª°üÀ¨ÅäÖà SSH ÎÞÃÜÂë·ÃÎÊ¡¢°²×° Java ²¢ÅäÖû·¾³±äÁ¿¡¢ÏÂÔØ°²×° Hadoop¡¢¼ÓÔØ xml Îļþ£¨core-site.xml¡¢hdfs-site.xml¡¢mapred-site.xml¡¢yarn-site.xml£©¡¢ÏÂÔØ°²×° Spark¡¢¿ª·Å Spark ÔËÐÐËùÐè¶Ë¿ÚµÈ¡£Èçͼ 4 ËùʾΪ Dockerfile ²¿·ÖÄÚÈÝ¡£

ͼ 4. Dockerfile Ƭ¶Î

bootstrap.sh ÎļþÖ÷ÒªÓÃÓÚÔÚÆô¶¯ container ʱ×Ô¶¯Æô¶¯¶ÔÓ¦µÄ Spark ½ø³Ì£¬Èç start-dfs.sh¡¢start-yarn.sh¡£ÆäÖ÷ÒªÄÚÈÝÈçͼ 5 Ëùʾ¡£

ͼ 5. bootstrap.sh Ƭ¶Î

ÎÒÃÇʹÓà docker-compose Æô¶¯ container À´±£Ö¤Õû¸ö Spark Cluster ¹¤×÷Ϊһ¸öÕûÌ壬ÆäÖ÷ҪʹÓÃÎļþΪ docker-compose.yml£¬Èçͼ 6 Ëùʾ¡£Í¼Öл¹¿ÉÒÔÌí¼ÓÆäËû½Úµã£¬±¾´¦ÎªÁ˼ò»¯Ö»Ê¹Óà namenode Ò»¸ö½Úµã¡£

ͼ 6. docker-compose.yml Ƭ¶Î

Shell ½Å±¾´´½¨ Spark Cluster ¾µÏñÒÔ¼°Æô¶¯ container µÄÃüÁîÈçͼ 7 Ëùʾ£¬$spark_version ºÍ$java_version À´¾ö¶¨Çл»µ½¶ÔÓ¦µÄ Spark Îļþ¼Ð½øÐÐij¸ö°æ±¾µÄ´´½¨£¬Ê¹ÓÃ"docker build ¨Ct spark-2.1.1 ."ÃüÁî´´½¨ spark-2.1.1 µÄ¾µÏñ£¬Ö´ÐÐ"docker-compose up -d"ÓÃÓÚÔÚºǫ́Æô¶¯ spark-2.1.1 µÄ container¡£

ͼ 7. Spark Cluster ¾µÏñºÍÆô¶¯½Å±¾

Test Client

Client ¶ËÖ»ÐèÒªÆô¶¯Ò»¸öϵͳΪ Linux¡¢´øÓÐËùÐèÈí¼þµÄ Container£¬ËùÒÔÓë Server ¶ËÏà±È Client ¶ËµÄ Docker ½Å±¾Òª¼òµ¥µÄ¶à£¬Ö»ÐèÒªÒ»¸ö Dockerfile ÎļþÓÃÓÚ´´½¨ Client ¾µÏñ¼´¿É£¬Õë¶Ô¸÷ÖÖ Spark °æ±¾µÄ Dockerfile Îļþ°´ÕÕ"dockerfile-$spark_version-$java_version"µÄ·½Ê½ÃüÃû´æ·Å£¬Ö´ÐÐʱ¸ù¾Ý Spark °æ±¾ÐÅÏ¢½«¶ÔÓ¦µÄÎļþ¿½±´³É dockerfile µÄÎļþÀ´´´½¨¾µÏñ£¬ÎļþÄÚÈݰüÀ¨°²×° JDK¡¢Scala¡¢Spark¡¢Ant µÈ¡£´Ë´¦ÈÔÈ»ÒÔ Spark-2.1.1 ΪÀý£¬Èçͼ 8 Ëùʾ£¬Ôڴ˽ű¾ÖÐÎÒÃÇÏÂÔØ°²×°ÁË scala-2.11.8¡¢spark-2.1.1-bin-hadoop2.7 ÒÔ¼° Ant£¬²¢ÇÒÅäÖÃÁ˲¿·ÖËùÐèÒªµÄ»·¾³±äÁ¿¡£

ͼ 8. Client Dockerfile ½Å±¾

Client ¶Ë¾µÏñµÄ´´½¨ÃüÁîΪ"docker build -t client:v1 ."£¬ÎªÁËʹµÃ Client ¶ËºÍ Server ¶ËµÄͨПü¼Óͨ³©¿ÉÒÔͨ¹ýÔÚÉÏ½Ú docker-compose.yml ÖмÓÈë Client ¡£Èçͼ 9 Ëùʾ£¬client1 ±íʾÎÒÃÇÖ»Æô¶¯Ò»¸ö Client ¶Ë£¬Ã»Óв¢ÐС£Èç¹ûÐèÒªÆô¶¯Á½¸ö Client ¶Ë²¢ÐУ¬Ôڽű¾ºó¼ÌÐøÌí¼Ó client2 ¶ÔÓ¦´úÂë¼´¿É£¬Óë client1 ÀàËÆ£¬client ÊýÄ¿µÄ¿ØÖÆÓÉ shell ½Å±¾Í¨¹ý model ÐÅϢȷ¶¨¡£

ͼ 9. Ìí¼Ó client µÄ docker-compose.yml

ÔÚ Spark Cluster ºÍ Client ¾µÏñ´´½¨Íê³Éºó£¬Í¨¹ý"docker-compose up -d"Æô¶¯¶ÔÓ¦µÄ Container£¬Container ÔËÐÐÇé¿öÈçͼ 10 Ëùʾ¡£

ͼ 10. namenode ºÍ client container

Test

»·¾³²¿ÊðÍê±Ïºó½ÓÏÂÀ´¾ÍÊÇÒªÀûÓôúÂë½øÐÐʵ¼ÊµÄ²âÊÔ£¬¼´ Test ½×¶Î¡£

Test Configuration Ö÷ÒªÊÇÀûÓà Jenkins ÉÏÖ¸¶¨µÄÅäÖÃÐÅÏ¢¶Ô´úÂë½øÐÐÌØ¶¨µÄÅäÖ㬱ÈÈçͨ¹ý wget ÃüÁî´ÓÔ¶¶ËÏÂÔØ Jenkins ÉÏËùÖ¸¶¨µÄ build °æ±¾£¬ÔÚ´Ë build É϶ԴúÂë½øÐбàÒëµÈ¡£±¾»úÉÏͨ¹ý Git ά»¤Ò»Ì×´úÂ룬²¢ÇÒ½øÐÐʵʱ¸üÐÂÒÔ»ñÈ¡×îдúÂë¡£ÈçÉϽÚͼ 10 Ëùʾ Client Æô¶¯Ê±ÒÑͨ¹ý volumes ÃüÁ±¾»úµÄ dockerShare Îļþ¼Ð¹²Ïí½ø Client µÄ docker container ÄÚ²¿£¬ÒÔ±ãÓÚÔÚ docker ÄÚ²¿½øÐбàÒë²âÊÔ¡£

Test ºÍ Report Ϊ²âÊÔµÄÖ÷Ìâ½×¶Î£¬ÒÀ¾Ý´úÂë½øÐбàÒë²âÊԺͱ¨¸æÉú³É£¬ÕâÒ»½×¶ÎÊÇͨ¹ý Apache Ant ʵÏֵģ¬ÎÒÃÇÏÈÀ´¿´Ò»Ï Ant µÄ¹¹½¨Îļþ build.xml¡£build.xml µÄÄÚÈÝÖ÷Òª°üÀ¨ÒÔϼ¸²¿·Ö£º´úÂë±àÒëËùÒÀÀµµÄ jar °ü¡¢±àÒëÃüÁî¡¢²âÊÔÃüÁî¡¢´´½¨ report ÃüÁî¡£

Èçͼ 11 Ëùʾ£¬"build"Ö¸¶¨Á˱àÒëÒÀÀµÓÚ"clean£¬prebuild"£¬ÒÔ¼°Òª±àÒëÎļþµÄĿ¼ºÍÎļþºó׺£¨.scala Îļþ£©¡£"run"Ö¸¶¨ÁËÒªÖ´ÐеÄÎļþ¼´Êµ¼Ê²âÊÔµÄÎļþ£¨.class Îļþ£©£¬"showoutput"Ö¸¶¨ÊÇ·ñÊä³öËùÓÐµÄ log ÈÕÖ¾£¬"printsummary"Ö¸¶¨ÊÇ·ñÊä³öÿ¸öÎļþÖ´ÐÐÍê±ÏºóµÄ×ܽᣨ¼´×ܹ²¶àÉÙ¸ö case£¬³É¹¦Ê§°ÜÊýÄ¿¸÷Ϊ¶àÉÙ£©£¬"haltonfailure"Ö¸¶¨ÊÇ·ñÓöµ½´íÎó¾ÍÍ£Ö¹£¬"include name="ÓÃÓÚ¿ØÖÆÒª²âÊ﵀ scope ºÍÄ£¿é£¨·Ö±ð´Ó buildScope.prop ºÍ model.props ÖлñÈ¡£©£¬Èç´Ë´¦ scope Ϊ"MiniSmoke"£¬Ä£¿éΪ aa£¬ÐÂÔöÒ»¸öÄ£¿éÔòмÓÒ»ÐÐ"include name="£¬¿Éͨ¹ý Shell ¿ØÖÆ¡£"report"Ö¸¶¨ÀûÓòâÊÔÍê±ÏºóËùÉú³ÉµÄËùÓÐÃû³ÆÎª"TEST-*.xml"µÄÎļþÉú³É report¡£

ͼ 11. build.xml Ƭ¶Î

±àÒë¡¢²âÊÔ¡¢Report ½×¶ÎÒÀ´ÎÖ´ÐÐÃüÁîΪ"ant build"¡¢"ant run"ºÍ"ant report"£¬²âÊÔ²¢Éú³É report Ö®ºó½«Éú³ÉµÄ report ÎļþÈ«²¿·ÅÈë Apache Tomcat ÌØ¶¨Ä¿Â¼Öв¢ÇÒÆô¶¯ Tomcat£¬¼´¿Éͨ¹ý Tomcat µÄ¶Ë¿Ú·ÃÎÊ report ÄÚÈÝ¡£ÎªÁËÍêȫʵÏÖ×Ô¶¯»¯£¬ÎÒÃǽ«´Ë·ÃÎÊÁ´½Óͨ¹ýÓʼþϵͳ·¢Ë͵½Ö¸¶¨µÄÓÊÏäÖУ¬¿ÉÒÔͨ¹ý Linux ϵͳÏ嵀 sendmail ¹¦ÄÜ·¢ËÍ£¬Ò²¿ÉÒÔͨ¹ý Jenkins µÄ mail ¹¦ÄÜ·¢ËÍ£¬¼´Á÷³ÌÖÐµÄ Mail Notification ½×¶Î¡£

Èçͼ 12 Ëùʾ£¬ÓʼþËùÊÕµ½µÄ report Á´½ÓÊÇÒÔ"ip:¶Ë¿Ú/Ŀ¼/build ºÅ_scope/index.xml"µÄÑùʽ´æÔÚ£¬Tomcat ĬÈ϶˿ÚÊÇ 8080£¬¿ÉÒÔ×ÔÐÐÐ޸ģ¨apache-tomcat-7.0.77/conf/server.xml ÖУ©£¬±¾ÏµÍ³ÖÐÎÒÃǸijÉÁË 8888£¬build ºÅ_scope ±£Ö¤Á˶à¸ö report ²¢´æ»¥²»Ó°Ïì´Ó¶øÊ¹µÃÎÒÃÇ¿ÉÒÔͬʱ¹ÜÀíºÜ¶àÀúÊ· report ÒÔ±ãÓÚºóÐø²é¿´¡£

ͼ 12. report Ò³Ãæ

×ܽá

»ùÓÚ Docker µÄ»·¾³²¿Êð¼°²âÊÔÉæ¼°´óÁ¿Ï¸½Ú£¬Èç¸÷¸öÈí¼þµÄ°²×°ÅäÖá¢Õû¸öϵͳ¸÷¸ö²¿·ÖÊÇÈçºÎͨ¹ý shell ½Å±¾Ò»Ò»´®ÁªÆðÀ´ÒÔÍê³ÉÕû¸öÁ÷³Ì¡¢report Ò³ÃæÉϸ÷ÖÖÐÅÏ¢µÄÏÔʾ¡¢´úÂë±àÒë³ö´íºóÍ£Ö¹ºóÐøÁ÷³Ì×Ô¶¯·¢ËÍÓʼþ½«´íÎóÐÅϢ֪ͨά»¤ÈËÔ±µÈµÈ£¬ÓÉÓÚÄÚÈݹýÓÚ·±ËöÇÒÎÄÕÂÆª·ùÓÐÏÞÔڴ˲»ÄÜÒ»Ò»½éÉÜ£¬ÔÚʵ¼Ê»·¾³²¿Êð²âÊÔ¹ý³ÌÖдó¼Ò¿ÉÒÔ¾ßÌåÌå»á¡£ÎÄÖÐËùÉæ¼°µÄÈí¼þ¼¼Êõ¾ùΪµ±½ñÒµ½ç±È½ÏÁ÷Ðеļ¼Êõ£¬²Î¿¼×ÊÁÏÒ²Ïà¶Ô½Ï¶à£¬ÍøÂç»ò¹ÙÍøÉϾù¿ÉÒÔ²éÕÒµ½Ïà¹Ø°ïÖú£¬ÓÐÐËȤµÄ¿ÉÒÔ×ö½øÒ»²½ÉîÈëÑо¿¡£

 

 
   
1846 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù