TiSpark 服务安装、部署及测试
作者: 张鱼小丸子 -PingCAP 原文来源:https://tidb.net/blog/58c9e0cd
TiSpark 服务安装 部署 测试
pingcap/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
通信端口: 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
使用清华开源镜像站下载 Zeppelin
配置 conf/zeppelin-env.sh 将 SPARK_HOME 指向当前机器上的 SPARK 地址,例如
检查 jackson 相关 JAR 包
ls -al $SPARK_HOME/jars/jackson-*
查看 spark如现有版本比 Spark 内置版本旧,删除原有版本,用 spark/jars 下如下文件替换
zeppelin-0.7.3-bin-netinst/lib
启动 Zeppelin 服务
服务将在本地 8080 启动
浏览器访问
点击 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")
版权声明: 本文为 InfoQ 作者【TiDB 社区干货传送门】的原创文章。
原文链接:【http://xie.infoq.cn/article/5ff86ed3464a8db83723228e2】。文章转载请联系作者。
评论