■ はじめに
ローカル環境のKafkaではまったトラブルについて メモっておく
目次
【0】今回の教訓 【1】エラー「DataException: JsonConverter with schemas.enable requires」が発生する 【2】エラー「SQLException: No suitable driver found for ...」が発生する 【3】エラー「ConnectException: Unable to initialize REST server」が発生
【0】今回の教訓
a) Kafka に原因があると分かった場合、以下を確認する
[1] 設定ファイル [2] 使用しているライブラリ(ドライバなど)
Dockerとか連携して使ってたら一旦落として再度立ち上げて試す
* あんま関係ないかもしれないが、Topicなど残っていたので、、、 ~~~~ # 一旦落とす sudo docker compose down -v # 立ち上げる sudo docker compose up -d ~~~~
【1】エラー「DataException: JsonConverter with schemas.enable requires」が発生する
ローカル環境のKafkaからSnowflakeに接続する際に 以下のエラー内容が表示されて、Snowflakeのデータが更新されない なお、エラー内容をヒントに以下のサイトの
https://github.com/confluentinc/kafka-connect-jdbc/issues/574
以下を設定ファイルに追加してもエラーが消えなかった。 ~~~~~ key.converter.schemas.enable=false value.converter.schemas.enable=false ~~~~~
1)エラー内容
org.apache.kafka.connect.errors.DataException: JsonConverter with schemas.enable requires "schema" and "payload" fields and may not contain additional fields. If you are trying to deserialize plain JSON data, set schemas.enable=false in your converter configuration. at org.apache.kafka.connect.json.JsonConverter.toConnectData(JsonConverter.java:308)
2)原因
* kafka/config配下の設定ファイルにミスがあった ~~~~~~~ key.converter[ゴミ]=org.apache.kafka.connect.storage.StringConverter ~~~~~~~
3)解決案
* 設定ファイルを正しく修正
修正後
# key.converter[ゴミ]=org.apache.kafka.connect.storage.StringConverter のゴミ部分を削除 key.converter=org.apache.kafka.connect.storage.StringConverter
【2】エラー「SQLException: No suitable driver found for ...」が発生する
ローカル環境のKafkaからSnowflakeに接続する際に 以下のエラー内容が表示されて、Snowflakeのデータが更新されない
1)エラー内容
Cause by] java.sql.SQLException: No suitable driver found for jdbc:snowflake://My_Environment.snowflakecomputing.com... at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:702)
2)原因
* ドライバが kafka/libs配下になかった
3)解決案
* 以下の手順で対応した [1] 対象DBのドライバをダウンロードする (今回の場合、以下のサイトから「snowflake-jdbc-3.13.28.jar」をダウンロード)
Snowflake-jdbcの場合
https://repo1.maven.org/maven2/net/snowflake/snowflake-jdbc/
[2] ローカル上のkafka/libs配下にドライバを配置する
【3】エラー「ConnectException: Unable to initialize REST server」が発生
* Kafka connectを起動した際に以下のエラー
エラー内容
ERROR Stopping due to error (org.apache.kafka.connect.cli.ConnectStandalone:130) org.apache.kafka.connect.errors.ConnectException: Unable to initialize REST server at org.apache.kafka.connect.runtime.rest.RestServer.initializeServer(RestServer.java:216) at org.apache.kafka.connect.cli.ConnectStandalone.main(ConnectStandalone.java:87) Caused by: java.io.IOException: Failed to bind to 0.0.0.0/0.0.0.0:8083 at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:349) at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:310) at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80) at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:234) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) at org.eclipse.jetty.server.Server.doStart(Server.java:401) at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:73) at org.apache.kafka.connect.runtime.rest.RestServer.initializeServer(RestServer.java:214) ... 1 more Caused by: java.net.BindException: Address already in use at java.base/sun.nio.ch.Net.bind0(Native Method) at java.base/sun.nio.ch.Net.bind(Net.java:459) at java.base/sun.nio.ch.Net.bind(Net.java:448) at java.base/sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:227) at java.base/sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:80) at org.eclipse.jetty.server.ServerConnector.openAcceptChannel(ServerConnector.java:344) ... 8 more
原因
* Port: 8083 を使用しているから
解決案
https://qiita.com/growsic/items/5c1626f60b5e5538d2b3
# lsof -i :<Port> lsof -i :8083 java 27731 user 105u IPv6 165447 0t0 TCP *:8083 (LISTEN) # kill -9 <PID> kill -9 27731
関連記事
Apache Kafka ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/04/26/103421
Apache Kafka ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/05/01/000000
Apache Kafka ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/23/235534
Apache Kafka ~ 環境構築 / Docker compose編 ~
https://dk521123.hatenablog.com/entry/2023/04/24/153846