DataStream 커넥터
DataStream 커넥터 (Connectors)
Flink DataStream API에서 다양한 외부 시스템과 연결할 수 있는 커넥터들을 소개해요. 기본 제공 소스/싱크부터 Apache Flink 프로젝트 커넥터, Apache Bahir 커넥터까지 어떤 선택지가 있는지 정리했어요.
본문
Predefined Sources and Sinks
몇 가지 기본 데이터 소스와 싱크는 Flink에 내장되어 있으며 항상 사용할 수 있어요. 미리 정의된 데이터 소스에는 파일·디렉토리·소켓에서 읽기, 컬렉션·이터레이터에서 데이터 수집이 포함돼요. 미리 정의된 데이터 싱크는 파일·stdout·stderr·소켓으로 쓰기를 지원해요.
Flink Project Connectors
커넥터는 다양한 서드파티 시스템과의 인터페이스를 위한 코드를 제공해요. 현재 Apache Flink 프로젝트의 일부로 지원되는 시스템은 다음과 같아요:
- Apache Kafka (source/sink)
- Apache Cassandra (source/sink)
- Amazon DynamoDB (sink)
- Amazon Kinesis Data Streams (source/sink)
- Amazon Kinesis Data Firehose (sink)
- DataGen (source)
- Elasticsearch (sink)
- Opensearch (sink)
- FileSystem (source/sink)
- RabbitMQ (source/sink)
- Google PubSub (source/sink)
- Hybrid Source (source)
- Apache Pulsar (source)
- JDBC (sink)
- MongoDB (source/sink)
- Prometheus (sink)
이 커넥터 중 하나를 애플리케이션에서 사용하려면 보통 추가 서드파티 컴포넌트(예: 데이터 저장소나 메시지 큐의 서버)가 필요하다는 점을 기억하세요. 또한 이 섹션에 나열된 스트리밍 커넥터는 Flink 프로젝트의 일부이고 소스 릴리스에 포함되지만, 바이너리 배포판에는 포함되지 않아요. 자세한 지침은 해당 하위 섹션에서 확인할 수 있어요.
정보:
flink-connector-base의존성이 flink-dist에 번들되었기 때문에 외부화된 커넥터들은flink-connector-base의존성을 더 이상 번들하지 않기 시작했어요. 자세한 내용은 FLINK-30400을 참고하세요. 예제를 로컬에서 실행해야 한다면flink-connector-base의존성이 제공되고 자신의 classpath에서 찾을 수 있는지 확인하세요.
Connectors in Apache Bahir
Flink를 위한 추가 스트리밍 커넥터가 Apache Bahir를 통해 릴리스되고 있어요:
- Apache ActiveMQ (source/sink)
- Apache Flume (sink)
- Redis (sink)
- Akka (sink)
- Netty (source)
Other Ways to Connect to Flink
Data Enrichment via Async I/O
커넥터를 사용하는 것만이 Flink에 데이터를 넣고 빼는 유일한 방법은 아니에요. 흔한 패턴 중 하나는 Map이나 FlatMap에서 외부 데이터베이스나 웹 서비스를 조회해 기본 데이터스트림을 보강(enrichment)하는 것이에요. Flink는 이런 보강을 효율적이고 견고하게 수행하기 쉽게 해주는 Asynchronous I/O API를 제공해요.