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環境でコンフルエントなスキーマレジストリを開始するにはどうすればよいですか?
スクリプトの内容を見て、解読が難しい。
ありがとう
Ewen Cheslack-Postavaが示唆するように、誰かがWindows.batファイルを作成しました
https://github.com/renukaradhya/confluentplatform/tree/master/bin/windows
schema-registry-run-class.bat
とschema-registry-start.bat
を\confluent\bin\windows
ディレクトリに保存した後、次のコマンドでスキーマレジストリを実行できました。
C:\confluent\bin\windows\schema-registry-start.bat C:\confluent\etc\ schema-registry\schema-registry.properties
現時点では、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をインストールすることをお勧めします。
スキーマレジストリ実行クラス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"
)
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
スキーマレジストリの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