温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

kubernetes中搭建spark集群的方式

发布时间:2021-07-27 23:49:47 来源:亿速云 阅读:512 作者:chen 栏目:云计算

这篇文章主要讲解了“kubernetes中搭建spark集群的方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“kubernetes中搭建spark集群的方式”吧!

  • 适用场景:linux系统,已经搭建好kubernetes1.4及以上的集群,没有配置CA等认证,已经搭建DNS,其它情景仅作参考。

  • 如果还没有搭建DNS,请参考kubernetes中部署DNS搭建。

  • 相关的yaml文件已经上传到本人的github,需要用到的国外镜像也一并被我替换成了阿里云镜像,可直接下载使用

上节kubernetes中搭建spark集群 (一)说到spark mater和worker节点的ui都是单独的,没法在一个UI里实现查看,点击worker UI里的==back to master==也是返回不了master的UI的。并且此时集群外也无法访问我们的spark集群,这篇文章将重点介绍如何合并这些UI。

解决多UI合并和对外开放问题

这里以我集群中已经启动的spark集群为例

kubernetes中搭建spark集群的方式

如下图所示,外部没法正常访问集群中的spark集群,而且每个spark节点都有自己的UI用户界面,没法实现一个端口访问所有的UI

kubernetes中搭建spark集群的方式

针对这一情况,这里使用一个代理来实现合并,通过一个Python脚本创建了一个轻量级的HTTP服务器,它将所有的请求代理给你的Spark Master和Spark Workers。所有你需要做的是创建一个单一的SSH通道到这个代理,代理将转发所有的请求到相应的节点上。

kubernetes中搭建spark集群的方式

具体的实现过程如下:

1.创建代理POD

a.文件spark-ui-proxy-controller.yaml内容

kind: ReplicationController
apiVersion: v1
metadata:
  name: spark-ui-proxy-controller
spec:
  replicas: 1
  selector:
    component: spark-ui-proxy
  template:
    metadata:
      labels:
        component: spark-ui-proxy
    spec:
      containers:
        - name: spark-ui-proxy
          image: registry.cn-hangzhou.aliyuncs.com/sjq-study/spark-ui-proxy:1.0
          ports:
            - containerPort: 80
          resources:
            requests:
              cpu: 100m
          args:
            - spark-master:8080
          livenessProbe:
              httpGet:
                path: /
                port: 80
              initialDelaySeconds: 120
              timeoutSeconds: 5
  • 其中相关镜像已替换成阿里云镜像,可以直接下载使用。

b.创建RC

$ kubectl create -f spark-ui-proxy-controller.yaml

c.查看验证

$ kubectl get pods |grep spark-ui
spark-ui-proxy-controller-gkx2v   1/1       Running            0          5h
  • 已经running!

d.创建services

文件spark-ui-proxy-service.yaml 内容:

kind: Service
apiVersion: v1
metadata:
  name: spark-ui-proxy
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 80
      nodePort: 8082
  selector:
    component: spark-ui-proxy
  • 这里我将端口映射到了主机的8082端口,这样外部就可以通过该端口访问spark集群的工作界面了。

  • 创建

$ kubectl create -f spark-ui-proxy-service.yaml

e.查看验证

$ kubectl get svc |grep spark-ui
spark-ui-proxy   192.168.3.158   <nodes>       80:8082/TCP         4h

可以看出集群给services分配了一个192.168.3.158的集群IP,那么在集群内就可以通过这个Ip+port来访问spark集群的用户界面了。

实际搭建验证

a.集群外部通过暴露的端口进行访问,

这里我的主机IP为192.168.122.10,,,从ui-proxy映射的端口为8082,则访问http://192.168.122.10:8082 kubernetes中搭建spark集群的方式

  • 点击master中的任意worker节点均可跳转到相应的worker节点的Ui,并且点击worker中的==back to master==也能成功跳转到master

kubernetes中搭建spark集群的方式

b.集群内部访问

集群内通过主机的Ip+映射的port也能直接访问,或通过ui-proxy-service的IP(192.168.3.158)+port也能实现正常访问,

  • 未完待续!

感谢各位的阅读,以上就是“kubernetes中搭建spark集群的方式”的内容了,经过本文的学习后,相信大家对kubernetes中搭建spark集群的方式这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI