Verwenden von Apache Flink mit Azure Event Hubs für Apache Kafka
Dieses Tutorial veranschaulicht, wie Sie Apache Flink mit einem Event Hub verbinden können, ohne Ihre Protokollclients ändern oder Ihre eigenen Cluster ausführen zu müssen. Weitere Informationen zur Event Hubs-Unterstützung für das Apache Kafka-Consumerprotokoll finden Sie unter Event Hubs für Apache Kafka.
In diesem Tutorial lernen Sie Folgendes:
- Erstellen eines Event Hubs-Namespace
- Klonen des Beispielprojekts
- Ausführen des Flink-Producers
- Ausführen des Flink-Consumers
Hinweis
Dieses Beispiel ist auf GitHub verfügbar.
Voraussetzungen
Stellen Sie vor dem Durchführen dieses Tutorials sicher, dass die folgenden Voraussetzungen erfüllt sind:
- Lesen Sie den Artikel Event Hubs für Apache Kafka.
- Ein Azure-Abonnement. Wenn Sie keins besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
- Java Development Kit (JDK) 1.7+
- Führen Sie unter Ubuntu
apt-get install default-jdk
aus, um das JDK zu installieren. - Achten Sie darauf, dass die Umgebungsvariable „JAVA_HOME“ auf den Ordner verweist, in dem das JDK installiert ist.
- Führen Sie unter Ubuntu
- Führen Sie den Download und die Installation eines binären Maven-Archivs durch.
- Unter Ubuntu können Sie
apt-get install maven
ausführen, um Maven zu installieren.
- Unter Ubuntu können Sie
- Git-Client
- Unter Ubuntu können Sie
sudo apt-get install git
ausführen, um Git zu installieren.
- Unter Ubuntu können Sie
Erstellen eines Event Hubs-Namespace
Ein Event Hubs-Namespace ist erforderlich, um Nachrichten an einen Event Hubs-Dienst zu senden oder von diesem zu empfangen. Anweisungen zum Erstellen eines Namespace und eines Event Hub finden Sie unter Erstellen eines Event Hubs. Kopieren Sie die Event Hubs-Verbindungszeichenfolge zur späteren Verwendung.
Klonen des Beispielprojekts
Nachdem Sie nun über die Event Hubs-Verbindungszeichenfolge verfügen, können Sie das Azure Event Hubs für Kafka-Repository klonen und zum Unterordner flink
navigieren:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/flink
Ausführen des Flink-Producers
Verwenden Sie das bereitgestellte Beispiel des Flink-Producers, und senden Sie Nachrichten an den Event Hubs-Dienst.
Bereitstellen eines Kafka-fähigen Event Hubs-Endpunkts
producer.config
Update der bootstrap.servers
- und sasl.jaas.config
-Werte in producer/src/main/resources/producer.config
zur Weiterleitung des Producers an den Kafka-fähigen Event Hubs-Endpunkt mit der richtigen Authentifizierung.
bootstrap.servers={YOUR.EVENTHUBS.FQDN}:9093
client.id=FlinkExampleProducer
sasl.mechanism=PLAIN
security.protocol=SASL_SSL
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="$ConnectionString" \
password="{YOUR.EVENTHUBS.CONNECTION.STRING}";
Wichtig
Ersetzen Sie {YOUR.EVENTHUBS.CONNECTION.STRING}
durch die Verbindungszeichenfolge für Ihren Event Hubs-Namespace. Anweisungen zum Abrufen der Verbindungszeichenfolge finden Sie unter Abrufen einer Event Hubs-Verbindungszeichenfolge. Hier sehen Sie eine Beispielkonfiguration: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Ausführen des Producers über die Befehlszeile
Zum Ausführen des Producers über die Befehlszeile generieren Sie die JAR-Datei. Führen Sie sie innerhalb von Maven aus (oder generieren Sie die JAR-Datei mit Maven, und führen Sie sie dann durch Hinzufügen der erforderlichen Kafka-JAR(s) an den Klassenpfad in Java aus):
mvn clean package
mvn exec:java -Dexec.mainClass="FlinkTestProducer"
Der Producer beginnt mit dem Senden von Ereignissen an den Event Hub zum Thema test
und dem Drucken der Ereignisse an „stdout“.
Ausführen des Flink-Consumers
Verwenden Sie das bereitgestellte Consumer-Beispiel, und empfangen Sie Nachrichten vom Event Hub.
Bereitstellen eines Kafka-fähigen Event Hubs-Endpunkts
consumer.config
Aktualisieren Sie die bootstrap.servers
- und sasl.jaas.config
-Werte in consumer/src/main/resources/consumer.config
zur Weiterleitung des Consumers an den Kafka-fähigen Event Hubs-Endpunkt mit der richtigen Authentifizierung.
bootstrap.servers={YOUR.EVENTHUBS.FQDN}:9093
group.id=FlinkExampleConsumer
sasl.mechanism=PLAIN
security.protocol=SASL_SSL
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
username="$ConnectionString" \
password="{YOUR.EVENTHUBS.CONNECTION.STRING}";
Wichtig
Ersetzen Sie {YOUR.EVENTHUBS.CONNECTION.STRING}
durch die Verbindungszeichenfolge für Ihren Event Hubs-Namespace. Anweisungen zum Abrufen der Verbindungszeichenfolge finden Sie unter Abrufen einer Event Hubs-Verbindungszeichenfolge. Hier sehen Sie eine Beispielkonfiguration: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Ausführen des Consumers über die Befehlszeile
Zum Ausführen des Consumers über die Befehlszeile generieren Sie die JAR-Datei, und führen Sie sie innerhalb von Maven aus (oder generieren Sie die JAR-Datei mit Maven, und führen Sie sie dann durch Hinzufügen der erforderlichen Kafka-JAR(s) an den Klassenpfad in Java aus):
mvn clean package
mvn exec:java -Dexec.mainClass="FlinkTestConsumer"
Wenn der Event Hub über Ereignisse verfügt (wenn der Producer z. B. ebenfalls ausgeführt wird), erhält der Consumer ab sofort Ereignisse aus dem Thema test
.
Weitere Informationen zur Verbindung von Flink und Kafka finden Sie unter Flink's Kafka Connector Guide (Flinks Leitfaden zur Kafka-Verbindung).
Nächste Schritte
Weitere Informationen zu Event Hubs für Kafka finden Sie in folgenden Artikeln: