前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 K8S 部署一个 Spark History Server - 篇3

在 K8S 部署一个 Spark History Server - 篇3

作者头像
runzhliu
发布2020-08-06 10:07:39
9020
发布2020-08-06 10:07:39
举报
文章被收录于专栏:容器计算容器计算

History Server -> HS

1 Overview

因为这个系列的主要是想讲怎么在 K8S 上运行 HS,所以篇3讲述的就是这个,假设你已经有一个 K8S 集群,一个 build 好的 image,本文只是将 HS 运行在 K8S 上,关于日志和其他配置的最佳实践,本文不提供参考。

2 部署

要将 HS 部署在 K8S 集群里,需要一个 K8S 集群(Mac 用户可以用 Docker for Mac 或者 Minikube 来安装一个 K8S 集群),另外还有一个 build 好的 HS 镜像。

正如篇2说过的,Spark 提供了一个官方的 Dockerfile,安装官网文档直接 build 就可以了。

HS 可以说是一个无状态的应用,用 K8S 来部署再合适不过了。

具体而且合理的部署方案可以是部署一个 Deployment 作为 HS 的后端,再部署一个 Service 来做负载均衡。

需要知道启动 HS,还有一些配置需要调整,比如说如果需要从 HDFS 读取 Application 的作业信息的话,显然还需要配置读取的路径,否则就会从本地的默认 /tmp/spark-events 目录读取,然后还有端口之类的信息。

关于详细的配置方案,建议参考官方文档

代码语言:javascript
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: spark-history-server
spec:
  selector:
    matchLabels:
      run: spark-history-server
  replicas: 2
  template:
    metadata:
      labels:
        run: spark-history-server
    spec:
      containers:
        - image: hub.oa.com/runzhliu/spark:spark_2.11-2.4.3
          name: spark-history-server
          args: ["/opt/spark/bin/spark-class", "org.apache.spark.deploy.history.HistoryServer"]
          ports:
            - containerPort: 18080
              name: http
          env:
          - name: SPARK_HISTORY_OPTS
            value: "-Dspark.history.fs.logDirectory=file:///tmp"

然后通过下面的命令,创建一个 Service,来对 Deployment 做负载均衡,并且通过 NodePort 方式,可以访问到这两个 Pod。

代码语言:javascript
复制
kubectl expose Deployment spark-history-server --type=NodePort --name=spark-history-server

然后看看 Service 分配了哪个端口。确定是 30984。

代码语言:javascript
复制
# kubectl get svc
NAME                                     TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)             AGE
spark-history-server                     NodePort    10.98.209.80     <none>        18080:30984/TCP     3m29s

最后访问 HS。

image_1dj5ru3hm1c681ruci5n1k88muv19.png-53.5kB
image_1dj5ru3hm1c681ruci5n1k88muv19.png-53.5kB

3 Summary

在 K8S 集群部署 HS 其实本质上跟部署其他 Web 服务是没什么区别的,好处是 K8S 提供了更好的 Scalling 方法,也更容易运维。

到这里,本系列就讲完了,如果有任何问题,欢迎在本文下面提问,或者发邮件到 runzhliu@163.com

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-08-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1 Overview
  • 2 部署
  • 3 Summary
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档