TiSpark 服务安装、部署、测试

最近比较忙,之后会整理一下TiDB&TiSpark的学习心得,以及经历过的坑。


首先这边先贴2篇官方说明文档:


- [TiSpark 快速入门指南](https://github.com/pingcap/docs-cn/blob/master/tispark/tispark-quick-start-guide.md)

- [TiSpark 用户指南](https://github.com/pingcap/docs-cn/blob/master/tispark/tispark-user-guide.md)


可以参考官方文档,下载ansible大礼包,这边就不多赘述了。


## TiSpark 在 TiDB-Ansible 相关内容


- `tidb-ansible/roles/local/templates/binary_packages.yml.j2`

    - 此处为 tispark 下载连接,jar 包下载 [传送门](http://download.pingcap.org/tispark-0.1.0-SNAPSHOT-jar-with-dependencies.jar)


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

    - tispark 配置文件信息,文件配置示例 [Github](https://github.com/wsabc01/tidb-ansible/blob/tiSparkConf/conf/spark-defaults.yml) 格式为 `key: value`


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

    - tispark 安装步骤


## 部署 TiSpark 集群


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

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


- 修改 inventory.ini 文件

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

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


```YML
	[spark_master]
	spark-24 ansible_host=10.30.1.24  deploy_dir=/data3/deploy

	[spark_slaves]
	spark-25 ansible_host=10.30.1.25  deploy_dir=/data3/deploy
	spark-26 ansible_host=10.30.1.26  deploy_dir=/data3/deploy
	```


此处deploy_dir 为你想在spark_master&spark_slaves上安装spark的路径。


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

    - 已经安装 Spark ,修改 `{{deploy}}/spark/conf/spark-defaults.conf`


	```conf
	spark.tispark.table.scan_split_factor: 2
	# 每个 Region 被切割成多少块,比如 8 就是说一个 Region 切 8 块;默认一个 Region 一个块
	spark.tispark.task_per_split: 4
	# 每个 Spark  Task 使用多少并发量去并行读取块
	spark.locality.wait: 0s
	# spark 每次调度等多久,等一个本地计算
	spark.tispark.pd.addresses:                      10.30.1.24:2379,10.30.1.25:2379,10.30.1.26:2379
	# 指定 PD 信息
	spark.tispark.grpc.framesize:                    1564087970
	spark.tispark.grpc.timeout_in_sec:               100
	spark.tispark.meta.reload_period_in_sec:         60
	spark.tispark.plan.allowaggpushdown:             true
	spark.tispark.index.scan_batch_size:             500000
	spark.tispark.index.scan_concurrency:            2
	spark.tispark.table.scan_concurrency:            256
	# 新版本下分别控制索引 / 扫表读取的并发线程数
	spark.tispark.request.command.priority:          Normal
	# 新版本下对 TiKV 请求的优先级,如果是 OLTP 集群,请设定为 Low ,大小写敏感,可选有 High,Normal,Low
	```


这边配置注意 spark.tispark.pd.addresses 这个变量,需要把TiDB的集群中所有的PD全部配置上。


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

    - 已经安装 spark 的修改 {{deploy_dir}}/conf/spark-env.sh 文件

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


```CONF
	SPARK_EXECUTOR_CORES=5
	# cores 建议配置成核数
	SPARK_EXECUTOR_MEMORY=5g
	# 控制每个 Executor 占用多少内存,机器无其他服务时,建议总内存 80%
	SPARK_WORKER_CORES=5
	SPARK_WORKER_MEMORY=5g
	```


这边要注意配置的参数,和集群机器的配置要吻合,不然之后会报错“资源分配不够”,又得重新修改、部署。


### 安装 / 运维


- 执行 `ansible-playbook -i inventory.ini deploy.yml` 安装所有 TiDB 组件


- 以下为单独安装 spark 组件

        - 执行 `ansible-playbook -i inventory.ini deploy.yml -l spark_master,spark_slaves`


- 启动/停止

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

        - 执行 `ansible-playbook -i inventory.ini stop_spark.yml` 停止集群


### 运行方式如下


1. 通过 spark-shell 运行


- 登陆 10.30.1.24 机器


- 进入目录 `cd /data1/deploy/spark/bin`


- 执行 `./spark-shell`



```spark
import org.apache.spark.sql.TiContext
val ti = new TiContext(spark)
ti.tidbMapDatabase("mysql") // 将数据库 mysql 中的所有表映射为 Spark SQL 表,在当前会话中只能映射一个数据库,重复无效
spark.sql("show tables").show(truncate=false) // 查看当前数据库下所有表信息
```


2. 通过 TiSpark-SQL 运行

        - 下载 TiSpark-SQL [传送门](https://github.com/pingcap/tispark/tree/master/scripts)


- 将文件保存导 `{{deploy}}/spark/bin` 下,赋予执行权限


- 登陆 10.30.1.24 机器


- 进入目录 `cd /data1/deploy/spark/bin`


- 执行 `./tispark-sql`


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


ps:如果突然发现中间有部分内容配置错误,需要修改的,需要从修改的地方,重新部署一遍之后的配置。

你可能感兴趣的:(hadoop,TiSpark,TiDB)