Apache Kafka용 Azure Event Hubs에서 Apache Flink 사용

이 자습서에서는 프로토콜 클라이언트를 변경하거나 사용자 고유의 클러스터를 실행하지 않고 Apache Flink를 이벤트 허브에 연결하는 방법을 보여 줍니다. Apache Kafka 소비자 프로토콜에 대한 Event Hubs 지원과 관련한 자세한 내용은 Apache Kafka용 Event Hubs를 참조하세요.

이 자습서에서는 다음을 하는 방법을 알아볼 수 있습니다.

  • Event Hubs 네임스페이스 만들기
  • 프로젝트 예제 복제
  • Flink 생산자 실행
  • Flink 소비자 실행

참고 항목

이 샘플은 GitHub에서 사용할 수 있습니다.

필수 조건

이 자습서를 완료하려면 다음 필수 구성 요소가 있어야 합니다.

  • Apache Kafka용 Event Hubs 문서를 참조하세요.
  • Azure 구독 구독이 없으면 시작하기 전에 체험 계정을 만듭니다.
  • JDK(Java Development Kit) 1.7+
    • Ubuntu에서 apt-get install default-jdk를 실행하여 JDK를 설치합니다.
    • JAVA_HOME 환경 변수가 반드시 JDK가 설치된 폴더를 지정하도록 설정합니다.
  • Maven 이진 보관 파일을 다운로드하여 설치합니다.
    • Ubuntu에서 apt-get install maven을 실행하여 Maven을 실행할 수 있습니다.
  • Git
    • Ubuntu에서 sudo apt-get install git를 실행하여 Git를 실행할 수 있습니다.

Event Hubs 네임스페이스 만들기

Event Hubs 서비스에서 보내거나 받으려면 Event Hubs 네임스페이스가 필요합니다. 네임스페이스 및 이벤트 허브를 만드는 방법에 대한 지침은 이벤트 허브 만들기를 참조하세요. 나중에 사용하기 위해 Event Hubs 연결 문자열을 복사합니다.

프로젝트 예제 복제

이제 Event Hubs 연결 문자열이 있으므로 Kafka 리포지토리용 Azure Event Hubs를 복제하고 flink 하위 폴더로 이동합니다.

git clone https://github.com/Azure/azure-event-hubs-for-kafka.git
cd azure-event-hubs-for-kafka/tutorials/flink

제공된 Flink 생산자 예제를 사용하여 Event Hubs 서비스에 메시지를 보냅니다.

Event Hubs Kafka 엔드포인트 제공

producer.config

생산자에서 Event Hubs Kafka 엔드포인트를 가리키도록 producer/src/main/resources/producer.config에서 bootstrap.serverssasl.jaas.config 값을 업데이트합니다.

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}";

Important

{YOUR.EVENTHUBS.CONNECTION.STRING}을 Event Hubs 네임스페이스의 연결 문자열로 바꿉니다. 연결 문자열을 가져오는 방법에 대한 지침은 Event Hubs 연결 문자열 가져오기를 참조하세요. sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX"; 구성의 예는 다음과 같습니다.

명령줄에서 생성자 실행

명령줄에서 생성자를 실행하려면 JAR을 생성한 다음, Maven 내에서 실행하거나, Maven을 사용하여 JAR을 생성한 다음, 필요한 Kafka JAR을 클래스 경로에 추가하여 Java에서 실행합니다.

mvn clean package
mvn exec:java -Dexec.mainClass="FlinkTestProducer"

이제 생산자에서 test 항목의 이벤트 허브에 이벤트를 보내고 해당 이벤트를 stdout로 출력하기 시작합니다.

제공된 소비자 예제를 사용하여 이벤트 허브로부터 메시지를 받습니다.

Event Hubs Kafka 엔드포인트 제공

consumer.config

소비자에서 Event Hubs Kafka 엔드포인트를 가리키도록 consumer/src/main/resources/consumer.config에서 bootstrap.serverssasl.jaas.config 값을 업데이트합니다.

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}";

Important

{YOUR.EVENTHUBS.CONNECTION.STRING}을 Event Hubs 네임스페이스의 연결 문자열로 바꿉니다. 연결 문자열을 가져오는 방법에 대한 지침은 Event Hubs 연결 문자열 가져오기를 참조하세요. sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX"; 구성의 예는 다음과 같습니다.

명령줄에서 소비자 실행

명령줄에서 소비자를 실행하려면 JAR을 생성하고 Maven 내에서 실행하거나, Maven을 사용하여 JAR을 생성하고 필요한 Kafka JAR을 클래스 경로에 추가하여 Java에서 실행합니다.

mvn clean package
mvn exec:java -Dexec.mainClass="FlinkTestConsumer"

이벤트 허브에 이벤트가 있는 경우(예: 생산자도 실행 중인 경우), 이제 소비자에서 test 항목으로부터 이벤트를 받기 시작합니다.

Flink를 Kafka에 연결하는 방법에 대한 자세한 내용은 Flink의 Kafka 커넥터 가이드를 확인하세요.

다음 단계

Kafka용 Event Hubs에 대해 자세한 내용은 다음 문서를 참조하세요.