Usar o Apache Flink com Hubs de Eventos do Azure para o 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 de hubs de eventos para o protocolo de consumidor do Apache Kafka, consulte Hubs de eventos para o Apache Kafka.
Neste tutorial, você aprenderá como:
- Criar um namespace de Hubs de Eventos
- Clonar o projeto de exemplo
- Executar o produtor Flink
- Executar o consumidor Flink
Observação
Este exemplo está disponível no GitHub
Pré-requisitos
Para concluir este tutorial, é necessário atender aos seguintes pré-requisitos:
- Leia o artigo Hubs de Eventos para o Apache Kafka.
- Uma assinatura do Azure. Se você 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. - Defina a variável de ambiente JAVA_HOME para apontar para a pasta onde o JDK está instalado.
- No Ubuntu, execute
- Baixar e instalar um armazenamento binário Maven
- No Ubuntu, você pode executar
apt-get install maven
para instalar o Maven.
- No Ubuntu, você pode executar
- Git
- No Ubuntu, você pode executar
sudo apt-get install git
para instalar o Git.
- No Ubuntu, você pode executar
Criar um namespace dos Hubs de Eventos
É necessário um namespace dos Hubs de Eventos para enviar ou receber de qualquer serviço de Hubs de Eventos. Para obter instruções sobre como criar um namespace e um hub de eventos, consulte Criar um hub de eventos. Certifique-se de copiar a cadeia de caracteres de conexão dos Hubs de Eventos para uso posterior.
Clonar o projeto de exemplo
Agora que você tem a cadeia de conexão de hubs de eventos, clone o repositório de hubs de eventos do Azure para Kafka e navegue até a subpasta flink
:
git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/flink
Executar o produtor Flink
Seguindo o exemplo do produtor do Flink, envie mensagens para o serviço do Hubs de Eventos.
Fornecer um ponto de extremidade Kafka dos Hubs de Eventos
producer.config
Atualize os valores bootstrap.servers
e sasl.jaas.config
em producer/src/main/resources/producer.config
para direcionar o produtor ao 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 seu namespace dos Hubs de Eventos. Para ver as instruções sobre como obter uma cadeia de conexão, confira Obter cadeia de conexão para 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 produtor na linha de comando
Para executar o produtor na linha de comando, gere o JAR e execute no Maven (ou gere o JAR usando o Maven e execute no Java adicionando os JARs do Kafka necessários ao caminho de classe):
mvn clean package
mvn exec:java -Dexec.mainClass="FlinkTestProducer"
O produtor começará a enviar eventos para o hub de eventos no tópico test
e a imprimi-los no stdout.
Executar o consumidor Flink
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 valores bootstrap.servers
e sasl.jaas.config
em consumer/src/main/resources/consumer.config
para direcionar o consumidor ao 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 seu namespace dos Hubs de Eventos. Para ver as instruções sobre como obter uma cadeia de conexão, confira Obter cadeia de conexão para 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 na linha de comando
Para executar o consumidor na linha de comando, gere o JAR e execute no Maven (ou gere o JAR usando o Maven e execute no Java adicionando os JARs do Kafka necessários ao caminho de classe):
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 receberá eventos do tópico test
.
Confira Guia de conector Kafka do Flink para saber informações mais detalhadas sobre como conectar o Flink ao Kafka.
Próximas etapas
Para saber mais sobre os Hubs de Eventos para o Kafka, confira os artigos a seguir: