写点什么

TiSpark On Kubernetes 实践

  • 2022 年 7 月 11 日
  • 本文字数:1356 字

    阅读完需:约 4 分钟

作者: 数据小黑原文来源:https://tidb.net/blog/30f417ad


版权声明 ©


【是否原创】是


【首发渠道】TiDB 社区,转载请注明出处

概述

最近做了一下 TiSpark On Kubernetes 的实践,在开发环境中走通了 TiSpark On Kubernetes 的整个过程。此文介绍测试 TiSpark On Kubernetes 的 step by step 过程。

背景介绍

做此次探索,是源于一次讨论,(详情:https://asktug.com/t/topic/274926/12)。讨论解决方案的过程中 @Kongdom 同学表示,客户资源比较紧张,没有资源搭建独立的 Spark 运行环境。联想到最近遇到的一些项目有一些共同特点:


  • 项目初期资源规划按照应用 + 数据库做了规划,有一些资源比较紧张的项目,都有所谓先跑起来的说法。

  • 需求越提越多,项目经理需求控制的不好,其中一些需求,会给数据库造成较大的压力,基于种种原因,必须要做。

  • 很多的企业系统,晚上是没有访问的,资源闲置。


基于以上情景的总结,诞生了一个想法,如果晚上复用 k8s 的资源跑计算,利用 Spark 的计算能力解决一些 TiDB 计算瓶颈问题,是不是可以解决以上的困局。


在官方的图上稍作修改,架构图如下:


适用读者范围

  • 有现成的 k8s 测试环境和 TiDB 测试环境

  • 有一定的 k8s 运维基础

  • 运算资源比较紧张,有合理利用资源的需求

资源描述

  1. 一个 TiDB 集群,只是用来测试,满足最低部署要求就可以, 版本为 5.3.0。

  2. 一个 k8s 集群,我的 k8s 集群版本是 v1.18.20

  3. 下载 Spark 代码,版本 3.0.3,参考连接:https://github.com/apache/spark/archive/refs/tags/v3.0.3.tar.gz

  4. 克隆 https://gitee.com/a-i-c/tisparkonk8sshell.git

关键解释

  1. k8s 地址为 k8s 的 api server 地址如果实在搞不明白,可以直接把 k8s 的第一个 master 地址带入,端口默认 8443

  2. 我本机的 java 环境是 java version “1.8.0_251”,spark-2.4.5 on k8s 在此环境下是有问题的,而 TiSpark 集成 Spark3.0.X 环境,我始终未调通,所以运行环境用 spark-3.0.3,编译环境是 spark-2.4.5,镜像也依赖 spark-2.4.5。

实践过程

A. 准备 Spark 运行环境

解压下载的 v3.0.3.tar.gz,并导入 IDEA,克隆 tisparkonk8sshell 项目到 IDEA 中,拷贝 tisparkonk8sshell 中的 shells/init_spark_on_k8s.sh 到 spark 项目根目录下并执行。在 k8s 中创建 spark 命名空间。

B. 准备数据环境

在 TiDB 上构建两个库,建库脚本参考:tisparkonk8sshell 项目中 sqlfile/init.sql, 其中 sbtest.sbtest_o 为原始表,数据读取表,sbtest2.sbtest_t 为目标表,数据导入表。sbtest.sbtest_o 需要初始化数据,可以直接 source sqlfile/data.sql。

C. 快速体验

拷贝 tisparkonk8s 中的 shell/quick_start_sparkonk8s_245.sh 到 spark 项目根目录下。


跑任务之前,检查 sbtest2.sbtest_t 的数据量:



执行 sh quick_start_sparkonk8s_245.sh xxx.xxx.xxx.xxx,其中 xxx.xxx.xxx.xxx 修改为 k8s 地址, 项目正常开始运行会见到如下的日志:



使用 kubectl 查看 spark 空间中的 pod,如下:



跑任务之后,检查 sbtest2.sbtest_t 的数据量:


总结

这次实践只是做了一次 poc,离真正的生产运行还差很远,Spark 如果在 k8s 上部署 history server,后续的任务跟踪会更方便,这一块程序如果可以读取对象存储上的 sql 列表,直接进行计算和写入,使用起来门槛会更低。下一步准备做一个类似的框架,并开放出来,开放出来的代码包含上述测试所用代码。


用户头像

TiDB 社区官网:https://tidb.net/ 2021.12.15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
TiSpark On Kubernetes实践_实践案例_TiDB 社区干货传送门_InfoQ写作社区