ÔõÑùÔÚLinuxÉϹ¹½¨ÈÝÆ÷»¯µÄ´óÊý¾ÝÆÊÎöƽ̨£¿
ÔõÑùÔÚlinuxÉϹ¹½¨ÈÝÆ÷»¯µÄ´óÊý¾ÝÆÊÎöƽ̨£¿
Ëæ×ÅÊý¾ÝÁ¿µÄ¿ìËÙÔöÌí£¬´óÊý¾ÝÆÊÎö³ÉΪÁËÆóÒµºÍ×éÖ¯ÔÚʵʱ¾öÒé¡¢Êг¡ÓªÏú¡¢Óû§ÐÐΪÆÊÎöµÈ·½ÃæµÄÖ÷Òª¹¤¾ß¡£ÎªÁËÖª×ãÕâЩÐèÇ󣬹¹½¨Ò»¸ö¸ßЧ¡¢¿ÉÀ©Õ¹µÄ´óÊý¾ÝÆÊÎöƽ̨ÖÁ¹ØÖ÷Òª¡£ÔÚ±¾ÎÄÖУ¬ÎÒÃǽ«ÏÈÈÝÔõÑùʹÓÃÈÝÆ÷ÊÖÒÕ£¬ÔÚLinuxÉϹ¹½¨Ò»¸öÈÝÆ÷»¯µÄ´óÊý¾ÝÆÊÎöƽ̨¡£
Ò»¡¢ÈÝÆ÷»¯ÊÖÒÕ¸ÅÊö
ÈÝÆ÷»¯ÊÖÒÕÊÇÒ»ÖÖ½«Ó¦ÓóÌÐò¼°ÆäÒÀÀµ¹Øϵ´ò°üΪһ¸ö×ÔÁ¦µÄÈÝÆ÷£¬´Ó¶øʵÏÖÓ¦ÓóÌÐòµÄ¿ìËÙ°²ÅÅ¡¢¿ÉÒÆÖ²ÐԺ͸ôÀëÐÔµÄÊÖÒÕ¡£ÈÝÆ÷½«Ó¦ÓóÌÐòÓëµ×²ã²Ù×÷ϵͳ¸ôÍÑÀëÀ´£¬´Ó¶øʹӦÓóÌÐòÔÚ²î±ðµÄÇéÐÎÖоßÓÐÏàͬµÄÔËÐÐÐÐΪ¡£
DockerÊÇÏÖÔÚ×îÊܽӴýµÄÈÝÆ÷»¯ÊÖÒÕÖ®Ò»¡£Ëü»ùÓÚLinuxÄں˵ÄÈÝÆ÷ÊÖÒÕ£¬ÌṩÁËÒ×ÓÚʹÓõÄÏÂÁîÐй¤¾ßºÍͼÐνçÃ棬¿É×ÊÖú¿ª·¢Ö°Ô±ºÍϵͳÖÎÀíÔ±ÔÚ²î±ðµÄLinux¿¯ÐаæÉϹ¹½¨ºÍÖÎÀíÈÝÆ÷¡£
¶þ¡¢¹¹½¨ÈÝÆ÷»¯µÄ´óÊý¾ÝÆÊÎöƽ̨
×°ÖÃDocker
Ê×ÏÈ£¬ÎÒÃÇÐèÒªÔÚLinuxϵͳÉÏ×°ÖÃDocker¡£¿ÉÒÔͨ¹ýÒÔÏÂÏÂÁî¾ÙÐÐ×°Öãº
sudo apt-get update sudo apt-get install docker-ce
µÇ¼ºó¸´ÖÆ
¹¹½¨»ù´¡¾µÏñ
½ÓÏÂÀ´£¬ÎÒÃÇÐèÒª¹¹½¨Ò»¸ö»ù´¡¾µÏñ£¬¸Ã¾µÏñ°üÀ¨ÁË´óÊý¾ÝÆÊÎöËùÐèµÄÈí¼þºÍÒÀÀµÏî¡£ÎÒÃÇ¿ÉÒÔʹÓÃDockerfileÀ´½ç˵¾µÏñµÄ¹¹½¨Á÷³Ì¡£
ÏÂÃæÊÇÒ»¸öʾÀýµÄDockerfile£º
FROM ubuntu:18.04 # ×°ÖÃËùÐèµÄÈí¼þºÍÒÀÀµÏî RUN apt-get update && apt-get install -y python3 python3-pip openjdk-8-jdk wget # ×°ÖÃHadoop RUN wget https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-3.1.2/hadoop-3.1.2.tar.gz && tar xvf hadoop-3.1.2.tar.gz && mv hadoop-3.1.2 /usr/local/hadoop && rm -rf hadoop-3.1.2.tar.gz # ×°ÖÃSpark RUN wget https://www.apache.org/dyn/closer.cgi/spark/spark-2.4.4/spark-2.4.4-bin-hadoop2.7.tgz && tar xvf spark-2.4.4-bin-hadoop2.7.tgz && mv spark-2.4.4-bin-hadoop2.7 /usr/local/spark && rm -rf spark-2.4.4-bin-hadoop2.7.tgz # ÉèÖÃÇéÐαäÁ¿ ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 ENV HADOOP_HOME=/usr/local/hadoop ENV SPARK_HOME=/usr/local/spark ENV PATH=$PATH:$HADOOP_HOME/bin:$SPARK_HOME/bin
µÇ¼ºó¸´ÖÆ
ͨ¹ýʹÓÃdocker buildÏÂÁÎÒÃÇ¿ÉÒÔ¹¹½¨»ù´¡¾µÏñ£º
docker build -t bigdata-base .
µÇ¼ºó¸´ÖÆ
½¨ÉèÈÝÆ÷
½ÓÏÂÀ´£¬ÎÒÃÇ¿ÉÒÔ½¨ÉèÒ»¸öÈÝÆ÷À´ÔËÐдóÊý¾ÝÆÊÎöƽ̨¡£
docker run -it --name bigdata -p 8888:8888 -v /path/to/data:/data bigdata-base
µÇ¼ºó¸´ÖÆ
ÒÔÉÏÏÂÁ½¨ÉèÒ»¸öÃûΪbigdataµÄÈÝÆ÷£¬²¢½«Ö÷»úµÄ/path/to/dataĿ¼¹ÒÔص½ÈÝÆ÷µÄ/dataĿ¼Ï¡£ÕâÔÊÐíÎÒÃÇÔÚÈÝÆ÷ÖÐÀû±ãµØ»á¼ûÖ÷»úÉϵÄÊý¾Ý¡£
ÔËÐдóÊý¾ÝÆÊÎöʹÃü
ÏÖÔÚ£¬ÎÒÃÇ¿ÉÒÔÔÚÈÝÆ÷ÖÐÔËÐдóÊý¾ÝÆÊÎöʹÃü¡£ÀýÈ磬ÎÒÃÇ¿ÉÒÔʹÓÃPythonµÄPySpark¿âÀ´¾ÙÐÐÆÊÎö¡£
Ê×ÏÈ£¬ÔÚÈÝÆ÷ÖÐÆô¶¯Spark£º
spark-shell
µÇ¼ºó¸´ÖÆ
È»ºó£¬¿ÉÒÔʹÓÃÒÔÏÂʾÀý´úÂëÀ´¾ÙÐÐÒ»¸ö¼òÆÓµÄWord CountÆÊÎö£º
val input = sc.textFile("/data/input.txt") val counts = input.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _) counts.saveAsTextFile("/data/output")
µÇ¼ºó¸´ÖÆ
Õâ¶Î´úÂ뽫ÊäÈëÎļþ/data/input.txtÖеÄÎı¾¾ÙÐзִʣ¬²¢Í³¼Æÿ¸öµ¥´Ê·ºÆðµÄ´ÎÊý£¬×îºó½«Ð§¹ûÉúÑĵ½/data/outputĿ¼Ï¡£
Ч¹ûÉó²éºÍÊý¾Ýµ¼³ö
ÆÊÎöÍê³Éºó£¬ÎÒÃÇ¿ÉÒÔͨ¹ýÒÔÏÂÏÂÁîÀ´Éó²éÆÊÎöЧ¹û£º
cat /data/output/part-00000
µÇ¼ºó¸´ÖÆ
ÈôÊÇÐèÒª½«Ð§¹ûµ¼³öµ½Ö÷»úÉÏ£¬¿ÉÒÔʹÓÃÒÔÏÂÏÂÁ
docker cp bigdata:/data/output/part-00000 /path/to/output.txt
µÇ¼ºó¸´ÖÆ
Õ⽫°ÑÈÝÆ÷ÖеÄÎļþ/data/output/part-00000¸´ÖƵ½Ö÷»úµÄ/path/to/output.txtÎļþÖС£
Èý¡¢×ܽá
±¾ÎÄÏÈÈÝÁËÔõÑùʹÓÃÈÝÆ÷»¯ÊÖÒÕÔÚLinuxÉϹ¹½¨Ò»¸ö´óÊý¾ÝÆÊÎöƽ̨¡£Í¨¹ýʹÓÃDockerÀ´¹¹½¨ºÍÖÎÀíÈÝÆ÷£¬ÎÒÃÇ¿ÉÒÔ¿ìËÙ¡¢¿É¿¿µØ°²ÅÅ´óÊý¾ÝÆÊÎöÇéÐΡ£Í¨¹ýÔÚÈÝÆ÷ÖÐÔËÐдóÊý¾ÝÆÊÎöʹÃü£¬ÎÒÃÇ¿ÉÒÔÇáËɵؾÙÐÐÊý¾ÝÆÊÎöºÍ´¦Àí£¬²¢½«Ð§¹ûµ¼³öµ½Ö÷»úÉÏ¡£Ï£Íû±¾ÎĶÔÄú¹¹½¨ÈÝÆ÷»¯µÄ´óÊý¾ÝÆÊÎöƽ̨ÓÐËù×ÊÖú¡£
ÒÔÉϾÍÊÇÔõÑùÔÚLinuxÉϹ¹½¨ÈÝÆ÷»¯µÄ´óÊý¾ÝÆÊÎöƽ̨£¿µÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡