Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于SCQL run in kuscia中使用kusciadatamesh的一些疑问 #436

Open
Handikang opened this issue Jan 10, 2025 · 27 comments
Open

关于SCQL run in kuscia中使用kusciadatamesh的一些疑问 #436

Handikang opened this issue Jan 10, 2025 · 27 comments
Assignees

Comments

@Handikang
Copy link

Handikang commented Jan 10, 2025

Issue Type

Others

Have you searched for existing issues?

Yes

Link to Relevant Documentation

No response

Question Details

kuscua版本:0.8.0b0
scql版本:0.9.2b1

按照官方提供的https://www.secretflow.org.cn/zh-CN/docs/kuscia/v0.9.0b0/tutorial/run_scql_on_kuscia_cn
和https://www.secretflow.org.cn/zh-CN/docs/scql/0.9.2b1/topics/deployment/run-scql-on-kuscia
两个连接我将scql部署在了kuscia中,目前仅是单节点自查单表的sql
下面是对应的操作以及结果:
# 在容器内执行示例
export CTR_CERTS_ROOT=/home/kuscia/var/certs
curl -k -X POST 'https://localhost:8082/api/v1/domaindatasource/create' \
 --header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
 --header 'Content-Type: application/json' \
 --cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
 --key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
 --cacert ${CTR_CERTS_ROOT}/ca.crt \
 -d '{
  "domain_id": "com2023011620072311738",
  "datasource_id":"scql-demo-local-datasource",
  "type":"mysql",
  "name": "DemoDataSource",
  "info": {
      "database": {
          "endpoint": "10x.28.5.09:3306",
          "user": "root",
          "password": "123456",
          "database":"alice"
      }
  },
  "access_directly": true
}'


export CTR_CERTS_ROOT=/home/kuscia/var/certs
curl -k -X POST 'https://localhost:8082/api/v1/domaindata/create' \
 --header "Token: $(cat ${CTR_CERTS_ROOT}/token)" \
 --header 'Content-Type: application/json' \
 --cert ${CTR_CERTS_ROOT}/kusciaapi-server.crt \
 --key ${CTR_CERTS_ROOT}/kusciaapi-server.key \
 --cacert ${CTR_CERTS_ROOT}/ca.crt \
 -d '{
  "domain_id": "com2023011620072311738",
  "domaindata_id": "scqltable2",
  "datasource_id": "scql-demo-local-datasource",
  "name": "alice001",
  "type": "table",
  "relative_uri": "alice.user_credit",
  "columns": [
    {
      "name": "ID",
      "type": "str"
    },
    {
      "name": "credit_rank",
      "type": "int"
    },
    {
      "name": "income",
      "type": "int"
    },
    {
      "name": "age",
      "type": "int"
    }
  ]
}'


curl -X POST http://127.0.0.1:80/intra/project/create \
--header "host: scql-broker-intra.com2023011620072311738.svc" \
--header "kuscia-source: com2023011620072311738" \
-d '{
    "project_id":"demo2",
    "name":"demo2",
    "conf":{
        "spu_runtime_cfg":{
        "protocol":"SEMI2K",
        "field":"FM64"
        }
    },
   "description":"this is a project"
}'


curl -X POST http://127.0.0.1:80/intra/table/create \
--header "host: scql-broker-intra.com2023011620072311738.svc" \
--header "kuscia-source: com2023011620072311738" \
-H "Content-Type: application/json" \
-d '{
    "project_id": "demo2",
    "table_name": "ta",
    "ref_table": "scqltable2",
    "db_type": "mysql",
    "columns": [
        {"name":"ID","dtype":"string"},
        {"name":"credit_rank","dtype":"int"},
        {"name":"income","dtype":"int"},
        {"name":"age","dtype":"int"}
    ]
}'


curl -X POST http://127.0.0.1:80/intra/ccl/grant \
--header "host: scql-broker-intra.com2023011620072311738.svc" \
--header "kuscia-source: com2023011620072311738" \
-H "Content-Type: application/json" \
-d '{
    "project_id": "demo2",
    "column_control_list":[
    {"col":{"column_name":"ID","table_name":"ta"},"party_code":"com2023011620072311738","constraint":1},
    {"col":{"column_name":"age","table_name":"ta"},"party_code":"com2023011620072311738","constraint":1},
    {"col":{"column_name":"income","table_name":"ta"},"party_code":"com2023011620072311738","constraint":1},
    {"col":{"column_name":"credit_rank","table_name":"ta"},"party_code":"com2023011620072311738","constraint":1}
    ]
}'


curl -X POST http://127.0.0.1:80/intra/query \
--header "host: scql-broker-intra.com2023011620072311738.svc" \
--header "kuscia-source: com2023011620072311738" \
-H "Content-Type: application/json" \
-d '{
    "project_id": "demo2",
    "query":"SELECT * from ta;"
}'


下面是对应结果
curl -X POST http://127.0.0.1:80/intra/query \
--header "host: scql-broker-intra.com2023011620072311738.svc" \
--header "kuscia-source: com2023011620072311738" \
-H "Content-Type: application/json" \
-d '{
    "project_id": "demo2",
    "query":"SELECT * from ta;"
}'
{"status":{"code":320, "message":"RunExecutionPlan run jobs(fb626e58-cf02-11ef-a085-d2a244c564e6) failed, catch std::exception=[engine/datasource/odbc_adaptor.cc:44] catch unexpected Poco::Data::DataException: MySQL: [MySQL]: [Comment]: mysql_stmt_prepare error\t[mysql_stmt_error]: Table 'alice.scqltable2' doesn't exist\t[mysql_stmt_errno]: 1146\t[mysql_stmt_sqlstate]: 42S02\t[statemnt]: select scqltable2.ID,scqltable2.age,scqltable2.credit_rank,scqltable2.income from scqltable2;", "details":[]}, "result":null}



我的疑问是,通过kusciadatamesh路由到的数据源为什么没能找到ta对应的表alice.user_credit,而是通过kuscia中的domaindata去查
@zimu-yuxi
Copy link

mysql数据源ref_table使用alice.user_credit尝试下

@tyrone-yu
Copy link
Contributor

curl -X POST http://127.0.0.1:80/intra/table/create \
--header "host: scql-broker-intra.com2023011620072311738.svc" \
--header "kuscia-source: com2023011620072311738" \
-H "Content-Type: application/json" \
-d '{
    "project_id": "demo2",
    "table_name": "ta",
    "ref_table": "scqltable2",
    "db_type": "mysql",
    "columns": [
        {"name":"ID","dtype":"string"},
        {"name":"credit_rank","dtype":"int"},
        {"name":"income","dtype":"int"},
        {"name":"age","dtype":"int"}
    ]
}'

这里 ref_table 必须是物理表名,所以用 kuscia 的时候,kuscia 里面注册的表名要和原始的表名一致。目前只能这么使用,可能文档说明不是很清楚。

@Handikang
Copy link
Author

感谢回复,我这边重试一下

@Handikang
Copy link
Author

image
我这边再创建表阶段ref_table引用的是alice.user_credit就报kuscia那边没有这个domaindata了,所以这边就很奇怪

@tyrone-yu
Copy link
Contributor

image 我这边再创建表阶段ref_table引用的是alice.user_credit就报kuscia那边没有这个domaindata了,所以这边就很奇怪

注册 domaindata 的时候的 domaindata_id 也要改下,改成 alice.user_credit
SCQL 的逻辑是根据你提供的 query 找到对应 create table 的时候的 ref table,如果你用的是 kuscia 则用这个 ref table 去查询对应的 domaindata,所以 domaindata 要和 ref table 一致,也要和实际数据库里的表名一致

@Handikang
Copy link
Author

Handikang commented Jan 10, 2025 via email

@tyrone-yu
Copy link
Contributor

这个我也试过了,由于创建domaindata这种命名方式(alice.usercredit)不被允许,所以这种我也没跑通。

---原始邮件--- 发件人: @.> 发送时间: 2025年1月10日(周五) 下午4:12 收件人: @.>; 抄送: "Han @.@.>; 主题: Re: [secretflow/scql] 关于SCQL run in kuscia中使用kusciadatamesh的一些疑问 (Issue #436) 我这边再创建表阶段ref_table引用的是alice.user_credit就报kuscia那边没有这个domaindata了,所以这边就很奇怪 注册 domaindata 的时候的 domaindata_id 也要改下,改成 alice.user_credit SCQL 的逻辑是根据你提供的 query 找到对应 create table 的时候的 ref table,如果你用的是 kuscia 则用这个 ref table 去查询对应的 domaindata,所以 domaindata 要和 ref table 一致,也要和实际数据库里的表名一致 — Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

发一下你创建的时候 curl 命令,理论上不应该出现这种情况

@Handikang
Copy link
Author

image
好的,这边是对应的结果,您看下

@tyrone-yu
Copy link
Contributor

image 好的,这边是对应的结果,您看下

记错了 domaindata_id 要从 alice.usercredit 改成 usercredit

@Handikang
Copy link
Author

Handikang commented Jan 10, 2025 via email

@Handikang
Copy link
Author

您好,我这边还是像请教下SCQL run in kuscia中出现的问题:在邀请的时候报的错,但是其实两方通信是没问题的
Image

Image

kuscia版本是最新的,SCQL版本是0.7.0b1 @tyrone-yu

@zimu-yuxi
Copy link

参考这里,提供下相关日志

@Handikang
Copy link
Author

Image
下面是engine的日志

Image
这里面只有broker有报错,莫名其妙的错误 @zimu-yuxi

@jingshi-ant
Copy link
Collaborator

check下受邀请方的broker是否有报错,之前邀请有成功过吗?
测试broker之间网络是否可达,可以curl http://scql-broker-inter.{节点id}.svc

@Handikang
Copy link
Author

Handikang commented Jan 23, 2025

我在kuscia中没有邀请成功过
下面是对应broker之间通信curl的结果

Image

Image

Image

Image

但是两边路由其实是没问题的 @jingshi-ant

@jingshi-ant
Copy link
Collaborator

用最新版的kuscia、scql镜像试试看?文档里的配置和实际镜像版本不match也可能导致异常。
另外:如果broker服务拉起来了之后,http://scql-broker-inter.{节点id}.svc 一定是可访问的,http://scql-broker-intra.{节点id}.svc 类似

@jingshi-ant
Copy link
Collaborator

update:我在测试环境里验证了下curl远端参与方broker服务的指令以及输出,供参考:
curl scql-broker-inter.bob.svc/inter/project/invite -d '{}'
会有如下的输出:{"status":{"code":101, "message":"failed to query kuscia domain xxx

@Handikang
Copy link
Author

为啥我没有任何反应用相同的操作

Image

但是可以ping同这个svc

Image
有没有可能和这个端口没有放开到宿主机有关

Image

@jingshi-ant
Copy link
Collaborator

确认两边的broker都是正常拉起的吗?在两边都看下服务状态(curl后会有日志),以及check下服务是否可达。
如果没有其它线索的话,建议更新下镜像版本。

@Handikang
Copy link
Author

两边都是正常拉起的,而且SCQL和kuscia都是最新的版本

Image

Image

我以为是domianroute的问题,我删掉了之前的route,重新创建后状态如下,是进行创建host的时候要写对端ip还是要写对端kuscia容器的名字,我看好像cdr状态是false

Image

Image

我按照最新版本创建route的接口进行创建的
Image

@jingshi-ant
Copy link
Collaborator

cdr的创建问题建议在kuscia repo里咨询。 现在看起来是kuscia节点的router问题?

@Handikang
Copy link
Author

不是router的问题,我以为是router的问题,换了新版本也是报错,而且curl scql-broker-inter.bob.svc/inter/project/invite -d '{}'对端broker也是没有日志,而且我发现这个命令好像domainid不是对端的也一样的结果

Image

Image

Image

@jingshi-ant
Copy link
Collaborator

broker没有日志,应该是没正常收到请求导致的。 没太get到你为什么要curl bob/crd。你的两个kuscia节点应该是com开头的?你可以试试分别在两个kuscia节点里curl这两个svc:curl scql-broker-inter.com2023xxx.svc/inter/project/invite -d '{}',预期应该都会有broker的日志。
不过你的环境可能curl对端有问题。(请求发不出去)

@Handikang
Copy link
Author

Image

broker对端确实是没有有关curl的日志,但是其他接口调用是没问题的(创建表,授权CCL等),只是邀请对端会有问题

@yushiqie
Copy link

Image

broker对端确实是没有有关curl的日志,但是其他接口调用是没问题的(创建表,授权CCL等),只是邀请对端会有问题

创建表,授权CCL 不需要对端 broker 参与,可以先检查一下对端的 broker 应用服务状态是否是正常的

@Handikang
Copy link
Author

对端服务状态是没问题的,但是感觉问题出在broker的inter服务没有成功拦截到对端发起的邀请请求,下面是broker在kuscia中的日志,调自己这边不涉及到对端的接口是会有响应日志的,但是调inter的接口一点反应也没有,但我看服务没啥问题,感觉可能是没有请求到的原因,我看对内(22485)和对外(22486)的端口都没问题,这边有其他测试inter服务状态的方法么

Image

@yushiqie
Copy link

可以截图两边 broker pod 状态,以及 scql-broker-inter 详情

  1. pod 状态:kubectl -n xxx get po [broker 名称]
  2. service详情:kubectl -n xxx get svc scql-broker-inter -oyaml
  3. endpoint 详情:kubectl -n xxx get ep scql-broker-inter -oyaml
  4. 查看对端 kuscia 的网关 external.log 日志,看是否接收到请求发起方的 invit 请求,日志查看具体请参照 https://www.secretflow.org.cn/zh-CN/docs/kuscia/v0.13.0b1/deployment/logdescription#id3

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants