update
parent
1252973b07
commit
be643b7ce7
|
@ -246,8 +246,8 @@
|
|||
* [微服务中的服务发现](usecases/service-discovery-in-microservices.md)
|
||||
* [使用 Java 构建微服务并发布到 Kubernetes 平台](usecases/microservices-for-java-developers.md)
|
||||
* [Spring Boot 快速开始指南](usecases/spring-boot-quick-start-guide.md)
|
||||
|
||||
* [大数据](usecases/big-data.md)
|
||||
* [Spark 与 Kubernetes](usecases/spark-on-kubernetes.md)
|
||||
* [Spark standalone on Kubernetes](usecases/spark-standalone-on-kubernetes.md)
|
||||
* [运行支持 Kubernetes 原生调度的 Spark 程序](usecases/running-spark-with-kubernetes-native-scheduler.md)
|
||||
* [Serverless 架构](usecases/serverless.md)
|
||||
|
|
|
@ -1,39 +1,6 @@
|
|||
# 大数据
|
||||
|
||||
Kubernetes community中已经有了一个Big data SIG,大家可以通过这个SIG了解kubernetes结合大数据的应用。
|
||||
Kubernetes community 中曾经有了一个Big Data SIG,现为 [Big Data User Group](https://github.com/kubernetes/community/tree/master/ug-big-data),大家可以通过这个用户组了解 Kubernetes 结合大数据的应用。
|
||||
|
||||
在Swarm、Mesos、kubernetes这三种流行的容器编排调度架构中,Mesos对于大数据应用支持是最好的,spark原生就是运行在mesos上的,当然也可以容器化运行在kubernetes上。当前在kubernetes上运行大数据应用主要是spark应用。
|
||||
|
||||
## Spark on Kubernetes
|
||||
|
||||
Spark原生支持standalone、mesos和YARN的调度方式,当前kubernetes社区正在支持kubernetes的原生调度来运行spark - 。
|
||||
|
||||
当然您也可以在kubernetes直接部署spark on yarn或者spark standalone模式,仍然沿用已有的
|
||||
|
||||
## Spark Standalone
|
||||
|
||||
使用spark standalone模式在kubernetes上运行,kubernetes不负责spark任务的调度。参考:[Spark standalone on Kubernetes](spark-standalone-on-kubernetes.md)
|
||||
|
||||
这种模式中使用的spark本身负责任务调度,kubernetes只是作为一个spark的部署平台。
|
||||
|
||||
## Spark on Yarn
|
||||
|
||||
使用StatefulSet和Headless serverless来实现。
|
||||
|
||||
这种模式中kubernetes依然不负责spark应用的调度,而只是将Yarn换了一个部署环境而已。
|
||||
|
||||
下面是架构图:
|
||||
|
||||
![Spark on yarn with kubernetes](../images/spark-on-yarn-with-kubernetes.png)
|
||||
|
||||
### Spark on Kubernetes
|
||||
|
||||
Spark on kubernetes,使用kubernetes作为调度引擎,spark的任务直接调度到node节点上。参考:[运行支持kubernetes原生调度的Spark程序](running-spark-with-kubernetes-native-scheduler.md)。
|
||||
|
||||
### 调度方式总结
|
||||
|
||||
下图显示的是三种调度方式中单个kubernetes node节点上运行的spark相关容器的调度情况。
|
||||
|
||||
![在kubernetes上使用多种调度方式](../images/spark-on-kubernetes-with-different-schedulers.jpg)
|
||||
|
||||
毫无疑问,使用kubernetes原生调度的spark任务才是最节省资源的。
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
# 运行支持kubernetes原生调度的Spark程序
|
||||
|
||||
**注:该项目已不推荐使用。**
|
||||
|
||||
TL;DR 这个主题比较大,该开源项目也还在不断进行中,我单独做了一个 web 用来记录 spark on kubernetes 的研究和最新进展见: https://jimmysong.io/spark-on-k8s
|
||||
|
||||
**注意**:本文中的镜像仓库地址 `harbor-001.jimmysong.io` 为的镜像仓库地址为伪装地址,非本文中真正使用的镜像仓库,且该地址也不存在,请替换为您自己的镜像仓库。
|
||||
|
|
|
@ -0,0 +1,27 @@
|
|||
# Spark 与 Kubernetes
|
||||
|
||||
Spark 原生支持 standalone、mesos 和 YARN 的调度方式,当前 kubernetes 社区正在支持 kubernetes 的原生调度来运行 spark。当然您也可以在 Kubernetes 直接部署 spark on YARN 或者 spark standalone 模式。
|
||||
|
||||
## Spark Standalone
|
||||
|
||||
使用 spark standalone 模式在 Kubernetes 上运行,kubernetes 不负责 spark 任务的调度。这种模式中使用的 spark 本身负责任务调度,kubernetes 只是作为一个 spark 的部署平台。
|
||||
|
||||
## Spark on Yarn
|
||||
|
||||
使用 StatefulSet 和 Headless serverless 来实现。这种模式中 kubernetes 依然不负责 spark 应用的调度,而只是将 Yarn 换了一个部署环境而已。
|
||||
|
||||
下面是架构图:
|
||||
|
||||
![Spark on yarn with kubernetes](../images/spark-on-yarn-with-kubernetes.png)
|
||||
|
||||
### Spark on Kubernetes
|
||||
|
||||
Spark on kubernetes,使用 kubernetes 作为调度引擎,spark 的任务直接调度到 node 节点上。参考:[运行支持 kubernetes 原生调度的 Spark 程序](./running-spark-with-kubernetes-native-scheduler.md)。
|
||||
|
||||
### 调度方式总结
|
||||
|
||||
下图显示的是三种调度方式中单个 kubernetes node 节点上运行的 spark 相关容器的调度情况。
|
||||
|
||||
![在 kubernetes 上使用多种调度方式](../images/spark-on-kubernetes-with-different-schedulers.jpg)
|
||||
|
||||
毫无疑问,使用 kubernetes 原生调度的 spark 任务才是最节省资源的。
|
|
@ -1,45 +1,45 @@
|
|||
# Spark standalone on Kubernetes
|
||||
|
||||
该项目是基于 Spark standalone 模式,对资源的分配调度还有作业状态查询的功能实在有限,对于让 spark 使用真正原生的 kubernetes 资源调度推荐大家尝试 <https://github.com/apache-spark-on-k8s/>。
|
||||
**注:该项目已不推荐使用。**
|
||||
|
||||
代码和使用文档见Github地址:https://github.com/rootsongjc/spark-on-kubernetes
|
||||
该项目是基于 Spark standalone 模式,对资源的分配调度还有作业状态查询的功能实在有限,对于让 spark 使用真正原生的 kubernetes 资源调度可以尝试 [apache-spark-on-k8s](https://github.com/apache-spark-on-k8s/),代码和使用文档见 [spark-on-kubernetes](https://github.com/rootsongjc/spark-on-kubernetes)。
|
||||
|
||||
本文中用到的 yaml 文件可以在 `manifests/spark-standalone` 目录下找到,也可以在上面的 <https://github.com/rootsongjc/spark-on-kubernetes/> 项目的 manifests 目录下找到。
|
||||
本文中用到的 yaml 文件可以在 `manifests/spark-standalone` 目录下找到,也可以在上面的 [spark-on-kubernetes](https://github.com/rootsongjc/spark-on-kubernetes/) 项目的 manifests 目录下找到。
|
||||
|
||||
## 在Kubernetes上启动spark
|
||||
## 在 Kubernetes 上启动 spark
|
||||
|
||||
创建名为spark-cluster的namespace,所有操作都在该namespace中进行。
|
||||
创建名为 spark-cluster 的 namespace,所有操作都在该 namespace 中进行。
|
||||
|
||||
所有yaml文件都在`manifests`目录下。
|
||||
所有 yaml 文件都在 `manifests` 目录下。
|
||||
|
||||
```bash
|
||||
$ kubectl create -f manifests/
|
||||
```
|
||||
|
||||
将会启动一个拥有三个worker的spark集群和zeppelin。
|
||||
将会启动一个拥有三个 worker 的 spark 集群和 zeppelin。
|
||||
|
||||
同时在该namespace中增加ingress配置,将spark的UI和zeppelin页面都暴露出来,可以在集群外部访问。
|
||||
同时在该 namespace 中增加 ingress 配置,将 spark 的 UI 和 zeppelin 页面都暴露出来,可以在集群外部访问。
|
||||
|
||||
该ingress后端使用traefik。
|
||||
该 ingress 后端使用 traefik。
|
||||
|
||||
## 访问spark
|
||||
## 访问 spark
|
||||
|
||||
通过上面对ingress的配置暴露服务,需要修改本机的/etc/hosts文件,增加以下配置,使其能够解析到上述service。
|
||||
通过上面对 ingress 的配置暴露服务,需要修改本机的 /etc/hosts 文件,增加以下配置,使其能够解析到上述 service。
|
||||
|
||||
```ini
|
||||
172.20.0.119 zeppelin.traefik.io
|
||||
172.20.0.119 spark.traefik.io
|
||||
```
|
||||
|
||||
172.20.0.119是我设置的VIP地址,VIP的设置和traefik的配置请查看[kubernetes-handbook](https://github.com/rootsongjc/kubernetes-handbook)。
|
||||
172.20.0.119 是我设置的 VIP 地址,VIP 的设置和 traefik 的配置请查看 [kubernetes-handbook](https://github.com/rootsongjc/kubernetes-handbook)。
|
||||
|
||||
**spark ui**
|
||||
**Spark UI**
|
||||
|
||||
访问 `http://spark.traefik.io`
|
||||
|
||||
![spark master ui](../images/spark-ui.jpg)
|
||||
|
||||
**zeppelin ui**
|
||||
**Zeppelin UI**
|
||||
|
||||
访问 `http://zepellin.treafik.io`
|
||||
|
||||
|
|
Loading…
Reference in New Issue