nebula2.5.0 sst 导入无法生成sst 文件

提问参考模版:

  • nebula 版本:2.5.0
  • 部署方式(分布式 rpm):
  • 是否为线上版本:Y /
  • 硬件信息
    • 磁盘500ssd
    • CPU16c、32G内存信息
  • 问题的具体描述
    nebula2.5.0 sst 导入无法生成sst 文件
{
  # Spark relation config
  # Spark 相关信息配置
  # 参见: http://spark.apache.org/docs/latest/configuration.html
  spark: {
    app: {
      name: Spark Writer
    }

    driver: {
      cores: 1
      maxResultSize: 1G
    }

    executor: {
        memory:1G
    }

    cores:{
      max: 16
    }
  }

  # Nebula Graph relation config
  nebula: {
    address:{
      #灰度环境
      graph: ["10.130.166.241:9669","10.130.166.242:9669","10.130.166.243:9669","10.128.31.23:9669","10.131.55.170:9669","10.131.55.171:9669"]
      meta: ["10.130.166.241:9559", "10.130.166.242:9559", "10.130.166.243:9559"]
    }
    user: root
    pswd: nebula
    space: game

    # parameters for SST import, not required
    path:{
        local:"/tmp"
        remote:"hdfs://alg-hdfs/warehouse/net_kg/nebula/game/sst/game.sst"
        hdfs.namenode: "hdfs://alg-hdfs"
    }

    # nebula client connection parameters
    connection {
      # socket connect & execute timeout, unit: millisecond
      timeout: 30000
    }

    error: {
      # max number of failures, if the number of failures is bigger than max, then exit the application.
      max: 32
      # failed import job will be recorded in output path
      output: /tmp/errors
    }

    # use google's RateLimiter to limit the requests send to NebulaGraph
    rate: {
      # the stable throughput of RateLimiter
      limit: 1024
      # Acquires a permit from RateLimiter, unit: MILLISECONDS
      # if it can't be obtained within the specified timeout, then give up the request.
      timeout: 1000
    }
  }

  # Processing tags
  # There are tag config examples for different dataSources.
 tags: [
    # 与上述类似
    # 从 Hive 加载将执行命令 $ {exec} 作为数据集
     {
      name: query
      type: {
        source: csv
        sink: sst
      }
      path: "hdfs://alg-hdfs/warehouse/net_kg/nebula/app_data/V-query20210330.csv"
      # if your csv file has no header, then use _c0,_c1,_c2,.. to indicate fields
      fields: [query_id,name]
      nebula.fields: [name]
      vertex: {
        field:query_id
      }
      separator: ","
      header: false
      batch: 256
      partition: 32
    }
  ]

}

日志.txt (237.3 KB)

这是yarn使用的问题
INFO YarnAllocator: Executor for container container_e3912_1628656338012_2128100_01_000185 exited because of a YARN event (e.g., pre-emption) and not because of an error in the running job.

#!/bin/bash

export HADOOP_USER_NAME=net_kg

conf=nebula-import-sst-game.conf
ALG_HDFS=hdfs://alg-hdfs/warehouse/net_kg

${SPARK_HOME}/bin/spark-submit
–queue root.ipd.daily
–name “nebula-import-sst”
–master yarn
–driver-cores 16
–driver-memory 48g
–executor-memory 48g
–deploy-mode cluster
–num-executors 48
–executor-cores 16
–conf spark.port.maxRetries=1
–conf spark.yarn.maxAppAttempts=1
–conf spark.executor.memoryOverhead=8g
–conf spark.driver.memoryOverhead=8g
–conf spark.hadoop.fs.defaultFS="$ALG_HDFS"
–conf spark.default.parallelism=48
–conf spark.executor.extraJavaOptions="-XX:MaxDirectMemorySize=7372m"
–files “$conf”
–class com.vesoft.nebula.exchange.Exchange
lib/nebula-exchange-2.5.0.jar -c $conf -h -d

下面是spark -submit 脚本,yarn 怎么配置??、

yarn使用问题你在这贴出来我们也是搬运工,拿你的message去google。

有这个日志是跑成功了吗,hdfs 目录没有sst 文件,是不是配置不对

path:{
    local:"/tmp"
    remote:"hdfs://alg-hdfs/warehouse/net_kg/nebula/game/sst/game.sst"
    hdfs.namenode: "hdfs://alg-hdfs"
}

我这个hdfs 目录是要先创建好吗,还是导入程序会自动生成呀

hdfs 怎么没有端口号

这个集群的域名,好像这样就行

你生成sst过程中有48条数据处理失败,详细你要看下过程中的ERROR日志。

上面的日志文件就是error ,还有其他的日志吗在哪里看??

日志.txt (237.3 KB)

你们能不能封装一个工具,一键导入的那种,这个导入不会大数据spark 啥的的人不好排查问题啊

问下这边几百万数据,是有一条数据不行就不会生成sst 文件吗

你发出来的日志是driver上的日志,你可以通过yarn logs --applicationId application_1628656338012_2128100 看一下executor上的日志信息。

看最后的日志信息只是失败了48条数据,其他的会正常生成sst文件的。 你那边确认下你的hdfs路径是否是对的。

hdfs路径是对,我刚问的是要先在hdfs 上创建全路径的文件夹吗,还是程序回自动创建文件夹吗,hdfs只有上一级目录hdfs://alg-hdfs/warehouse/net_kg/nebula/game/
配置文件我配置的是hdfs://alg-hdfs/warehouse/net_kg/nebula/game/sst/game.sst 这个
少一级目录

配置文件中remote 只要配置一个目录就好了。 如果你配置的是hdfs://alg-hdfs/warehouse/net_kg/nebula/game/sst/game.sst 那你就要创建这么一个目录:

hdfs dfs -mkdir hdfs://alg-hdfs/warehouse/net_kg/nebula/game/sst/game.sst

hdfs 上面还是没有sst文件 ,发现有这个日志,是不是hdfs 还是地址不对啥的
path:{
local:"/tmp"
remote:“hdfs://alg-hdfs/warehouse/net_kg/nebula/game/sst”
hdfs.namenode: “hdfs://alg-hdfs”
}


你的hdfs地址有问题, 先把这个解决了吧。 要保证执行exchange的机器和使用的系统用户 能向hdfs上写文件。

问下,remote:“hdfs://alg-hdfs/warehouse/net_kg/nebula/game/sst”
hdfs.namenode: “hdfs://alg-hdfs” 这个地址是一定要配置的吗,还是只用上面的remote 就行

有没打出写到hdfs时 的日志吗? 这边找不到其他日志,到底是不是地址问题

这边核查hdfs 地址都没问题,可以写文件的。生成sst 那些有日志打出,告诉我一下这边好排查日志,不然没法解决问题