项目需求,有一个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

docker for spark的更多相关文章

  1. 使用docker打造spark集群

    前提条件:安装好了docker,见我的另一篇博客,Docker安装 有两种方式, Spark官方repo里,docker文件夹下的脚本.官方的这个脚本封装很薄,尽可能把必要的信息展示出来. AMPLa ...

  2. 利用docker搭建spark hadoop workbench

    目的 用docker实现所有服务 在spark-notebook中编写Scala代码,实时提交到spark集群中运行 在HDFS中存储数据文件,spark-notebook中直接读取 组件 Spark ...

  3. Docker 搭建Spark 依赖singularities/spark:2.2镜像

    singularities/spark:2.2版本中 Hadoop版本:2.8.2 Spark版本: 2.2.1 Scala版本:2.11.8 Java版本:1.8.0_151 拉取镜像: [root ...

  4. Docker 搭建Spark 依赖sequenceiq/spark:1.6镜像

    使用Docker-Hub中Spark排行最高的sequenceiq/spark:1.6.0. 操作: 拉取镜像: [root@localhost home]# docker pull sequence ...

  5. docker on spark

    从docker 仓库 pull 镜像 docker pull sequenceiq/spark:1.4.0 构建 docker 镜像 docker build –rm -t sequenceiq/sp ...

  6. 使用Docker搭建Spark集群(用于实现网站流量实时分析模块)

    上一篇使用Docker搭建了Hadoop的完全分布式:使用Docker搭建Hadoop集群(伪分布式与完全分布式),本次记录搭建spark集群,使用两者同时来实现之前一直未完成的项目:网站日志流量分析 ...

  7. spark docker java kubernetes 获取cpu内核/线程数问题

    升级服务从spark2.3.0-hadoop2.8 至 spark2.4.0 hadoop3.0 一日后导致spark streaming kafka消费数据积压 服务不是传统的部署在yarn上,而是 ...

  8. Docker中提交任务到Spark集群

    1.  背景描述和需求 数据分析程序部署在Docker中,有一些分析计算需要使用Spark计算,需要把任务提交到Spark集群计算. 接收程序部署在Docker中,主机不在Hadoop集群上.与Spa ...

  9. Docker on YARN在Hulu的实现

    这篇文章是我来Hulu这一年做的主要工作,结合当下流行的两个开源方案Docker和YARN,提供了一套灵活的编程模型,目前支持DAG编程模型,将会支持长服务编程模型. 基于Voidbox,开发者可以很 ...

随机推荐

  1. UDP传输原理及数据分片——学习笔记

    TCP传输可靠性是:TCP协议里自己做了设计来保证可靠性. IP报文本身是不可靠的 UDP也是 TCP做了很多复杂的协议设计,来保证可靠性. TCP 面向连接,三次握手,四次挥手 拥塞机制 重传机制 ...

  2. python3----练习......

    # 上行遍历 soup = BeautifulSoup(demo, 'html.parser') for parent in soup.a.parents: if parent is None: pr ...

  3. string类(二、常用string函数)

    常用string相关,参至System.String类: 1/ string.Length a.Length字符串长度 string a="a5"; //a.Length==2 s ...

  4. Git------Commit和Push的区别

    转载:http://wenda.so.com/q/1435946424728324?src=140 git作为支持分布式版本管理的工具,它管理的库(repository)分为本地库.远程库. git ...

  5. log4j日志服务器配置

    可参考的文章: http://www.jb51.net/article/89597.htm http://www.jb51.net/article/41001.htm http://liuzhijun ...

  6. vue 二级列表折叠面板

    请求出来的数据是二级列表,需要点击一级列表展开相应的二级列表 data(){ return { info: [ {name:'一级菜单1',lists:[{price:1},{price:2}]}, ...

  7. rabbitMq延时消息分级别

    做支付平台的时候.需要实现接受上游支付消息,通知给下游渠道. 针对下游渠道:要实现 按通知次数 递进 延时通知 下游渠道的支付/签约/代扣的状态 可参考微信按照 15/15/30/180/1800/1 ...

  8. 巨蟒python全栈开发flask15项目开始7

    1.连续收取未读消息&&未读消息所属人 2.Pypinyin NLP中文同音字识别 3.jieba分词 4.Gemsim框架之LsiModel稀疏矩阵相似度 5.Gensim的应用 6 ...

  9. (转)android mock location

    android mock location 2014-01-26     我来说两句   来源:党玉涛   收藏 我要投稿 现在软件市场上有很多可以改变手机地理位置的软件,更改后打开微信就可以随意定位 ...

  10. Kafka简介及使用

    一.Kafka概述 离线部分: Hadoop->离线计算(hdfs / mapreduce) yarn zookeeper->分布式协调(动物管理员) hive->数据仓库(离线计算 ...