写点什么

TiSpark 服务安装、部署及测试

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

    阅读完需:约 8 分钟

作者: 张鱼小丸子 -PingCAP 原文来源:https://tidb.net/blog/58c9e0cd

TiSpark 服务安装 部署 测试


部署 TiSpark 集群

TiDB-Ansible 与 TiSpark 的关系

  • tidb-ansible/roles/local/templates/binary_packages.yml.j2 下载连接

  • 此处为 tispark 下载连接,jar 包下载 传送门

  • tidb-ansible/conf/spark-defaults.yml

  • tispark 配置文件信息,文件配置示例 Github 格式为 key: value

  • tidb-ansible/roles/tispark/tasks/main.yml

  • 此处为 tispark 安装步骤

部署 TiSpark 准备

  • 确定目标节点已经安装 java 1.8 以上版本

  • 在目标节点执行 java -version 查看

  • 修改 inventory.ini 文件

  • spark_master 与 spark_slaves 为空时,默认安装在第一台 tidb /spark 目录下,该安装模式为 standalone

  • 以下为 spark 安装示例,非 standalone 模式

  • spark 默认安装为 standalone cluster

  • spark standalone cluster 模式下,master 不参与实际数据处理工作


注意:以下参数中有部分参数需要新版本才能使用 (2018 年 6 月之后的版本) 最新 spark 参数请关注 spark-default.yml


  • TiSpark 配置文件参数说明,按实际需求进行修改 tidb-ansible/conf/spark-defaults.yml

  • 已经安装 Spark ,修改 /spark/conf/spark-defaults.conf (可使用默认配置)

  • tidb-ansible/conf/spark-env.yml spark 环境变量信息

  • 已经安装 spark 的修改 /conf/spark-env.sh 文件,也可通过命令行参数进行覆盖指定

  • 根据机器配置调整 spark 所占用的 CPU & RAM,示例如下:

开始安装 TiSpark

TiDB 目前默认已安装一台 spark 节点。以下为安装 spark cluster 。需要编写 inventory.ini,在 master_spark & slaves_sparks 填写目标主机信息


  • 初始化 master_spark & slaves_sparks 目标主机信息

  • 执行 ansible-playbook -i inventory.ini bootstrap.yml -l master_spark,slaves_spark

  • 单独安装 spark 组件

  • 执行 ansible-playbook -i inventory.ini deploy.yml -l master_spark,slaves_spark

运维 TiSpark

  • 启动 / 停止:启动停止时 playbook 不会检测中间过程状态,需要人工通过 http:// masterip:8080/ 检查 spark cluster 状态

  • 执行 ansible-playbook -i inventory.ini start_spark.yml 启动集群

  • 执行 ansible-playbook -i inventory.ini stop_spark.yml 启动集群

测试 TiSpark 服务

TiSpark 相关端口 & IP

  • 注意防火墙放通以下端口: 8080,8081,7070,7077,4040

  • 网页: http://172.16.10.64:8080

  • 通信端口: spark://172.16.10.64:7077

  • PD 集群: 172.16.10.64:2379,172.16.10.65:2379,172.16.10.66:2379

运行方式如下(注意自己安装的 Spark 版本再执行)

  • 通过 TiSpark-SQL 运行

  • 下载 TiSpark-SQL 传送门

  • 将文件保存导 /spark/bin 下,赋予执行权限

  • 登陆 172.16.10.64 机器

  • 进入目录 cd /data3/deploy/spark/bin

  • 执行 ./tispark-sql

  • 直接输入 sql 语句,如 show databases;

spark 2.1.1 版本以及 2018 年 6 月份之前 tispark jar 包使用该步骤

  • 通过 spark-shell 运行

  • 登陆 172.16.10.64 机器

  • 进入目录 cd /data3/deploy/spark/bin

  • 执行 ./spark-shell

  • 如果使用 2.1.1 spark 配合 2018 年 6 月份以后 tispark jar 包,直接执行 spark.sql("show schemas").show() 只会出现一个 default database 现象,通过以上步骤引入 tispark jar 后,执行 spark.sql("use mysql").show()spark.sql("select count(*) from user").show() 会出现错误堆栈

Spark 2.3.2 版本

  • 通过 spark-shell 运行

  • 登陆 172.16.10.64 机器

  • 进入目录 cd /data3/deploy/spark/bin

  • 执行 ./spark-shell

  • 替换 spark.sql("show tables").show 该命令中的 show tables 即可执行 SQL 查询。

  • TiSpark 目前仅支持查询,暂不支持回写。回写需求请发邮件至 (support # pingcap.com) 或通过其他方式联系 PingCAP 官方支持

第三方工具连接 TiSpark

  • 可以使用 jdbc 连接 TiSpark 服务

  • 下载 ThriftServer 脚本 传送门

  • 将脚本复制到 /scripts/start-tithriftserver.sh

  • 执行脚本启动 jdbc 服务器

  • ThriftServer 提供 JDBC 访问入口, 适合 SQL workbench 之类的辅助 GUI 访问, 也可以使用 Hive Beeline 工具(但是实测下来仅限于 Hive 1.2 的 Beeline)

  • 其他工具

  • zeppelin

  • submitjob

使用 zeppelin 远程链接 Spark

安装 zeppelin

Zeppelin 目前已托管于 Apache 基金会,但并未列为顶级项目,可以在其公布的官网访问。


它提供了一个非常友好的 WebUI 界面,操作相关指令。它可以用于做数据分析和可视化。其后面可以接入不同的数据处理引擎。包括 Flink,Spark,Hive 等。支持原生的 Scala,Shell,Markdown 等。


官方提供更多安装方式,详情查看Using the official docker image


  1. 使用清华开源镜像站下载 Zeppelin

  2. 配置 conf/zeppelin-env.sh 将 SPARK_HOME 指向当前机器上的 SPARK 地址,例如

  3. 检查 jackson 相关 JAR 包


  • ls -al $SPARK_HOME/jars/jackson-* 查看 spark

  • 如现有版本比 Spark 内置版本旧,删除原有版本,用 spark/jars 下如下文件替换

  • zeppelin-0.7.3-bin-netinst/lib


  1. 启动 Zeppelin 服务


  • 服务将在本地 8080 启动


  1. 浏览器访问


  • 点击 Create New note, 选中 Default Interpreter Spark

  • 在页面中像 spark-shell 中一样测试

  • 点击 Shift+Enter 观察结果

FAQ

import tisaprk 失败问题 (早期版本)

  • 第一次测试 spark-shell 时,如遇见以下问题,请检查 /spark/conf/spark-defaults.yml 文件中是否有正确使用 spark.tispark.pd.addresses: 参数。

  • java.util.NoSuchElementException: spark.tispark.pd.addresses

index 下推

  • 查看是否开启 index 下推


spark.conf.get("spark.tispark.plan.allow_index_read")


  • 如果是 false,通过以下语句修改


spark.conf.set("spark.tispark.plan.allow_index_read", "true")


发布于: 刚刚阅读数: 3
用户头像

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

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

评论

发布
暂无评论
TiSpark 服务安装、部署及测试_TiDB 社区干货传送门_InfoQ写作社区