基于Docker部署Spark和MinIO Server

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Docker部署Spark和MinIO Server相关的知识,希望对你有一定的参考价值。

参考技术A 使用Docker搭建Spark集群和MinIO云存储服务,并通过Spark访问MinIO,实现读写功能。

MinIO 是一个基于Apache License v2.0开源协议的对象存储服务。它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构化的数据,例如图片、视频、日志文件、备份数据和容器/虚拟机镜像等,而一个对象文件可以是任意大小,从几kb到最大5T不等。

MinIO是一个非常轻量的服务,可以很简单的和其他应用的结合,类似 NodeJS, Redis 或者 mysql
详细资料参考 这里

本项目使用的docker-compose文件如下,根据docker-compose的内容,大致分为三个部分。

分布式MinIO可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存储服务。由于硬盘分布在不同的节点上,分布式MinIO避免了单点故障。
详细参考 这里

Docker-compose中的 minio1-4 z组成MinIO分布式存储,对应存储服务的4个节点,每个节点使用相同的 MINIO_ACCESS_KEY 和 MINIO_SECRET_KEY 。部署成功后访问 http://127.0.0.1:9001/ ,输入 minio , minio123 即可看到如下界面(点击右下角可以创建bucket):
详细参考 这里

Docker-compose中的 spark-master , spark-worker 组成Spark集群。 spark-master 与 minio1 建立容器链接,后续需要Spark读写MinIO存储。部署成功后访问 http://127.0.0.1:8080/ 即可看到如下界面:

Saprk集群相关知识参考 这里

Docker-compose中的 minio-mc 对应MinIO Client。MinIO Client提供了一些命令如 ls, cat, cp, mirror, diff, find 等,实现与MinIO云存储服务的交互。 minio-mc 与 minio1 建立容器链接,后续需要使用 minio-mc 创建bucket。
MinIO Client的相关知识参考 链接1 , 链接2

Spark访问MinIO存储需要一些依赖包,具体参考 这里 。其中必须添加的两个jar包是: hadoop-aws-2.7.3 , aws-java-sdk-1.7.4 。

配置Spark集群参考 链接1 , 链接2 , 链接3 , 链接4 , 链接5

Centos7 部署 Minio

我尝试过直接使用docker 部署minio。

也运行成功了。

但是由于我的centos系统是在虚拟机中,docker运行在centos里。

出现了一些ip问题,我没搞定。

希望有会的朋友可以通知我一下。

一,先说一下docker部署吧

参考:https://www.jianshu.com/p/52dbc679094a

(说不定你没遇到我这个问题呢)

1,拉取镜像

docker pull minio/minio

 2,启动

注意admin是账号,12345678是密码

docker run -p 9000:9000 --name minio 
-d --restart=always 
-e "MINIO_ACCESS_KEY=admin" 
-e "MINIO_SECRET_KEY=12345678" 
-v /home/data:/data 
-v /home/config:/root/.minio 
minio/minio server /data

会输出:

上面的2个地址,你直接访问就可以了。

(而我是因为运行在虚拟机,所以在虚拟机可以访问,但是外网机器无法访问到。。。。映射搞不定。)

 二,Centos7 部署

参考:https://blog.csdn.net/llwy1428/article/details/99618252

1,创建目录

[root@localhost ~]# mkdir /opt/minio
[root@localhost ~]# mkdir /opt/minio/data

2,进入目录

[root@localhost ~]# cd /opt/minio

3,下载

[root@localhost ~]# wget https://dl.min.io/server/minio/release/linux-amd64/minio

4,赋权

[root@localhost ~]# chmod +x minio

6,关闭防火墙

#关闭防火墙
systemctl stop firewalld.service
#永久关闭防火墙
systemctl disable firewalld.service

6,设置账户/密码

export MINIO_ACCESS_KEY=admin
export MINIO_SECRET_KEY=12345678

7,启动minio(ctrl+c会退出!)

[root@localhost ~]# /opt/minio/minio server /opt/minio/data/

8,后台启动

但是ctrl+c后,就退出了。

因此我需要后台运行!

nohup /opt/minio/minio server /opt/minio/data/ > /opt/minio/data/minio.log 2>&1 &

9,检验

不知道为什么,centos中我装完,是这个界面。。。。好丑

和我windows安装的完全不一样。

10,关闭服务

#关闭minio

# 查看端口
netstat -lnpt |grep 端口
# 关闭PID
kill -9 PID

以上是关于基于Docker部署Spark和MinIO Server的主要内容,如果未能解决你的问题,请参考以下文章

云原生之Docker实战使用Docker部署MinIO对象存储

docker部署minio

docker部署minio无法访问的坑

minio 关闭默认brrowser

MinIO 搭建使用

spark write data to minio test