Uso di Apache Flink con Hub eventi di Azure per Apache Kafka
Questa esercitazione illustra come connettere Apache Flink a un hub eventi senza modificare i client del protocollo o eseguire cluster personalizzati. Per altre informazioni sul supporto di Hub eventi per il protocollo consumer Apache Kafka, vedere Hub eventi per Apache Kafka.
In questa esercitazione verranno illustrate le procedure per:
- Creare uno spazio dei nomi di Hub eventi
- Clonare il progetto di esempio
- Eseguire il producer Flink
- Eseguire il consumer Flink
Nota
Questo esempio è disponibile su GitHub
Prerequisiti
Per completare questa esercitazione, verificare di disporre dei prerequisiti seguenti:
- Leggere con attenzione l'articolo Hub eventi per Apache Kafka.
- Una sottoscrizione di Azure. Se non se ne ha una, creare un account gratuito prima di iniziare.
-
Java Development Kit (JDK) 1.7+
- In Ubuntu eseguire
apt-get install default-jdk
per installare JDK. - Assicurarsi di impostare la variabile di ambiente JAVA_HOME in modo che faccia riferimento alla cartella di installazione di JDK.
- In Ubuntu eseguire
-
Scaricare e installare un archivio binario Maven
- In Ubuntu è possibile eseguire
apt-get install maven
per installare Maven.
- In Ubuntu è possibile eseguire
-
Git
- In Ubuntu è possibile eseguire
sudo apt-get install git
per installare Git.
- In Ubuntu è possibile eseguire
Creare uno spazio dei nomi di Hub eventi
Per l'invio o la ricezione da qualsiasi servizio Hub eventi è richiesto uno spazio dei nomi di Hub eventi. Per istruzioni per creare uno spazio dei nomi e un hub eventi, vedere Creazione di un hub eventi . Assicurarsi di copiare la stringa di connessione di Hub eventi per usarla in seguito.
Clonare il progetto di esempio
Dopo aver creato la stringa di connessione di Hub eventi, clonare la Hub eventi di Azure per il flink
repository Kafka e passare alla sottocartella:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/flink
Eseguire il producer Flink
Usando l'esempio del producer Flink fornito, inviare messaggi al servizio Hub eventi.
Fornire un endpoint Kafka di Hub eventi
producer.config
Aggiornare i valori bootstrap.servers
e sasl.jaas.config
in producer/src/main/resources/producer.config
per indirizzare il producer all'endpoint Kafka di Hub eventi con l'autenticazione corretta.
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}";
Importante
Sostituire {YOUR.EVENTHUBS.CONNECTION.STRING}
con la stringa di connessione per lo spazio dei nomi di Hub eventi. Per istruzioni su come ottenere la stringa di connessione, vedere Ottenere una stringa di connessione ad Hub eventi. Ecco un esempio di configurazione: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Eseguire il producer dalla riga di comando
Per eseguire il producer dalla riga di comando, generare il file JAR e quindi eseguirlo dall'interno di Maven (o generare il file JAR usando Maven, quindi eseguirlo in Java aggiungendo i JAR Kafka necessari al classpath):
mvn clean package
mvn exec:java -Dexec.mainClass="FlinkTestProducer"
Il produttore inizierà ora a inviare eventi all'hub eventi in argomento test
e stampare gli eventi in stdout.
Eseguire il consumer Flink
Usando l'esempio di consumer fornito, ricevere messaggi dall'hub eventi.
Fornire un endpoint Kafka di Hub eventi
consumer.config
Aggiornare i valori bootstrap.servers
e sasl.jaas.config
in consumer/src/main/resources/consumer.config
per indirizzare il consumer all'endpoint Kafka di Hub eventi con l'autenticazione corretta.
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}";
Importante
Sostituire {YOUR.EVENTHUBS.CONNECTION.STRING}
con la stringa di connessione per lo spazio dei nomi di Hub eventi. Per istruzioni su come ottenere la stringa di connessione, vedere Ottenere una stringa di connessione ad Hub eventi. Ecco un esempio di configurazione: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Eseguire il consumer dalla riga di comando
Per eseguire il consumer dalla riga di comando, generare il file JAR e quindi eseguirlo dall'interno di Maven (o generare il file JAR usando Maven, quindi eseguirlo in Java aggiungendo i JAR Kafka necessari al classpath):
mvn clean package
mvn exec:java -Dexec.mainClass="FlinkTestConsumer"
Se l'hub eventi ha eventi (ad esempio, se il produttore è in esecuzione), il consumer inizia ora a ricevere eventi dall'argomento test
.
Consultare la Guida del connettore Kafka di Flink per altre informazioni sulla connessione di Flink a Kafka.
Passaggi successivi
Per altre informazioni su Hub eventi per Kafka, vedere gli articoli seguenti: