使用docker-compose创建spark集群

下载docker镜像

sudo docker pull sequenceiq/spark:1.6.0

创建docker-compose.yml文件

创建一个目录,比如就叫 docker-spark,然后在其下创建docker-compose.yml文件,内容如下:

version: '2'

services:
  master:
    image: sequenceiq/spark:1.6.0
    hostname: master
    ports:
      - "4040:4040"
      - "8042:8042"
      - "7077:7077"
      - "8088:8088"
      - "8080:8080"
    restart: always
    command: bash /usr/local/spark/sbin/start-master.sh && ping localhost > /dev/null

  worker:
    image: sequenceiq/spark:1.6.0
    depends_on:
      - master
    expose:
      - "8081"
    restart: always
    command: bash /usr/local/spark/sbin/start-slave.sh spark://master:7077 && ping localhost >/dev/null

其中包括一个master服务和一个worker服务。

创建并启动spark集群

sudo docker-compose up

集群启动后,我们可以查看一下集群状态

sudo docker-compose ps
        Name                      Command               State                                                    Ports
----------------------------------------------------------------------
dockerspark_master_1   /etc/bootstrap.sh bash /us ...   Up      ...
dockerspark_worker_1   /etc/bootstrap.sh bash /us ...   Up      ...

默认我们创建的集群包括一个master节点和一个worker节点。我们可以通过下面的命令扩容或缩容集群。

sudo docker-compose scale worker=2

扩容后再次查看集群状态,此时集群变成了一个master节点和两个worker节点。

sudo docker-compose ps
        Name                      Command               State                                                    Ports
------------------------------------------------------------------------
dockerspark_master_1   /etc/bootstrap.sh bash /us ...   Up      ...
dockerspark_worker_1   /etc/bootstrap.sh bash /us ...   Up      ...
dockerspark_worker_2   /etc/bootstrap.sh bash /us ...   Up      ...

此时也可以通过浏览器访问 http://ip:8080 来查看spark集群的状态。

运行spark作业

首先登录到spark集群的master节点

sudo docker exec -it <container_name> /bin/bash

然后使用spark-submit命令来提交作业

/usr/local/spark/bin/spark-submit --master spark://master:7077 --class org.apache.spark.examples.SparkPi /usr/local/spark/lib/spark-examples-1.6.0-hadoop2.6.0.jar 1000

停止spark集群

sudo docker-compose down

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏木头编程 - moTzxx

CentOS6.5 Nginx无法解析php文件

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/de...

55130
来自专栏老安的博客

openstack 集成vmware 填坑经验

11520
来自专栏帅小子的日常

sso系统使用

15830
来自专栏IT技术精选文摘

微服务架构中的服务发现

为什么使用服务发现? 我们假设您正在编写一些调用具有REST API或Thrift API的服务的代码。为了发送请求,您的代码需要知道服务实例的网络位置(IP...

27280
来自专栏桥路_大数据

React Natived打包报错java.io.IOException: Could not delete path '...\android\support\v7'解决

44690
来自专栏上善若水

013android初级篇之Android Studio 引用源码模块,jar及so文件

013android初级篇之Android Studio 引用源码模块,jar及so文件

22920
来自专栏搜云库

Spring Cloud(十)高可用的分布式配置中心 Spring Cloud Config 中使用 Refresh

上一篇文章讲了SpringCloudConfig 集成Git仓库,配和 Eureka 注册中心一起使用,但是我们会发现,修改了Git仓库的配置后,需要重启服务,...

233100
来自专栏程序员叨叨叨

windwos平台下 Android SDK更新慢的解决方法

我们在使用Eclipse的Android SDK更新时,常常会遇到SDK更新慢或更新不了的问题(Fail to fetch...),接下来我们来看看解决办法:

8130
来自专栏Java学习123

IBM WebSphere MQ 系列(二)安装MQ

52480
来自专栏皮振伟的专栏

[qemu][acpi]acpi overflow的分析

前言: qemu启动之后,打出了log: qemu-system-x86_64: Warning: ACPI tables are larger than 64...

51280

扫码关注云+社区

领取腾讯云代金券