apache spark kubernets 部署试用

spark 是一个不错的平台,支持rdd 分析stream 机器学习。。。
以下为使用kubernetes 部署的说明,以及注意的地方

具体的容器镜像使用别人已经构建好的

deploy yaml 文件

deploy-k8s.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:  
  name: spark-master
  namespace: big-data
  labels:
    app: spark-master
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: spark-master
    spec:
      containers:
      - name: spark-master
        image: bde2020/spark-master:2.3.1-hadoop2.7
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 7077
        - containerPort: 8080
        env:
        - name: ENABLE_INIT_DAEMON
          value: "false"
        - name: SPARK_MASTER_PORT
          value: "7077"

---

apiVersion: v1
kind: Service
metadata:
  name: spark-master-service
  namespace: big-data
spec:
  type: NodePort
  ports:
    - port: 7077
      targetPort: 7077
      protocol: TCP
      name: master
  selector:
    app: spark-master

---


apiVersion: v1
kind: Service
metadata:
  name: spark-webui-service
  namespace: big-data
spec:
  ports:
    - port: 8080
      targetPort: 8080
      protocol: TCP
      name: ui
  selector:
    app: spark-master
  type: NodePort


---

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: spark-webui-ingress
  namespace: big-data
spec:
  rules:
  - host: spark-webui.data.com
    http:
      paths:
      - backend:
          serviceName: spark-webui-service
          servicePort: 8080
        path: /

---


apiVersion: extensions/v1beta1
kind: Deployment
metadata:  
  name: spark-worker
  namespace: big-data
  labels:
    app: spark-worker
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: spark-worker
    spec:
      containers:
      - name: spark-worker
        image: bde2020/spark-worker:2.3.1-hadoop2.7
        imagePullPolicy: IfNotPresent
        env:
        - name: SPARK_MASTER
          value: spark://spark-master-service:7077
        - name: ENABLE_INIT_DAEMON
          value: "false"
        - name: SPARK_WORKER_WEBUI_PORT
          value: "8081"
        ports:
        - containerPort: 8081

---

apiVersion: v1
kind: Service
metadata:
  name: spark-worker-service
  namespace: big-data
spec:
  type: NodePort
  ports:
    - port: 8081
      targetPort: 8081
      protocol: TCP
      name: worker
  selector:
    app: spark-worker

---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: spark-worker-ingress
  namespace: big-data
spec:
  rules:
  - host: spark-worker.data.com
    http:
      paths:
      - backend:
          serviceName: spark-worker-service
          servicePort: 8081
        path: /

部署&&运行

  • 部署
kubectl apply -f deploy-k8s.yaml
  • 效果

    使用ingress 访问,访问域名 spark-webui.data.com


说明

  • 命名的问题
平时的习惯是deploy service 命名为一样的,但是就是这个就有问题的,因为k8s 默认会进行环境变量的注入,所以居然冲突的。
解决方法,修改名称,重新发布
具体问题:
dockerfile 中的以下环境变量
ENV SPARK_MASTER_PORT 7077
  • spark 任务运行
具体的运行可以参考官方demo,后期也会添加

参考资料

https://github.com/rongfengliang/spark-k8s-deploy
https://github.com/big-data-europe/docker-spark

posted on   荣锋亮  阅读(884)  评论(1编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示