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