2017-11-29 9 views
0

新しいLinux CentOS 7にkafka confluent oss 4.0をインストールしましたが、kafka接続の開始に失敗しました。Kafka Connectの起動に失敗しました

再現手順:

- Install Oracle JDK 8 
- Copy confluent-4.0.0 folder on opt/confluent-4.0.0 
- Run /opt/confluent-4.0.0/confluent start 

結果:

Starting zookeeper 
zookeeper is [UP] 
Starting kafka 
kafka is [UP] 
Starting schema-registry 
schema-registry is [UP] 
Starting kafka-rest 
kafka-rest is [UP] 
Starting connect 
\Kafka Connect failed to start 
connect is [DOWN] 

エラーログ(connect.stderr):

Exception in thread "main" java.lang.NoClassDefFoundError: io/confluent/connect/storage/StorageSinkConnectorConfig 
     at java.lang.ClassLoader.defineClass1(Native Method) 
     at java.lang.ClassLoader.defineClass(ClassLoader.java:763) 
     at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
     at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
     at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
     at org.apache.kafka.connect.runtime.isolation.PluginClassLoader.loadClass(PluginClassLoader.java:54) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     at java.lang.Class.getDeclaredConstructors0(Native Method) 
     at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) 
     at java.lang.Class.getConstructor0(Class.java:3075) 
     at java.lang.Class.newInstance(Class.java:412) 
     at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.getPluginDesc(DelegatingClassLoader.java:279) 
     at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanPluginPath(DelegatingClassLoader.java:260) 
     at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.scanUrlsAndAddPlugins(DelegatingClassLoader.java:201) 
     at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.registerPlugin(DelegatingClassLoader.java:193) 
     at org.apache.kafka.connect.runtime.isolation.DelegatingClassLoader.initLoaders(DelegatingClassLoader.java:153) 
     at org.apache.kafka.connect.runtime.isolation.Plugins.<init>(Plugins.java:47) 
     at org.apache.kafka.connect.cli.ConnectDistributed.main(ConnectDistributed.java:70) 
Caused by: java.lang.ClassNotFoundException: io.confluent.connect.storage.StorageSinkConnectorConfig 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
     at org.apache.kafka.connect.runtime.isolation.PluginClassLoader.loadClass(PluginClassLoader.java:62) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
     ... 22 more 

追加情報:

Javaバージョン:

java version "1.8.0_151" 
Java(TM) SE Runtime Environment (build 1.8.0_151-b12) 
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode 

CentOSにバージョン:

centos-release-7-4.1708.el7.centos.x86_64 

[編集:30/11/2017]すべてのプロパティファイルで 編集plugin.path変数は、問題を解決しませんでした。 plugin.pathとの分離がカフカConnectのデフォルトで有効になってクラスローディング、コンフルエント4.0.0で

./etc/schema-registry/connect-avro-distributed.properties:84:plugin.path=/opt/confluent-4.0.0/share/java 
./etc/schema-registry/connect-avro-standalone.properties:51:plugin.path=/opt/confluent-4.0.0/share/java 
./etc/kafka/connect-distributed.properties:95:plugin.path=/opt/confluent-4.0.0/share/java 
./etc/kafka/connect-standalone.properties:50:plugin.path=/opt/confluent-4.0.0/share/java 

答えて

2

: 'plugin.path' 変数を含むファイルの

一覧。

debまたはrpmパッケージからConfluent Platformをインストールする場合、plugin.pathのデフォルトの場所は事前に分かっています。あなたのようにコンフルエントプラットフォームをダウンロードしたときにこれは、相対パスである

plugin.path=share/java

:あなたがダウンロードして、どこかにあなたのファイルシステム内の集密プラットフォームのzipまたはtar.gzアーカイブを解凍するときしかし、設定されています

アーカイブ(zipまたはtar.gz)の場合、アーカイブを解凍する場所はわかりません(上記の例では、/opt/confluent-4.0.0/です)。CLIまたはConnectのビンスクリプトはあなたが密集プラットフォームを展開したディレクトリから実行している場合、この場所を推測することができるようになります

例えば、上記の例では:

cd /opt/confluent-4.0.0

./bin/confluent start

ファイルシステム内の任意のディレクトリから接続を開始できるようにするには、binディレクトリのConfluent P latformがあなたのPATHであり、あなたのプラグインの絶対パスの場所にプロパティplugin.pathを設定する必要があります。

コンフルエントCLI編集使用するには:

etc/schema-registry/connect-avro-distributed.properties

とここに(適切にあなたのplugin.pathを設定します:

./etc/kafka/connect-distributed.properties:通常のビンスクリプト編集用plugin.path=/opt/confluent-4.0.0/share/java

./etc/kafka/connect-standalone.properties

と(もう一度、あなたの例では:plugin.path=/opt/confluent-4.0.0/share/java)上記のように、あなたのplugin.pathを設定します。

+0

あなたの時間とあなたの答えに感謝します。 ./etc内のすべてのプロパティファイルを編集し、コンフルエントなインスタンスを破棄し、./bin/confluent startですべてを再起動しましたが、何も変わらず、すべてのサービスはUPですが、接続はまだ同じエラーでダウンしています。 – Dev

+0

plugin.pathを持つすべてのファイルを一覧表示します。 ./etc/schema-registry/connect-avro-distributed.properties:84:plugin.path=/opt/confluent-4.0.0/share/java ./etc//plugin.path =/opt/confluent-4.0.0/share/java ./etc/kafka/connect-distributed.properties:95:plugin.path=にスキーマレジストリ/ connect-avrostandalone.properties: /opt/confluent-4.0.0/share/java ./etc/kafka/connectstandalone.properties:50:plugin.path=/opt/confluent-4.0.0/share/java – Dev

+0

シンボリックリンクはありますか'share/java/kafka-connect-s3/storage-common'から' ../ kafka-connect-storage-common'に有効ですか?同様のリンクが 'kafka-connect-hdfs'に存在するはずです。 –

関連する問題