利用docker搭建spark hadoop workbench

目的

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

组件

  • Spark (Standalone模式, 1个master节点 + 可扩展的worker节点)
  • Spark-notebook
  • Hadoop name node
  • Hadoop data node
  • HDFS FileBrowser

实现

最初用了Big Data Europe的docker-spark-hadoop-workbench,但是docker 服务运行后在spark-notebook中运行代码会出现经典异常:

 java.lang.ClassCastException: cannot assign instance of scala.collection.immutable.List$SerializationProxy to field org.apache.spark.rdd.RDD.org$apache$spark$rdd$RDD$$dependencies_ of type scala.collection.Seq in instance of org.apache.spark.rdd.MapPartitionsRDD
View Code

 

发现是因为spark-notebook和spark集群使用的spark版本不一致. 于是fork了Big Data Europe的repo,在此基础上做了一些修改,基于spark2.11-hadoop2.7实现了一个可用的workbench.

 

运行docker服务

docker-compose up -d

 

扩展spark worker节点

docker-compose scale spark-worker=3

 

测试服务

 

各个服务的URL如下:

Namenode: http://localhost:50070
Datanode: http://localhost:50075
Spark-master: http://localhost:8080
Spark-notebook: http://localhost:9001
Hue (HDFS Filebrowser): http://localhost:8088/home

 

以下是各个服务的运行截图

 

HDFS Filebrower

 

Spark集群

 

Spark-notebook

 

运行例子

1. 上传csv文件到HDFS FileBrowser,

2. Spark notebook新建一个notebook

3. 在新建的notebook里操作HDFS的csv文件

具体的步骤参考这里

 

以下是spark-notebook运行的截图:

 

代码链接

Github

转载于:https://www.cnblogs.com/wanly3643/p/7919090.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Docker搭建Spark集群,需要执行以下步骤: 1. 安装DockerDocker Compose 确保已经安装了DockerDocker Compose,如果没有安装,可以按照官方文档进行安装。 2. 创建Docker镜像 创建一个Dockerfile文件,使用Spark官方镜像作为基础镜像,并添加配置文件和应用程序。在Dockerfile所在的目录下运行以下命令创建镜像: ``` docker build -t spark-image . ``` 3. 创建Docker容器 使用Docker Compose创建一个包含多个节点的容器集群,可以在docker-compose.yml文件中定义每个容器的配置。以下是一个简单的例子: ``` version: '3' services: master: image: spark-image ports: - "8080:8080" - "7077:7077" environment: - SPARK_MODE=master - SPARK_MASTER_HOST=master worker: image: spark-image environment: - SPARK_MODE=worker - SPARK_WORKER_CORES=2 - SPARK_WORKER_MEMORY=2g - SPARK_MASTER_URL=spark://master:7077 ``` 在这个例子中,我们定义了一个master节点和一个worker节点,master节点暴露了端口8080和7077,worker节点定义了一些环境变量。 4. 启动集群 在Docker Compose文件所在的目录下运行以下命令启动集群: ``` docker-compose up -d ``` 这将启动所有容器,并将它们连接在一起,形成一个Spark集群。 5. 运行应用程序 现在,我们可以使用Spark提交应用程序。可以使用以下命令在master节点上提交一个应用程序: ``` docker exec -it <master_container_id> /bin/bash ./bin/spark-submit --master spark://master:7077 --class org.apache.spark.examples.SparkPi ./examples/jars/spark-examples_2.11-2.4.0.jar 10 ``` 这将在集群上启动一个Spark Pi应用程序。 以上就是在Docker搭建Spark集群的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值