Apache Flink gebruiken met Azure Event Hubs voor Apache Kafka
In deze zelfstudie leert u hoe u Apache Flink kunt verbinden met een Event Hub zonder uw protocolclients te wijzigen of uw eigen clusters uit te voeren. Zie Event Hubs voor Apache Kafka voor meer informatie over de ondersteuning van Event Hubs voor het Apache Kafka-consumentenprotocol.
In deze zelfstudie leert u het volgende:
- Een Event Hubs-naamruimte maken
- Het voorbeeldproject klonen
- Flink producer uitvoeren
- Flink consumer uitvoeren
Notitie
Dit voorbeeld is beschikbaar op GitHub
Vereisten
Zorg ervoor dat u aan de volgende vereisten voldoet 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-jdk
uit 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 maven
uitvoeren om Maven te installeren.
- Op Ubuntu kunt u
-
Git
- Op Ubuntu kunt u
sudo apt-get install git
uitvoeren 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 Kafka-opslagplaats en gaat 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 producer uitvoeren
Verzend berichten naar de Event Hubs-service met behulp van het opgegeven flink-producentvoorbeeld.
Een Event Hubs Kafka-eindpunt opgeven
producer.config
Werk de bootstrap.servers
waarden en sasl.jaas.config
in bij producer/src/main/resources/producer.config
om de producent met de juiste verificatie naar het Event Hubs 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 het JAR en voert u deze vervolgens uit vanuit Maven (of genereert u het JAR met behulp van Maven en voert u 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 gebeurtenissen te verzenden naar de Event Hub op onderwerp test
en de gebeurtenissen af te drukken naar stdout.
Flink consumer uitvoeren
Aan de hand van het opgegeven voorbeeld van de consument ontvangt u berichten van de Event Hub.
Een Event Hubs Kafka-eindpunt opgeven
consumer.config
Werk de bootstrap.servers
waarden en sasl.jaas.config
bij in consumer/src/main/resources/consumer.config
om de consument met de juiste verificatie naar het Event Hubs 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";
Consumer uitvoeren vanaf de opdrachtregel
Als u de consumer wilt uitvoeren vanaf de opdrachtregel, genereert u het JAR en voert u deze vervolgens uit vanuit Maven (of genereert u het JAR met behulp van Maven en voert u 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), begint de consument nu gebeurtenissen van het onderwerp test
te ontvangen.
Bekijk de Kafka-connectorhandleiding van Flink voor meer gedetailleerde informatie over het verbinden van Flink met Kafka.
Volgende stappen
Zie de volgende artikelen voor meer informatie over Event Hubs voor Kafka: