暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

TiSpark 用户指南

原创 加菲猫 2022-06-10
1043

TiSpark 是 PingCAP 为解决用户复杂 OLAP 需求而推出的产品。它借助 Spark 平台,同时融合 TiKV 分布式集群的优势,和 TiDB 一起为用户一站式解决 HTAP (Hybrid Transactional/Analytical Processing) 的需求。

TiFlash 也是一个解决 HTAP 需求的产品。TiFlash 和 TiSpark 都允许使用多个主机在 OLTP 数据上执行 OLAP 查询。TiFlash 是列式存储,这提供了更高效的分析查询。TiFlash 和 TiSpark 可以同时使用。

TiSpark 依赖于 TiKV 集群和 Placement Driver (PD),也需要你搭建一个 Spark 集群。本文简单介绍如何部署和使用 TiSpark。本文假设你对 Spark 有基本认知。你可以参阅 Apache Spark 官网了解 Spark 的相关信息。

TiSpark 深度整合了 Spark Catalyst 引擎,可以对计算进行精确的控制,使 Spark 能够高效地读取 TiKV 中的数据。TiSpark 还提供索引支持,帮助实现高速点查。

TiSpark 通过将计算下推到 TiKV 中提升了数据查询的效率,减少了 Spark SQL 需要处理的数据量,通过 TiDB 内置的统计信息选择最优的查询计划。

TiSpark 和 TiDB 可以让用户无需创建和维护 ETL,直接在同一个平台上进行事务和分析两种任务。这简化了系统架构,降低了运维成本。

用户可以在 TiDB 上使用 Spark 生态圈的多种工具进行数据处理,例如:

  • TiSpark:数据分析和 ETL
  • TiKV:数据检索
  • 调度系统:生成报表

除此之外,TiSpark 还提供了分布式写入 TiKV 的功能。与使用 Spark 结合 JDBC 写入 TiDB 的方式相比,分布式写入 TiKV 能够实现事务(要么全部数据写入成功,要么全部都写入失败)。


警告

由于 TiSpark 直接访问 TiKV,所以 TiDB Server 使用的访问控制机制并不适用于 TiSpark。TiSpark v2.5.0 及以上版本实现了部分鉴权与授权功能,具体信息请参考安全

环境准备

目前 TiSpark 支持版本的兼容情况如下所示,你可以根据需要选择相应的 TiSpark 版本。

TiSpark 版本TiDB、TiKV、PD 版本Spark 版本Scala 版本
2.4.x-scala_2.115.x,4.x2.3.x,2.4.x2.11
2.4.x-scala_2.125.x,4.x2.4.x2.12
2.5.x5.x,4.x3.0.x,3.1.x2.12

TiSpark 可以在 YARN,Mesos,Standalone 等任意 Spark 模式下运行。

本部分描述了 TiKV 与 TiSpark 集群分开部署、Spark 与 TiSpark 集群独立部署,以及 TiKV 与 TiSpark 集群混合部署的建议配置。

关于如何通过 TiUP 部署 TiSpark,参见 TiSpark 部署拓扑

推荐配置

TiKV 与 TiSpark 集群分开部署的配置

对于 TiKV 与 TiSpark 分开部署的场景,可以参考如下建议配置:

  • 硬件配置

Spark 与 TiSpark 集群独立部署的配置

关于 Spark 的详细硬件推荐配置请参考 Spark 硬件配置,如下是 TiSpark 所需环境的简单描述:

  • 建议为 Spark 分配 32G 以上的内存,并为操作系统和缓存保留至少 25% 的内存。
  • 建议每台机器至少为 Spark 分配 8 到 16 核 CPU。起初,你可以设定将所有 CPU 核分配给 Spark。

TiKV 与 TiSpark 集群混合部署的配置

对于 TiKV 与 TiSpark 混合部署的场景,需在原有 TiKV 预留资源之外累加 Spark 所需部分,并分配 25% 的内存作为系统本身占用。

部署 TiSpark 集群

你可以在 TiSpark Releases 上下载对应版本的 TiSpark 的 jar 包,并存储到 ${SPARKPATH}/jars 目录下。


注意

TiSpark 2.1.x 及更早版本的 jar 文件名形如 tispark-core-2.1.9-spark_2.4-jar-with-dependencies.jar。请在 TiSpark Releases 中确认你需要的 TiSpark 版本的 jar 文件名。

以下是 TiSpark 2.4.1 版本 jar 包的安装示例:

wget https://github.com/pingcap/tispark/releases/download/v2.4.1/tispark-assembly-2.4.1.jar mv tispark-assembly-2.4.1.jar $SPARKPATH/jars/

spark-defaults.conf.template 文件拷贝到 spark-defaults.conf

cp conf/spark-defaults.conf.template conf/spark-defaults.conf

spark-defaults.conf 文件中添加如下内容:

spark.tispark.pd.addresses $pd_host:$pd_port spark.sql.extensions org.apache.spark.sql.TiExtensions

其中 spark.tispark.pd.addresses 允许输入按逗号 (',') 分隔的多个 PD 服务器,请指定每个服务器的端口号。例如,当你有多个 PD 服务器在 10.16.20.1,10.16.20.2,10.16.20.3 的 2379 端口上时,将配置 spark.tispark.pd.addresses10.16.20.1:2379,10.16.20.2:2379,10.16.20.3:2379


注意

如果 TiSpark 无法正常使用,请检查防火墙设置。你可以自行配置防火墙策略或者禁用防火墙。

在已有 Spark 集群上部署 TiSpark

如果在已有 Spark 集群上运行 TiSpark,则无需重启集群,你可以使用 Spark 的 --jars 参数将 TiSpark 作为依赖引入:

spark-shell --jars $TISPARK_FOLDER/tispark-${name_with_version}.jar

没有 Spark 集群的部署方式

如果没有使用中的 Spark 集群,推荐使用 Spark Standalone 模式部署 Spark,请参考 Spark Standalone。如果遇到问题,可以去 Spark 官网寻求帮助,也欢迎在 TiSpark 上提 issue

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论