Apache Flink gebruiken met Azure Event Hubs voor Apache Kafka
In deze zelfstudie leert u hoe u Apache Flink verbindt met een Event Hub zonder uw protocol-clients te wijzigen of uw eigen clusters uit te werken. Zie voor meer informatie Event Hubs ondersteuning voor het Apache Kafka consumerprotocol Event Hubs voor Apache Kafka.
In deze zelfstudie leert u het volgende:
- Een Event Hubs-naamruimte maken
- Het voorbeeldproject klonen
- Flink-producent uitvoeren
- Flink-consument uitvoeren
Notitie
Dit voorbeeld is beschikbaar op GitHub
Vereisten
Zorg ervoor dat u aan de volgende vereisten hebt om deze zelfstudie te voltooien:
- Lees het artikel Event Hubs voor Apache Kafka door.
- Een Azure-abonnement. Als u nog geen account hebt, maakt u een gratis account voordat u begint.
- Java Development Kit (JDK) 1.7+
- Voer op Ubuntu
apt-get install default-jdkuit om de JDK te installeren. - Zorg dat de omgevingsvariabele JAVA_HOME verwijst naar de map waarin de JDK is geïnstalleerd.
- Voer op Ubuntu
- Een binair Maven-archief downloaden en installeren
- Op Ubuntu kunt u
apt-get install mavenuitvoeren om Maven te installeren.
- Op Ubuntu kunt u
- Git
- Op Ubuntu kunt u
sudo apt-get install gituitvoeren om Git te installeren.
- Op Ubuntu kunt u
Een Event Hubs-naamruimte maken
Een Event Hubs-naamruimte is vereist voor het verzenden of ontvangen van een Event Hubs service. Zie Een Event Hub maken voor instructies voor het maken van een naamruimte en een Event Hub. Zorg ervoor dat u de Event Hubs connection string kopieert voor later gebruik.
Het voorbeeldproject klonen
Nu u de Event Hubs connection string hebt, kloont u de Azure Event Hubs voor de Kafka-opslagplaats en navigeert u naar de flink submap:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/flink
Flink-producent uitvoeren
Verzend aan de hand van het opgegeven producervoorbeeld berichten naar de Event Hubs service.
Een kafka Event Hubs-eindpunt verstrekken
producer.config
Werk de waarden en bij in om de producent met de juiste bootstrap.servers sasl.jaas.config verificatie Event Hubs het producer/src/main/resources/producer.config Kafka-eindpunt te leiden.
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}";
Belangrijk
Vervang {YOUR.EVENTHUBS.CONNECTION.STRING} door de verbindingsreeks voor uw Event Hubs-naamruimte. Zie Een verbindingsreeks voor Event Hubs ophalen voor instructies voor het ophalen van de verbindingsreeks. Hier volgt een voorbeeldconfiguratie: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Producer uitvoeren vanaf de opdrachtregel
Als u de producer wilt uitvoeren vanaf de opdrachtregel, genereert u de JAR en wordt deze vervolgens uitgevoerd vanuit Maven (of genereert u de JAR met behulp van Maven. Voer vervolgens uit in Java door de benodigde Kafka JAR('s) toe te voegen aan het klassepad):
mvn clean package
mvn exec:java -Dexec.mainClass="FlinkTestProducer"
De producent begint nu met het verzenden van gebeurtenissen naar de Event Hub tijdens het onderwerp test en het afdrukken van de gebeurtenissen naar stdout.
Flink-consument uitvoeren
Gebruik het opgegeven consumentenvoorbeeld om berichten te ontvangen van de Event Hub.
Een kafka Event Hubs-eindpunt verstrekken
consumer.config
Werk de waarden en bij in om de consument met de juiste bootstrap.servers sasl.jaas.config verificatie naar Event Hubs consumer/src/main/resources/consumer.config Kafka-eindpunt te leiden.
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}";
Belangrijk
Vervang {YOUR.EVENTHUBS.CONNECTION.STRING} door de verbindingsreeks voor uw Event Hubs-naamruimte. Zie Een verbindingsreeks voor Event Hubs ophalen voor instructies voor het ophalen van de verbindingsreeks. Hier volgt een voorbeeldconfiguratie: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Consument uitvoeren vanaf de opdrachtregel
Als u de consument wilt uitvoeren vanaf de opdrachtregel, genereert u de JAR en wordt deze vervolgens uitgevoerd vanuit Maven (of genereert u de JAR met behulp van Maven. Voer vervolgens uit in Java door de benodigde Kafka JAR('s) toe te voegen aan het klassepad):
mvn clean package
mvn exec:java -Dexec.mainClass="FlinkTestConsumer"
Als de Event Hub gebeurtenissen bevat (bijvoorbeeld als uw producent ook wordt uitgevoerd), ontvangt de consument nu gebeurtenissen van het onderwerp test .
Bekijk de Kafka Connector Guide van Flink voor meer gedetailleerde informatie over het verbinden van Flink met Kafka.
Volgende stappen
Zie de volgende artikelen Event Hubs meer informatie over het maken van een Event Hubs kafka: