跳到主要内容

StarRocks / Doris 目标端写入报错

现象

StarRocks / Doris 测试连接成功;但同步任务中断,日志中出现如下错误:

async flush data to doris failed,try to exist task, msg:UnknownHostException: null: Name or service not known java.net.UnknownHostException: null: Name or service not known

async flush data to starrocks failed, msg:ConnectException: Connection timed out (Connection timed out) org.apache.http.conn.HttpHostConnectException: Connect to 172.20.0.5:8040 [/172.20.0.5] failed: Connection timed out (Connection timed out)

排查

原因

  • 测试连接:CloudCanal 通过 JDBC 连接测试和获取元信息,默认使用 FE MySQL Server 端口(ip:9030)。
  • 数据写入:CloudCanal 使用 StreamLoad 将数据写入 StarRocks / Doris,默认使用以下端口之一:
    • FE HTTP Server:ip:8030
    • BE HTTP Server:ip:8040

解决

方法一:新增数据源

  1. 进入 数据源管理 -> 新增数据源 -> StarRocks / Doris

  2. 设置 Client 地址(内网 / 外网):

    • 填写 ip:9030(FE MySQL Server 端口默认为 9030)
  3. 设置 额外参数 -> privateHttpHost / publicHttpHost(根据 Client 的内网 / 外网):

    • 填写 ip:8030(FE HTTP Server 端口默认为 8030)

      注意:实际数据同步中,FE 可能会返回一个 BE 地址,该地址可能是内网 IP 或不可解析的 Hostname 导致同步任务报错。

    • 或填写 ip:8040(BE HTTP Server 端口默认为 8040)

方法二:修改已有数据源

  1. 进入 数据源管理 -> StarRocks / Doris -> 更多 -> 查看配置 -> privateHttpHost / publicHttpHost(根据 Client 的内网 / 外网):

    • 填写 ip:8030(FE HTTP Server 端口默认为 8030)

      注意:实际数据同步中,FE 可能会返回一个 BE 地址,该地址可能是内网 IP 或不可解析的 Hostname 导致同步任务报错。

    • 或填写 ip:8040(BE HTTP Server 端口默认为 8040)

  2. 进入 任务详情 -> 更多功能 -> 目标数据源配置 -> httpHost,修改为上一步填写的 privateHttpHost / publicHttpHost