Utilizar o Apache Flink com os Hubs de Eventos do Azure para Apache Kafka
Este tutorial mostra como conectar o Apache Flink a um hub de eventos sem alterar seus clientes de protocolo ou executar seus próprios clusters. Para obter mais informações sobre o suporte dos Hubs de Eventos para o protocolo de consumidor Apache Kafka, consulte Hubs de Eventos para Apache Kafka.
Neste tutorial, irá aprender a:
- Criar um espaço de nomes dos Hubs de Eventos
- Clonar o projeto de exemplo
- Executar produtor Flink
- Executar Flink consumidor
Nota
Este exemplo está disponível no GitHub
Pré-requisitos
Para concluir este tutorial, verifique se você 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
- Baixe e instale um arquivo binário 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
Um namespace de Hubs de Eventos é necessário para enviar ou receber de qualquer serviço de Hubs de Eventos. Consulte Criando um hub de eventos para obter instruções sobre como criar um namespace e um hub de eventos. Certifique-se de copiar a cadeia de conexão dos Hubs de Eventos para uso posterior.
Clonar o projeto de exemplo
Agora que você tem a cadeia de conexão Hubs de Eventos, clone os Hubs de Eventos do Azure para repositório Kafka e navegue até a flink
subpasta:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/flink
Executar produtor Flink
Usando o exemplo de produtor Flink fornecido, envie mensagens para o serviço Hubs de Eventos.
Fornecer um ponto de extremidade Kafka dos Hubs de Eventos
produtor.config
Atualize os bootstrap.servers
valores e sasl.jaas.config
para producer/src/main/resources/producer.config
direcionar o produtor para o ponto de extremidade 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 conexão do namespace Hubs de Eventos. Para obter instruções sobre como obter a cadeia de conexão, consulte Obter uma cadeia de conexão de Hubs de Eventos. Aqui está 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";
Execute o produtor a partir da linha de comando
Para executar o produtor a partir da linha de comando, gere o JAR e, em seguida, execute a partir do Maven (ou gere o JAR usando o Maven e, em seguida, execute em Java adicionando o(s) JAR(s) Kafka necessário(s) 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 imprimir os eventos para stdout.
Executar Flink consumidor
Usando o exemplo de consumidor fornecido, receba mensagens do hub de eventos.
Fornecer um ponto de extremidade Kafka dos Hubs de Eventos
consumer.config
Atualize os bootstrap.servers
valores e sasl.jaas.config
para consumer/src/main/resources/consumer.config
direcionar o consumidor para o ponto de extremidade 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 conexão do namespace Hubs de Eventos. Para obter instruções sobre como obter a cadeia de conexão, consulte Obter uma cadeia de conexão de Hubs de Eventos. Aqui está 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 comando
Para executar o consumidor a partir da linha de comando, gere o JAR e, em seguida, execute de dentro do Maven (ou gere o JAR usando o Maven e, em seguida, execute em Java adicionando o(s) JAR(s) Kafka necessário(s) 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çará a receber eventos do tópico test
.
Consulte o Guia do Conector Kafka da Flink para obter informações mais detalhadas sobre como ligar a Flink a Kafka.
Próximos passos
Para saber mais sobre os Hubs de Eventos para Kafka, consulte os seguintes artigos:
- Espelhar um corretor Kafka em um hub de eventos
- Conectar o Apache Spark a um hub de eventos
- Integre o Kafka Connect com um hub de eventos
- Explore samples on our GitHub (Explorar exemplos no nosso GitHub)
- Conecte o Akka Streams a um hub de eventos
- Guia do desenvolvedor do Apache Kafka para Hubs de Eventos do Azure