Ohara: [Question] 確認 UI 在 upload file 之後建立 worker 時是使用 sharedJarKeys 還是 pluginKeys

Created on 17 Mar 2020  ·  8Comments  ·  Source: oharastream/ohara

目前使用 UI 的方式測試 jdbc source connector,在啟動 connector 時會收到以下的 exception:

[2020-03-17 04:13:08,191] ERROR WorkerConnector{id=0286dac6b-ssssss} Error while starting connector (org.apache.kafka.connect.runtime.WorkerConnector:118)
java.sql.SQLException: No suitable driver found for jdbc:mysql://10.4.3.1:3306/db
    at java.sql.DriverManager.getConnection(DriverManager.java:689)
    at java.sql.DriverManager.getConnection(DriverManager.java:247)
    at oharastream.ohara.client.database.DatabaseClient$Builder$$anon$1.<init>(DatabaseClient.scala:95)
    at oharastream.ohara.client.database.DatabaseClient$Builder.build(DatabaseClient.scala:83)
    at oharastream.ohara.connector.jdbc.source.DBTableDataProvider.<init>(DBTableDataProvider.scala:39)
    at oharastream.ohara.connector.jdbc.source.JDBCSourceConnector.run(JDBCSourceConnector.scala:46)
    at oharastream.ohara.kafka.connector.RowSourceConnector.start(RowSourceConnector.java:115)
    at org.apache.kafka.connect.runtime.WorkerConnector.doStart(WorkerConnector.java:110)
    at org.apache.kafka.connect.runtime.WorkerConnector.start(WorkerConnector.java:135)
    at org.apache.kafka.connect.runtime.WorkerConnector.transitionTo(WorkerConnector.java:195)
    at org.apache.kafka.connect.runtime.Worker.startConnector(Worker.java:257)

這個 exception 看起來是載入不到 mysql 的 jdbc driver,後來我這邊測試使用以下的 worker API 來建立 worker:

{
    "name": "wk01",
    "brokerClusterKey": {
        "group": "default",
        "name": "bk"
    },
    "nodeNames": [
        "10.100.0.138"
    ],
    "sharedJarKeys": [
      {
        "name": "mysql-connector-java-8.0.19.jar",
        "url": "http://10.100.0.138:5000/v0/downloadFiles/default/mysql-connector-java-8.0.19.jar",
        "tags": {},
        "classInfos": [],
        "group": "default"
      }
    ]
}

JDBC Source Connector 有成功的載入到 mysql 的 jdbc driver, 因此想確認前端在建立 worker 時,如果有用到第三方 jar 的部份時是使用 sharedJarKeys 還是 pluginKeys?

sharedJarKeys 會把 jar 檔 download 到 worker container 的 /home/ohara/default/libs 資料夾路徑
pluginKeys 會把 jar 檔 download 到 worker container 的 /home/ohara/default/plugins

因此第三方 jar 檔應該會使用 sharedJarKeys,客製化的 connector 會使用 pluginKeys

help wanted

All 8 comments

我們要如何區分Jar要上傳到sharedJarKeys還是pluginKeys?

我們要如何區分Jar要上傳到sharedJarKeys還是pluginKeys?

讓使用者自己去選 我們給足夠的說明就好

這是dependencies管理,不是我們能亂猜的,應該是使用者自己要決定

這個問題會牽涉到 UI 流程的修改,因此在 0.9 版使用簡單的方式來解決,就是直接寫個說明,如果要使用官方的 jdbc source connector 需要重新打包把 jdbc source connector 和 database driver 的 jar 檔包在一起才可以使用,希望在 0.10 的版本能做 UI 的調整,不然使用 jdbc source connector 會很不方便。

另外我在想,使用 stream 如果有使用第三方的 jar 檔,如果沒有打包在一起也應該會遇到相同的問題,因此我覺得這個問題的優先權可以放前面一點

另外我在想,使用 stream 如果有使用第三方的 jar 檔,如果沒有打包在一起也應該會遇到相同的問題,因此我覺得這個問題的優先權可以放前面一點

這個我之前在會議上提出來討論過,當時我提說要讓stream能接受"多個"jars,不過大家的結論是要保持現在的樣子就是只支援"單一"的jar

如果我們現在有一個強力的例子,或許可以再討論一次是否要讓stream支援多個jars

不過現在壓成uber jar應該不是一件很難的事情,要求使用者去壓uber jar是個可以接受的事情

FYI @vitojeng

或許可以再討論一次是否要讓stream支援多個jars

目前安排的考慮因素還是在 priority, 在可以用 uber jar 這個暫解的情形下, 這個工作的 priority 相對會比較低. 不過我想可以找時間討論, 看何時安排 wireframe 設計, 再另外視 priority 來安排實作.

補充一下一個重點:

因為我們官方的jdbc connector預期上是讓使用者"不用"改任何程式碼就能使用,因此現在UI限制導致使用者必須去壓uber jar是不太合理的事情,就這一點或許我們可以把priority稍微往上調一點

因為我們官方的jdbc connector預期上是讓使用者"不用"改任何程式碼就能使用,因此現在UI限制導致使用者必須去壓uber jar是不太合理的事情,就這一點或許我們可以把priority稍微往上調一點

+1
補充一下, 我先前說 priority 較低的想法是針對 "是否要讓stream支援多個jars"的部份. 而我們先前也尚未規劃要進行這部份.

對於 connector, 贊成 @chia7712 的想法. 這是我們原本就應該要做到的部份. 是我對這個 issue 誤解了.

+1
Support third party jar upload for the JDBC source connector

Was this page helpful?
0 / 5 - 0 ratings