tispark 使用写入大表卡顿,无法完成

问题:tidb目标表已经存在5000多万条数据,现在要从hive表将4000多万的数据表合并到tidb目标表中,通过tispark里option replice=true选项实现,spark任务卡顿,一直无法完成。


tispark代码:

写入的数据条数:43876213

表结构:

1 个赞

类似的情况可能的原因是gc过多或者shullfe有溢出到disk的情况,看一下有这两方面原因么?


我目前集群内存一共90G
spark提交的设置参数:

刚刚测了一次50w数据量的写入,共花了7.1分钟

时间跟环境也有很大关系,我这边测的最好的是tidb 8c16G tikv 8c16G 分别16个节点,普通SDD盘,2000万7分钟,50万数据repartition1000是不是有点多,你这个配置,按说200就够了,卡着的问题,有没有翻翻日志?有fail的task么?

我们tidb的节点配置低,节点不到5个,分区一开始用的就是200个,跑不动换成1000个也不行,有没有什么参数可以调优加快写入速度

1000分区写入的时候,tidb那边的cpu和io情况如何?是不是已经被打满了?目标被打满就是没有很好的办法优化,我目前遇到的情况,磁盘很差的情况下,很容易卡住。

你把卡住那个task的执行路径给我一下,我看看是卡在哪个任务上了,类似:


点击details里面的内容,还有tisaprk和spark的版本

spark版本是2.4.5
tispark版本是2.4.3-scala_2.11

你的目标tidb是悲观事务还是乐观事务?查了一下是两阶段提交的第二阶段,如果是悲观事务,从grafana查一下tikv的延迟等指标,看看tikv的运行情况吧

我们tidb的配置

如果只有一个主机,spark写数据没啥优势啊,考虑lighting的local backend模式?

麻烦给一个lighting从hive导入tidb的例子

我们多数情况下,用csv做的过度,关于lighting支持csv的情况,参考:https://docs.pingcap.com/zh/tidb/stable/migrate-from-csv-using-tidb-lightning
另外,如果是在测试评估hive到tidb的数据导出方式,tidb这一端是否可以考虑加点机器?只有一台机器混部的情况,很容易就打满资源了。建议,一个pd,一个tidb,三个tikv,tikv最好配置ssd,在这个环境上跑TiSpark输出数据相对能多测一些数据。

1 个赞

好的,多谢

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。