• docker for spark


    项目需求,有一个spark-streaming的程序,读kafka的数据,需要构建一个不使用hadoop的spark

    以下建立的镜像参考网络,可以稍加修改就可以使用不同的版本。

    可单独启动master,worker来构建一个standaline的集群。

    也可以默认启动,启动后,构建的是一个master,两个worker的集群。

    使用的文件如下:

    start-spark spark-2.2.1-bin-hadoop2.7.tgz Dockerfile

    #start-spark
    #!/bin/bash

    if [[ "${1}" = 'master' ]]; then
      # Start Spark Master
         spark-class org.apache.spark.deploy.master.Master -h $(hostname) 2>&1 >/data/sparklog-server.log
    elif [[ "${1}" = 'worker' ]]; then
      # Start Spark Worker
         spark-class org.apache.spark.deploy.worker.Worker  spark://$2:7077 2>&1 >/data/sparklog.log
    else
      #start master and two workers
        nohup  spark-class org.apache.spark.deploy.master.Master -h $(hostname) 2>&1 >>/data/sparklog-server.log &
        #sleep 5 to wait spark-server start
        sleep 3
        nohup spark-class org.apache.spark.deploy.worker.Worker  $(tail -n 1 /etc/hosts |awk '{print $1}'):7077 2>&1 >/data/sparkwlog1.log &
        nohup spark-class org.apache.spark.deploy.worker.Worker  $(tail -n 1 /etc/hosts |awk '{print $1}'):7077 2>&1 >/data/sparkwlog2.log
      exit 1
    fi

    Dockerfile

    FROM openjdk:8-jre
    
    MAINTAINER shyaoxh@cn.ibm.com
    
    
    WORKDIR spark 
    COPY spark*.tgz ./
    RUN  tar zxf spark*.tgz && mv spark-2.2.1-bin-hadoop2.7/* ./ 
         && rm -fr spark-2.2.1-bin-hadoop2.7 && rm spark*.tgz
    
    EXPOSE 6066 7077 8080 8081
    
    
    # Copy start script
    COPY start-spark /usr/bin/start-spark
    RUN  chmod +x /usr/bin/start-spark
    
    ENV SPARK_HOME /spark
    ENV PATH /spark/bin:$PATH 
    ENV PATH /spark/sbin:$PATH
    
    #volume /data
    VOLUME /data
    
    #entrypoint
    CMD ["start-spark","all"]

    使用方法:

    构建 docker build -t spark .

    1.启动master

    #start spark master

    注意:--net 是我自己已经创建的一个桥接网络
    docker run --rm -it --name spark_master -p 7077:7077 -p 8080:8080 --net loginsight -h spark_master spark start-spark master

    2.启动worker

    docker run --rm -it  --net loginsight --name spark_worker1 spark start-spark worker $(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' spark_master)

    3.默认启动

    docker run --rm -it --name spark_master -p 7077:7077 -p 8080:8080 --net loginsight -h spark_master spark

  • 相关阅读:
    阿里早期Android加固代码的实现分析
    如何利用C++的time头文件获取系统时间
    Python编写基于socket的非阻塞多人聊天室程序(单线程&多线程)
    Dalvik模式下在Android so库文件.init段、.init_array段构造函数上下断点
    手动绕过百度加固Debug.isDebuggerConnected反调试的方法
    request使用代理
    requests爬取豆瓣热门电视剧
    scrapy-继承默认的user-agent 中间件
    scrapy-下载器中间件 随机切换user_agent
    scrapy 直接在编辑器运行
  • 原文地址:https://www.cnblogs.com/huaxiaoyao/p/9909317.html
Copyright © 2020-2023  润新知