写数据一半报错连接超时

  • nebula 版本:(3.5.0)

  • 部署方式:分布式

  • 安装方式: RPM

  • 是否上生产环境:N

  • 问题的具体描述
    使用阿里云上的datawork运行spark任务向nebula写入数据,使用的nebula-spark-connector_2.2的依赖包
    每次运行任务总是写入一半就报错连接超时 如下图:


请问这是什么原因呢

我们没有这个包,这是所有 spark-connector 的发版信息 Releases · vesoft-inc/nebula-spark-connector · GitHub

你确认下你用的 spark-connector 的版本号


我刚开始用的是3.0-NASHOP 这个版本 但是这版本里的spark是2.4.4版本 阿里云的spark版本是2.3.0的 版本太高了不能运行 所以我就在你们官方git上拉了这个2.2的 spark版本是2.2.0的

主要问题是 数据能写入 但是读出来5000条 我配置是一次性写入2000条 我写入一半 就报错了 但是有的能写入5000条 有的也能写入几十万条 但是都会报错连接超时 这是什么情况
目前知道的是 那边的映射ip是做过slb的,就是说 一个ip 对应了集群的3个ip 是不能这样映射还是说 我的代码有问题呢

我们之前有用户遇到过类似问题,是因为用户环境有权限限制,然后spark集群只有部分节点申请了网络权限,导致落到其他没有网络权限的spark节点上的任务都报错connection timed out 导致任务失败。
你要确认下spark集群所有节点是否都能连通lb 的ip。

ps:你的数据能导进去了,说明你的代码没问题的

1 个赞

怎么确认spark集群所有节点是否都能连通lb 的ip

运行环境是 阿里云的odps-spark环境 所以这个我应该怎么验证呢

刚才我设置了一个节点进行数据写入,但是程序数据写入一半还是报错连接超时 数据倒是比上次多了1000条左右 这是meta连接出现问题了吗

是meta 连接异常了,你看下meta 服务的日志,是不是发生了leader change。
有可能你的spark节点可以连上你在exchange配置文件中所配置的那个meta 服务,但是连不上 leader change后的meta服务。

如果写数据的时候出现 连接了 第一台的ip+9559 第二台的ip+9669 这样能写进去数据吗 因为做slb映射后 连接是动态的 随机匹配的

那不行啊,metaclient 只能去连9559的地址

1 个赞

我的意思是 我本身是一个集群 但是slb映射是动态的 就好比 a b c 三台服务器, 写数据的时候 连接的ip不是一台服务器的ip 比如 连接了a服务器这台 IP 的meta端口9559 但是 graph端口9669 所在的 IP 连接却是 b服务器的 IP 这样能写进去吗 中间写入会报错吗

graph 是做查询的,meta 存有元数据以及和存储进行通信。上面 nicola 的意思就是,无论你 meta 在 ipA 还是 ipB,它的 meta 信息一定要填 meta 服务所在的 ip。而不是 graph 服务所在的 ip(默认 meta 的端口是 9559,graph 的端口是 9669,一般来说填 9559 所在的地址指的就是 meta 所在的地址)。

我的集群 是 每一台服务器都有一个meta graph 和 stroage 所以 我才问你们 如果做了slb映射 他的选择是动态的 假设连接了 a服务器的graph ip+9669端口 和b服务器的 meta ip+9559端口 这种情况 会报错吗

我看了一下我的meta日志 发现日志里报错 leader 改变了 这个怎么解决呢 现在不管怎么连接 数据都写不进去
这是meta的日志


这是meta的配置文件

先看下 meta 这几个服务能不能互相通信,再看看能不能调整下 spark-connector 的 batch 值(调小点),还遇到这个问题不。

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