Utilizar o Apache Flink com os Hubs de Eventos do Azure para Apache Kafka
Este tutorial mostra-lhe como ligar o Apache Flink a um hub de eventos sem alterar os clientes do protocolo ou executar os seus próprios clusters. Para obter mais informações sobre o suporte dos Hubs de Eventos para o protocolo de consumidor do Apache Kafka, veja Hubs de Eventos para Apache Kafka.
Neste tutorial, ficará a saber como:
- Criar um espaço de nomes dos Hubs de Eventos
- Clonar o projeto de exemplo
- Executar o produtor de Flink
- Executar o consumidor de Flink
Nota
Este exemplo está disponível no GitHub
Pré-requisitos
Para concluir este tutorial, certifique-se de que tem os seguintes pré-requisitos:
- Leia o artigo Hubs de Eventos para o Apache Kafka.
- Uma subscrição do Azure. Se não tiver uma, crie uma conta gratuita antes de começar.
-
Java Development Kit (JDK) 1.7+
- No Ubuntu, execute
apt-get install default-jdk
para instalar o JDK. - Certifique-se de que define a variável de ambiente JAVA_HOME para apontar para a pasta onde está instalado o JDK.
- No Ubuntu, execute
-
Transferir e instalar um arquivo binário do Maven
- No Ubuntu, pode executar
apt-get install maven
para instalar o Maven.
- No Ubuntu, pode executar
-
Git
- No Ubuntu, pode executar
sudo apt-get install git
para instalar o Git.
- No Ubuntu, pode executar
Criar um espaço de nomes dos Hubs de Eventos
É necessário um espaço de nomes dos Hubs de Eventos para enviar ou receber de qualquer serviço dos Hubs de Eventos. Veja Criar um hub de eventos para obter instruções para criar um espaço de nomes e um hub de eventos. Certifique-se de que copia a cadeia de ligação dos Hubs de Eventos para utilização posterior.
Clonar o projeto de exemplo
Agora que tem a cadeia de ligação dos Hubs de Eventos, clone o Hubs de Eventos do Azure para o repositório kafka e navegue para a flink
subpasta:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/flink
Executar o produtor de Flink
Com o exemplo de produtor Flink fornecido, envie mensagens para o serviço Hubs de Eventos.
Fornecer um ponto final do Kafka dos Hubs de Eventos
producer.config
Atualize os bootstrap.servers
valores e sasl.jaas.config
no producer/src/main/resources/producer.config
para direcionar o produtor para o ponto final kafka dos Hubs de Eventos com a autenticação correta.
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
Substitua {YOUR.EVENTHUBS.CONNECTION.STRING}
pela cadeia de ligação do espaço de nomes dos Hubs de Eventos. Para obter instruções sobre como obter a cadeia de ligação, veja Obter uma cadeia de ligação dos Hubs de Eventos. Eis um exemplo de configuração: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Executar o produtor a partir da linha de comandos
Para executar o produtor a partir da linha de comandos, gere o JAR e, em seguida, execute a partir do Maven (ou gere o JAR com o Maven e, em seguida, execute em Java adicionando os JAR(s) do Kafka necessários ao classpath):
mvn clean package
mvn exec:java -Dexec.mainClass="FlinkTestProducer"
O produtor começará agora a enviar eventos para o hub de eventos no tópico test
e a imprimir os eventos para stdout.
Executar o consumidor de Flink
Com o exemplo de consumidor fornecido, receba mensagens do hub de eventos.
Fornecer um ponto final do Kafka dos Hubs de Eventos
consumer.config
Atualize os bootstrap.servers
valores e sasl.jaas.config
no consumer/src/main/resources/consumer.config
para direcionar o consumidor para o ponto final kafka dos Hubs de Eventos com a autenticação correta.
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
Substitua {YOUR.EVENTHUBS.CONNECTION.STRING}
pela cadeia de ligação do espaço de nomes dos Hubs de Eventos. Para obter instruções sobre como obter a cadeia de ligação, veja Obter uma cadeia de ligação dos Hubs de Eventos. Eis um exemplo de configuração: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Executar o consumidor a partir da linha de comandos
Para executar o consumidor a partir da linha de comandos, gere o JAR e, em seguida, execute a partir do Maven (ou gere o JAR com o Maven e, em seguida, execute em Java adicionando os JAR(s) do Kafka necessários ao classpath):
mvn clean package
mvn exec:java -Dexec.mainClass="FlinkTestConsumer"
Se o hub de eventos tiver eventos (por exemplo, se o produtor também estiver em execução), o consumidor começa agora a receber eventos do tópico test
.
Consulte o Guia do Conector Kafka do Flink para obter informações mais detalhadas sobre como ligar o Flink ao Kafka.
Passos seguintes
Para saber mais sobre os Hubs de Eventos para Kafka, veja os seguintes artigos:
- Espelhar um mediador de Kafka num hub de eventos
- Ligar o Apache Spark a um hub de eventos
- Integrar o Kafka Connect num hub de eventos
- Explore samples on our GitHub (Explorar exemplos no nosso GitHub)
- Ligar o Akka Streams a um hub de eventos
- Guia para programadores do Apache Kafka para Hubs de Eventos do Azure