mac电脑exhange 导入CSV Connection refused报错

  • nebula 版本:3.4.0
  • 部署方式: 单机
  • 安装方式:Docker Desktop(Extensions中安装)
  • 是否上生产环境:N
  • 硬件信息
    • 磁盘
    • CPU、内存信息:mac os m2 16g
  • 问题的具体描述

使用mac 电脑安装的。进行exchange导入csv数据测试的时候报错,错误日志如下

2023-06-02 14:09:01 INFO  DAGScheduler:54 - Job 1 finished: count at Exchange.scala:146, took 0.481091 s
Exception in thread "main" com.facebook.thrift.transport.TTransportException: java.net.ConnectException: Connection refused (Connection refused)
	at com.facebook.thrift.transport.TSocket.open(TSocket.java:206)
	at com.facebook.thrift.transport.TFramedTransport.open(TFramedTransport.java:70)
	at com.vesoft.nebula.client.meta.MetaClient.getClient(MetaClient.java:151)
	at com.vesoft.nebula.client.meta.MetaClient.doConnect(MetaClient.java:130)
	at com.vesoft.nebula.client.meta.MetaClient.connect(MetaClient.java:119)
	at com.vesoft.exchange.common.MetaProvider.<init>(MetaProvider.scala:57)
	at com.vesoft.nebula.exchange.processor.VerticesProcessor.process(VerticesProcessor.scala:111)
	at com.vesoft.nebula.exchange.Exchange$$anonfun$main$2.apply(Exchange.scala:163)
	at com.vesoft.nebula.exchange.Exchange$$anonfun$main$2.apply(Exchange.scala:133)
	at scala.collection.immutable.List.foreach(List.scala:392)
	at com.vesoft.nebula.exchange.Exchange$.main(Exchange.scala:133)
	at com.vesoft.nebula.exchange.Exchange.main(Exchange.scala)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.spark.deploy.JavaMainApplication.start(SparkApplication.scala:52)
	at org.apache.spark.deploy.SparkSubmit.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:849)
	at org.apache.spark.deploy.SparkSubmit.doRunMain$1(SparkSubmit.scala:167)
	at org.apache.spark.deploy.SparkSubmit.submit(SparkSubmit.scala:195)
	at org.apache.spark.deploy.SparkSubmit.doSubmit(SparkSubmit.scala:86)
	at org.apache.spark.deploy.SparkSubmit$$anon$2.doSubmit(SparkSubmit.scala:924)
	at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:933)
	at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
Caused by: java.net.ConnectException: Connection refused (Connection refused)
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:476)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:218)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:200)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:394)
	at java.net.Socket.connect(Socket.java:606)
	at com.facebook.thrift.transport.TSocket.open(TSocket.java:201)
	... 23 more
2023-06-02 14:09:01 INFO  SparkContext:54 - Invoking stop() from shutdown hook
2023-06-02 14:09:01 INFO  AbstractConnector:318 - Stopped Spark@50510ecb{HTTP/1.1,[http/1.1]}{0.0.0.0:4040}
2023-06-02 14:09:01 INFO  SparkUI:54 - Stopped Spark web UI at http://192.168.124.2:4040
2023-06-02 14:09:01 INFO  MapOutputTrackerMasterEndpoint:54 - MapOutputTrackerMasterEndpoint stopped!
2023-06-02 14:09:02 INFO  MemoryStore:54 - MemoryStore cleared
2023-06-02 14:09:02 INFO  BlockManager:54 - BlockManager stopped
2023-06-02 14:09:02 INFO  BlockManagerMaster:54 - BlockManagerMaster stopped
2023-06-02 14:09:02 INFO  OutputCommitCoordinator$OutputCommitCoordinatorEndpoint:54 - OutputCommitCoordinator stopped!
2023-06-02 14:09:02 INFO  SparkContext:54 - Successfully stopped SparkContext
2023-06-02 14:09:02 INFO  ShutdownHookManager:54 - Shutdown hook called
2023-06-02 14:09:02 INFO  ShutdownHookManager:54 - Deleting directory /private/var/folders/z6/2ld_c4sj4t1ddrt27f8sl4hr0000gn/T/spark-559e637c-3375-4924-afef-a80279245190
2023-06-02 14:09:02 INFO  ShutdownHookManager:54 - Deleting directory /private/var/folders/z6/2ld_c4sj4t1ddrt27f8sl4hr0000gn/T/spark-1929c5df-464b-4a87-a073-4b6be9fef0c8

docker 容器

lixiangyu@192 / % docker ps
CONTAINER ID   IMAGE                               COMMAND                   CREATED      STATUS                 PORTS                                                                                                  NAMES
89cd8feb6696   vesoft/nebula-graphd:v3.4.0         "/usr/local/nebula/b…"   2 days ago   Up 4 hours (healthy)   0.0.0.0:58841->9669/tcp, 0.0.0.0:58839->19669/tcp, 0.0.0.0:58840->19670/tcp                            nebulagraph_graphd2
cdfcf57ad7f9   vesoft/nebula-graphd:v3.4.0         "/usr/local/nebula/b…"   2 days ago   Up 4 hours (healthy)   0.0.0.0:58835->9669/tcp, 0.0.0.0:58833->19669/tcp, 0.0.0.0:58834->19670/tcp                            nebulagraph_graphd1
f5ca525c9322   vesoft/nebula-graphd:v3.4.0         "/usr/local/nebula/b…"   2 days ago   Up 4 hours (healthy)   0.0.0.0:9669->9669/tcp, 0.0.0.0:58842->19669/tcp, 0.0.0.0:58843->19670/tcp                             nebulagraph_graphd
31805b7f4ce6   vesoft/nebula-storaged:v3.4.0       "/usr/local/nebula/b…"   2 days ago   Up 4 hours (healthy)   9777-9778/tcp, 9780/tcp, 0.0.0.0:58836->9779/tcp, 0.0.0.0:58837->19779/tcp, 0.0.0.0:58838->19780/tcp   nebulagraph_storaged0
45456152491a   vesoft/nebula-storaged:v3.4.0       "/usr/local/nebula/b…"   2 days ago   Up 4 hours (healthy)   9777-9778/tcp, 9780/tcp, 0.0.0.0:58818->9779/tcp, 0.0.0.0:58819->19779/tcp, 0.0.0.0:58820->19780/tcp   nebulagraph_storaged1
26dd2f911740   vesoft/nebula-storaged:v3.4.0       "/usr/local/nebula/b…"   2 days ago   Up 4 hours (healthy)   9777-9778/tcp, 9780/tcp, 0.0.0.0:58823->9779/tcp, 0.0.0.0:58821->19779/tcp, 0.0.0.0:58822->19780/tcp   nebulagraph_storaged2
61f5f4037eff   vesoft/nebula-metad:v3.4.0          "/usr/local/nebula/b…"   2 days ago   Up 4 hours (healthy)   9560/tcp, 0.0.0.0:58826->9559/tcp, 0.0.0.0:58824->19559/tcp, 0.0.0.0:58825->19560/tcp                  nebulagraph_metad1
c8daa71e9fc0   weygu/nebula-webconsole:latest      "/app/cloudshell --a…"   2 days ago   Up 4 hours (healthy)   0.0.0.0:8376->8376/tcp                                                                                 nebulagraph_webshell
1430e455919a   vesoft/nebula-metad:v3.4.0          "/usr/local/nebula/b…"   2 days ago   Up 4 hours (healthy)   9560/tcp, 0.0.0.0:58829->9559/tcp, 0.0.0.0:58827->19559/tcp, 0.0.0.0:58828->19560/tcp                  nebulagraph_metad2
18c1240cda2c   vesoft/nebula-graph-studio:v3.6.2   "./server"                2 days ago   Up 4 hours (healthy)   0.0.0.0:17001->7001/tcp                                                                                weygu_nebulagraph-dd-ext-desktop-extension-studio-1
905a7457b817   vesoft/nebula-metad:v3.4.0          "/usr/local/nebula/b…"   2 days ago   Up 4 hours (healthy)   9560/tcp, 0.0.0.0:58832->9559/tcp, 0.0.0.0:58830->19559/tcp, 0.0.0.0:58831->19560/tcp                  nebulagraph_metad0
ca285e0017fe   vesoft/nebula-graph-studio:v3.2.5   "./server"                2 days ago   Up 4 hours (healthy)   0.0.0.0:17002->7001/tcp                                                                                weygu_nebulagraph-dd-ext-desktop-extension-studio_lagacy-1

conf文件

{
  # Spark 相关配置
  spark: {
    app: {
      name: NebulaGraph Exchange 3.4.0
    }
    driver: {
      cores: 1
      maxResultSize: 1G
    }
    executor: {
        memory:1G
    }

    cores: {
      max: 16
    }
  }

  # NebulaGraph 相关配置
  nebula: {
    address:{
      # 指定 Graph 服务和所有 Meta 服务的 IP 地址和端口。
      # 如果有多台服务器,地址之间用英文逗号(,)分隔。
      # 格式:"ip1:port","ip2:port","ip3:port"
      graph:["127.0.0.1:9669"]
      #任意一个 Meta 服务的地址。
      #如果您的 NebulaGraph 在虚拟网络中,如k8s,请配置 Leader Meta的地址。
      meta:["127.0.0.1:9559"]
    }

    # 指定拥有 NebulaGraph 写权限的用户名和密码。
    user: root
    pswd: nebula

    # 指定图空间名称。
    space: basketballplayer
    connection: {
      timeout: 3000
      retry: 3
    }
    execution: {
      retry: 3
    }
    error: {
      max: 32
      output: /Users/lixiangyu/work/nebula/exchange/errors
    }
    rate: {
      limit: 1024
      timeout: 1000
    }
  }

  # 处理点
  tags: [
    # 设置 Tag player 相关信息。
    {
      # 指定 NebulaGraph 中定义的 Tag 名称。
      name: player
      type: {
        # 指定数据源,使用 CSV。
        source: csv

        # 指定如何将点数据导入 NebulaGraph:Client 或 SST。
        sink: client
      }

      # 指定 CSV 文件的路径。
      # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。
      # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.csv"。
      path: "/Users/lixiangyu/work/nebula/exchange/dataset/vertex_player.csv"

      # 如果 CSV 文件没有表头,使用 [_c0, _c1, _c2, ..., _cn] 表示其表头,并将列指示为属性值的源。
      # 如果 CSV 文件有表头,则使用实际的列名。
      fields: [_c1, _c2]

      # 指定 NebulaGraph 中定义的属性名称。
      # fields 与 nebula.fields 的顺序必须一一对应。
      nebula.fields: [age, name]

      # 指定一个列作为 VID 的源。
      # vertex 的值必须与上述 fields 或者 csv.fields 中的列名保持一致。
      # 目前,NebulaGraph 3.5.0仅支持字符串或整数类型的 VID。
      vertex: {
        field:_c0
      # udf:{
      #            separator:"_"
      #            oldColNames:[field-0,field-1,field-2]
      #            newColName:new-field
      #        }
        # policy:hash
      }

      # 指定的分隔符。默认值为英文逗号(,)。
      separator: ","

      # 如果 CSV 文件有表头,请将 header 设置为 true。
      # 如果 CSV 文件没有表头,请将 header 设置为 false。默认值为 false。
      header: false

      # 指定单批次写入 NebulaGraph 的最大点数量。
      batch: 256

      # 指定 Spark 分片数量。
      partition: 32
    }

    # 设置 Tag team 相关信息。
    {
      # 指定 NebulaGraph 中定义的 Tag 名称。
      name: team
      type: {
        # 指定数据源,使用 CSV。
        source: csv

        # 指定如何将点数据导入NebulaGraph:Client 或 SST。
        sink: client
      }

      # 指定 CSV 文件的路径。
      # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。
      # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.csv"。
      path: "/Users/lixiangyu/work/nebula/exchange/dataset/vertex_team.csv"

      # 如果 CSV 文件没有表头,使用 [_c0, _c1, _c2, ..., _cn] 表示其表头,并将列指示为属性值的源。
      # 如果 CSV 文件有表头,则使用实际的列名。
      fields: [_c1]

      # 指定 NebulaGraph 中定义的属性名称。
      # fields 与 nebula.fields 的顺序必须一一对应。
      nebula.fields: [name]

      # 指定一个列作为 VID 的源。
      # vertex 的值必须与上述 fields 或者 csv.fields 中的列名保持一致。
      # 目前,NebulaGraph 3.5.0仅支持字符串或整数类型的 VID。
      vertex: {
        field:_c0
        # policy:hash
      }

      # 指定的分隔符。默认值为英文逗号(,)。
      separator: ","

      # 如果 CSV 文件有表头,请将 header 设置为 true。
      # 如果 CSV 文件没有表头,请将 header 设置为 false。默认值为 false。
      header: false

      # 指定单批次写入 NebulaGraph 的最大点数量。
      batch: 256

      # 指定 Spark 分片数量。
      partition: 32
    }

    # 如果需要添加更多点,请参考前面的配置进行添加。
  ]
  # 处理边
  edges: [
    # 设置 Edge type follow 相关信息。
    {
      # 指定 NebulaGraph 中定义的 Edge type 名称。
      name: follow
      type: {
        # 指定数据源,使用 CSV。
        source: csv

        # 指定如何将点数据导入NebulaGraph:Client 或 SST。
        sink: client
      }

      # 指定 CSV 文件的路径。
      # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。
      # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.csv"。
      path: "/Users/lixiangyu/work/nebula/exchange/dataset/edge_follow.csv"

      # 如果 CSV 文件没有表头,使用 [_c0, _c1, _c2, ..., _cn] 表示其表头,并将列指示为属性值的源。
      # 如果 CSV 文件有表头,则使用实际的列名。
      fields: [_c2]

      # 指定NebulaGraph中定义的属性名称。
      # fields 与 nebula.fields 的顺序必须一一对应。
      nebula.fields: [degree]

      # 指定一个列作为起始点和目的点的源。
      # vertex 的值必须与上述 fields 或者 csv.fields 中的列名保持一致。
      # 目前,NebulaGraph 3.5.0仅支持字符串或整数类型的 VID。
      source: {
        field: _c0
      # udf:{
      #            separator:"_"
      #            oldColNames:[field-0,field-1,field-2]
      #            newColName:new-field
      #        }
      }
      target: {
        field: _c1
      # udf:{
      #            separator:"_"
      #            oldColNames:[field-0,field-1,field-2]
      #            newColName:new-field
      #        }
      }

      # 指定的分隔符。默认值为英文逗号(,)。
      separator: ","

      # 指定一个列作为 rank 的源(可选)。

      #ranking: rank

      # 如果 CSV 文件有表头,请将 header 设置为 true。
      # 如果 CSV 文件没有表头,请将 header 设置为 false。默认值为 false。
      header: false

      # 指定单批次写入 NebulaGraph 的最大边数量。
      batch: 256

      # 指定 Spark 分片数量。
      partition: 32
    }

    # 设置 Edge type serve 相关信息。
    {
      # 指定 NebulaGraph 中定义的 Edge type 名称。
      name: serve
      type: {
        # 指定数据源,使用 CSV。
        source: csv

        # 指定如何将点数据导入NebulaGraph:Client 或 SST。
        sink: client
      }

      # 指定 CSV 文件的路径。
      # 如果文件存储在 HDFS 上,用双引号括起路径,以 hdfs://开头,例如"hdfs://ip:port/xx/xx"。
      # 如果文件存储在本地,用双引号括起路径,以 file://开头,例如"file:///tmp/xx.csv"。
      path: "/Users/lixiangyu/work/nebula/exchange/dataset/edge_serve.csv"

      # 如果 CSV 文件没有表头,使用 [_c0, _c1, _c2, ..., _cn] 表示其表头,并将列指示为属性值的源。
      # 如果 CSV 文件有表头,则使用实际的列名。
      fields: [_c2,_c3]

      # 指定NebulaGraph中定义的属性名称。
      # fields 与 nebula.fields 的顺序必须一一对应。
      nebula.fields: [start_year, end_year]

      # 指定一个列作为起始点和目的点的源。
      # vertex 的值必须与上述 fields 或者 csv.fields 中的列名保持一致。
      # 目前,NebulaGraph 3.5.0仅支持字符串或整数类型的 VID。
      source: {
        field: _c0
      }
      target: {
        field: _c1
      }

      # 指定的分隔符。默认值为英文逗号(,)。
      separator: ","

      # 指定一个列作为 rank 的源(可选)。
      #ranking: _c5

      # 如果 CSV 文件有表头,请将 header 设置为 true。
      # 如果 CSV 文件没有表头,请将 header 设置为 false。默认值为 false。
      header: false

      # 指定单批次写入 NebulaGraph 的最大边数量。
      batch: 256

      # 指定 Spark 分片数量。
      partition: 32
    }

  ]
  # 如果需要添加更多边,请参考前面的配置进行添加。
}

麻烦给看一下是什么问题?

应该是通信问题,你看下思为之前的配置文件,参考着调整下你的配置 无依赖单机尝鲜 Nebula Exchange 的 SST 导入

关键是 exechange 不只需要访问 graphd 还需要访问 meta/storage,最方便的是把 exechange 的 spark 环境放到同一个 docker 网络里,这样可以正常通过 container name 解析访问。

extension的话,你安装 NebulaGraph AI 环境 Spark Mode,里边自带容器网络内的 spark,你在那里边跑 exchange 就可以了哈

未来我加一个 exchange playground 进去

另外,请问 docker hub 似乎被墙了,你是怎么安装 docker desktop Extension 的,自定义的 mirror repo 么?

此外,现在 nebula-up ( http://nebula-up.siwei.io/ )有 exchange playground(用 all-in-one mode),可以一键试玩 exchange

2 个赞

好的,我去试一下。我是修改了docker engine, 改成了阿里云的源,有时候也会出现加载不了。nebula-up可以在mac上使用吗 ?需要如何操作?

1 个赞

直接运行,啥都不需要,原生支持

好的,谢谢。还有一个问题请教一下我在extension里面安装 NebulaGraph AI 环境 Spark Mode。点击install Spark Mode以后,变成灰色,过段时间又变成蓝色,没有安装成功。是不是因为docker hub被墙的原因?

变成蓝色之后再等一会儿呢?要下载 jar 包和拉额外镜像,可以去 .nebulagraph 里手动启动涉及到的 额外 docker-compose 文件
配置 docker hub mirror 应该可以解决景象拉取问题


没有找到docker-compose文件,应该是没有拉取下来

ngai 下边呢?没有的话,是因为 github 访问受阻了,因为那些文件我是从 github 下载的

你也可以手动下载

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