web-dev-qa-db-ja.com

WindowsでConfluentスキーマレジストリを起動する

Windows環境と独自のkafkaおよびzookeeperのセットを実行しています。カスタムオブジェクトを使用するには、Avroを使い始めました。しかし、レジストリを開始する必要がありました。Confluentプラットフォームをダウンロードして、これを実行しました。

$ ./bin/schema-registry-start ./etc/schema-registry/schema-registry.properties
/c/Confluent/confluent-3.0.0-2.11/confluent-3.0.0/bin/schema-registry-run-class: line 103: C:\Program: No such file or directory

次に、インストールページにこれが表示されます。

「現在、ConfluentはWindowsをサポートしていません。WindowsユーザーはZipおよびtarアーカイブをダウンロードして使用できますが、bin /ディレクトリのラッパースクリプトを使用するのではなく、jarファイルを直接実行する必要があります。」

Windows環境でコンフルエントなスキーマレジストリを開始するにはどうすればよいですか?

スクリプトの内容を見て、解読が難しい。

ありがとう

10
user1860447

Ewen Cheslack-Postavaが示唆するように、誰かがWindows.batファイルを作成しました

https://github.com/renukaradhya/confluentplatform/tree/master/bin/windows

schema-registry-run-class.batschema-registry-start.bat\confluent\bin\windowsディレクトリに保存した後、次のコマンドでスキーマレジストリを実行できました。

C:\confluent\bin\windows\schema-registry-start.bat C:\confluent\etc\ schema-registry\schema-registry.properties

7
curtisp

現時点では、ConfluentPlatformにはWindows用のスクリプトは付属していません。ただし、Javaアプリケーションの実行に慣れている場合は、独自に作成できます。 _schema-registry-server-start_スクリプト(およびそれが依存する_schema-registry-run-class_スクリプト)は、_-daemon_モードの処理、Javaメモリオプションの設定、デフォルトのログ構成のセットアップなどを行います。しかし、最終的に重要なのは、_io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain_をメインメソッドとしてJavaを実行することです。 Kafkaの_kafka-run-class.bat_も便利なベースとして見つかります: https://github.com/Apache/kafka/blob/trunk/bin/windows/kafka-run -class.bat

この問題は、Windows環境のJava_HOME環境設定にスペースが存在する可能性があります(「C:\ ProgramFiles ...」ではなく「C:\ Program」のエラーメッセージで示されます)。

Schema-registry-run-classスクリプトの最後の "exec"をWord "echo"に置き換えることで、schema_registryを起動するための最後のJava呼び出し)の正確な構文を決定できます。かなり複雑なコマンドが表示されます

/Library/Java/JavaVirtualMachines/jdk1.8.0_91.jdk/Contents/Home/bin/Java -Xmx512M -server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+DisableExplicitGC -Djava.awt.headless=true -Dcom.Sun.management.jmxremote -Dcom.Sun.management.jmxremote.authenticate=false -Dcom.Sun.management.jmxremote.ssl=false -Dlog4j.configuration=file:/opt/confluent/bin/../etc/schema-registry/log4j.properties -cp :/opt/confluent/bin/../package-schema-registry/target/kafka-schema-registry-package-*-development/share/Java/schema-registry/*:/opt/confluent/bin/../share/Java/confluent-common/*:/opt/confluent/bin/../share/Java/rest-utils/*:/opt/confluent/bin/../share/Java/schema-registry/* io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain

そのコマンドは、「Java [core-Java-opts] [Java-defines] -cp [classpath] io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain」に要約されます。

「/ opt/confluent」参照をConfluentインストールの実際の場所に置き換えると、運がはるかに良くなると思います。

注:多くの標準スクリプトではC:\ Program Filesの展開場所に問題があるため、Windowsの顧客の場所(「C:\ Java8」など)にJavaをインストールすることをお勧めします。

2
David Tucker

スキーマレジストリ実行クラスbatファイルのコードは次のとおりです。schema-registry-run-class.batとして保存

@echo off

setlocal EnableExtensions EnableDelayedExpansion
pushd %~dp0..\..
set BASE_DIR=%CD%
popd

for %%i in (%BASE_DIR%/package-schema-registry/target/kafka-schema-registry-package-*-development) do (
    call :concat %%i/share/Java/schema-registry/*
)

for %%i in (confluent-common, rest-utils, schema-registry) do (
    call :concat %BASE_DIR%/share/Java/%%i/*
)

rem Log4j settings
IF ["%SCHEMA_REGISTRY_LOG4J_OPTS%"] EQU [""] (
    if exist %~dp0../../etc/schema-registry/log4j.properties (
        set SCHEMA_REGISTRY_LOG4J_OPTS=-Dlog4j.configuration=file:%~dp0../../etc/schema-registry/log4j.properties
    ) else (
        set SCHEMA_REGISTRY_LOG4J_OPTS=-Dlog4j.configuration=file:%BASE_DIR%/config/log4j.properties
    )
)

rem JMX settings
IF ["%SCHEMA_REGISTRY_JMX_OPTS%"] EQU [""] (
    set SCHEMA_REGISTRY_JMX_OPTS=-Dcom.Sun.management.jmxremote -Dcom.Sun.management.jmxremote.authenticate=false  -Dcom.Sun.management.jmxremote.ssl=false
)

rem JMX port to use
IF ["%JMX_PORT%"] NEQ [""] (
    set SCHEMA_REGISTRY_JMX_OPTS=%SCHEMA_REGISTRY_JMX_OPTS% -Dcom.Sun.management.jmxremote.port=%JMX_PORT%
)

rem Which Java to use
IF ["%Java_HOME%"] EQU [""] (
    set Java=java
) ELSE (
    set Java="%Java_HOME%/bin/Java"
)

rem Memory options
IF ["%SCHEMA_REGISTRY_HEAP_OPTS%"] EQU [""] (
    set SCHEMA_REGISTRY_HEAP_OPTS=-Xmx512M
)

rem JVM performance options
IF ["%SCHEMA_REGISTRY_JVM_PERFORMANCE_OPTS%"] EQU [""] (
    set SCHEMA_REGISTRY_JVM_PERFORMANCE_OPTS=-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+DisableExplicitGC -Djava.awt.headless=true
)

set COMMAND=%Java% %SCHEMA_REGISTRY_HEAP_OPTS% %SCHEMA_REGISTRY_JVM_PERFORMANCE_OPTS% %SCHEMA_REGISTRY_JMX_OPTS% %SCHEMA_REGISTRY_LOG4J_OPTS% -cp %CLASSPATH% %SCHEMA_REGISTRY_OPTS% %*
%COMMAND%

goto :eof
:concat
IF ["%CLASSPATH%"] EQU [""] (
  set CLASSPATH="%1"
) ELSE (
  set CLASSPATH=%CLASSPATH%;"%1"
)
1

Cygwinを使用してcmd.exeからコンフルエントなツールを実行することに成功しました。

C:\>c:\cygwin64\bin\bash -l /cygdrive/c/confluent/4.0.0/bin/kafka-avro-console-consumer --bootstrap-server <my_server_name>:9092 --topic <my_topic> --property schema.registry.url=http://<my_schema_registry_url>:8081 >> tmp.txt
1
David Grabowski

スキーマレジストリのbatファイルのコード。 schema-registry-start.batとして保存


@echo off

%~dp0schema-registry-run-class.bat io.confluent.kafka.schemaregistry.rest.SchemaRegistryMain %*

スキーマレジストリプロパティファイルは次のようになります。schema-registry.propertiesとして保存

listeners=http://10.91.31.169:8081
kafkastore.connection.url=10.91.31.169:2181
kafkastore.topic=_schemas
debug=true
0