久久96国产精品久久久-久久发布国产伦子伦精品-久久精品国产精品青草-久久天天躁夜夜躁狠狠85麻豆

技術員聯盟提供win764位系統下載,win10,win7,xp,裝機純凈版,64位旗艦版,綠色軟件,免費軟件下載基地!

當前位置:主頁 > 教程 > 服務器類 >

如何使用docker快速搭建Spark集群

來源:技術員聯盟┆發布時間:2017-07-14 18:06┆點擊:

  Spark 是 Berkeley 開發的分布式計算的框架,相對于 Hadoop 來說,Spark 可以緩存中間結果到內存而提高某些需要迭代的計算場景的效率,目前收到廣泛關注。下面來一起看看使用docker快速搭建Spark集群的方法教程。

  適用人群

  正在使用spark的開發者

  正在學習docker或者spark的開發者

  準備工作

  安裝docker

  (可選)下載java和spark with hadoop

  Spark集群

  Spark運行時架構圖

如何使用docker快速搭建Spark集群 三聯

  如上圖: Spark集群由以下兩個部分組成

  集群管理器(Mesos, Yarn或者standalone Mode)

  工作節點(worker)

  如何docker化(本例使用Standalone模式)

  1、將spark集群拆分

  base(基礎鏡像)

  master(主節點鏡像)

  worker(工作鏡像)

  2、編寫base Dockerfile

  注: 為方便切換版本基礎鏡像選擇的是centos, 所以要下載java和spark, 方便調試, 可以下載好安裝文件后本地搭建一個靜態文件服務器, 使用Node.js 的http-server可以快速搞定

  命令如下

  npm install http-server -g

  http-server -p 54321 ~/Downloads

  正式開始寫Dockerfile

  FROM centos:7

  MAINTAINER RavenZZ

  # 安裝系統工具

  RUN yum update -y

  RUN yum upgrade -y

  RUN yum install -y byobu curl htop man unzip nano wget

  RUN yum clean all

  # 安裝 Java

  ENV JDK_VERSION 8u11

  ENV JDK_BUILD_VERSION b12

  # 如果網速快,可以直接從源站下載

  #RUN curl -LO "$JDK_VERSION-$JDK_BUILD_VERSION/jdk-$JDK_VERSION-linux-x64.rpm" -H 'Cookie: oraclelicense=accept-securebackup-cookie' && rpm -i jdk-$JDK_VERSION-linux-x64.rpm; rm -f jdk-$JDK_VERSION-linux-x64.rpm;

  RUN curl -LO ":54321/jdk-8u11-linux-x64.rpm" && rpm -i jdk-$JDK_VERSION-linux-x64.rpm; rm -f jdk-$JDK_VERSION-linux-x64.rpm;

  ENV JAVA_HOME /usr/java/default

  RUN yum remove curl; yum clean all

  WORKDIR spark

  RUN \

  curl -LO 'http://192.168.199.102:54321/spark-2.1.0-bin-hadoop2.7.tgz' && \

  tar zxf spark-2.1.0-bin-hadoop2.7.tgz

  RUN rm -rf spark-2.1.0-bin-hadoop2.7.tgz

  RUN mv spark-2.1.0-bin-hadoop2.7/* ./

  ENV SPARK_HOME /spark

  ENV PATH /spark/bin:$PATH

  ENV PATH /spark/sbin:$PATH

  3、編寫master Dockerfile

  FROM ravenzz/spark-hadoop

  MAINTAINER RavenZZ

  COPY master.sh /

  ENV SPARK_MASTER_PORT 7077

  ENV SPARK_MASTER_WEBUI_PORT 8080

  ENV SPARK_MASTER_LOG /spark/logs

  EXPOSE 8080 7077 6066

  CMD ["/bin/bash","/master.sh"]

  4、編寫worker Dockerfile

  FROM ravenzz/spark-hadoop

  MAINTAINER RavenZZ

  COPY worker.sh /

  ENV SPARK_WORKER_WEBUI_PORT 8081

  ENV SPARK_WORKER_LOG /spark/logs

  ENV SPARK_MASTER "spark://spark-master:32769"

  EXPOSE 8081

  CMD ["/bin/bash","/worker.sh"]

  5、docker-compose

  version: '3'

  services:

  spark-master:

  build:

  context: ./master

  dockerfile: Dockerfile

  ports:

  - "50001:6066"

  - "50002:7077" # SPARK_MASTER_PORT

  - "50003:8080" # SPARK_MASTER_WEBUI_PORT

  expose:

  - 7077

  spark-worker1:

  build:

  context: ./worker

  dockerfile: Dockerfile

  ports:

  - "50004:8081"

  links:

  - spark-master

  environment:

  - SPARK_MASTER=spark://spark-master:7077

  spark-worker2:

  build:

  context: ./worker

  dockerfile: Dockerfile

  ports:

  - "50005:8081"

  links:

  - spark-master

  environment:

  - SPARK_MASTER=spark://spark-master:7077

  6、測試集群

  docker-compose up

  訪問:50003/ 結果如圖

如何使用docker快速搭建Spark集群

  參考鏈接

  本例源代碼https://github.com/RavenZZ/docker-spark-cluster