Spark Standalone集群升级步骤

Spark Standalone集群升级步骤

本文主要介绍Spark Standalone集群升级步骤,Spark on YARN模式、Spark on Mesos模式以及Spark on k8s 不在本文介绍范围。

要搞明白Spark Standalone集群升级步骤,首先需要了解一下Spark Standalone集群部署原理。

Spark Standalone集群部署原理

Spark Standalone集群使用Master-Slave模式,常见的部署见下图,一个Master+N个Slave。

Spark Standalone集群配置文件

Spark Standalone集群的配置文件都在conf目录下面,常用的有这几个:

  1. conf/spark-defaults.conf
  2. conf/spark-env.sh
  3. conf/log4j.properties

一般升级spark的时候,只需要把conf目录下面的文件拷贝到新的安装目录即可。

Spark Standalone集群运维

Spark Standalone集群运维脚本都在sbin目录下面,常用的有这几个:

  1. sbin/start-all.sh
  2. sbin/stop-all.sh

Spark Master会通过JVM启动org.apache.spark.deploy.master.Master这个Class。

Spark Worker会通过JVM启动org.apache.spark.deploy.worker.Worker这个Class。

可以通过ps或者jps查看当前机器是否已经启动了对应进程。

Spark Master会开启本地8080端口,可以通过http://${master ip}:8080查看对应的网页。

Spark日志一般在安装目录的logs子目录下,如果没有,请看一下conf/spark-env.sh里面的这个配置SPARK_LOG_DIR。

Spark Standalone集群升级步骤

准备工作

先确认一下

  1. 需要升级的spark集群是否是standalone集群(其他模式不在本文档描述范围)
  2. 是否单独给TiSpark使用(如果有其他业务使用,需要让其他业务确认)
  3. 有没有启动其他组件,例如thriftserver、zeppelin等(需要同时升级其他组件)

下载Spark

Spark下载地址 https://archive.apache.org/dist/spark/,

例如spark-2.4.3,建议下载

https://archive.apache.org/dist/spark/spark-2.4.3/spark-2.4.3-bin-hadoop2.7.tgz

下载TiSpark

TiSpark下载地址,https://github.com/pingcap/tispark/releases。

如果不知道下载哪个jar包,请看https://github.com/pingcap/tispark#how-to-choose-tispark-version。

升级步骤

  1. 停止老的spark集群 :运行 ./sbin/stop-all.sh,通过ps和jps确认进程已停止,同时看下进程日志进行确认

  2. 归档老集群:在所有master和slave机器上,将老的spark安装目录重命名

  3. 安装新集群:下载spark并解压到所有master和slave机器,并重命名为原来的名字

  4. 安装tispark jar包:tispark jar包有2中使用方式,具体用哪种需要看原来的集群是用哪种(看老的spark安装目录下jars子目录里面有没有tispark的jar包)

  5. 将tispark jar包拷贝到spark安装目录下面的jars子目录

  6. 运行bin/spark-shell的时候通过–jar命令指定tispark jar包

  7. 配置conf:将原来的conf目录拷贝到新的安装目录

  8. 启动新集群:在新的spark目录里面运行./sbin/start-all.sh

  9. 打开master web ui: http://${master ip}:8080,确认可以访问,确认work个数、core个数、内存数是否符合预期

  10. 简单测试:./bin/spark-shell --master spark://${master ip}:7077 运行一些简单的测试命令,例如看看是否能访问tidb

  11. 回归测试:运行客户之前的程序,看看是否有问题,结果是否正确

TiSpark兼容性

从TiSpark-1.x升级到TiSpark-2.x的时候需要特别注意一下兼容性,大概率需要客户修改代码。

TiSpark-1.x需要使用tidbMapDatabase才能访问tidb的数据,例如

import org.apache.spark.sql.TiContext

val ti = new TiContext (spark)

ti.tidbMapDatabase (“tpch_test”)

spark.sql(“select count(*) from lineitem”).show

但是到了TiSpark-2.x用户不需要调用tidbMapDatabase直接可以访问,例如

spark.sql(“use tpch_test”)

spark.sql(“select count(*) from lineitem”).show

2赞

学习了,感谢分享~

干货干货,感谢分享