반응형
목차 LIST
DataSources?
Flink에서 datasources란 소싱하는 데이터를 의미하며, Data Ingestion이라고 합니다.
Flink application은 하나 또는 그 이상의 데이터소스를 소싱합니다. 데이터 소스는 파일 시스템 상의 파일, 카프카의 토픽 또는 여러가지 데이터 스트림이 될 수 있습니다.
핵심 3가지 요소
- Split
- 소스로부터 데이터를 컨슈밍하는 단위입니다. 예를 들면 파일이나, 로그 파티션이 될 수 있습니다.
- Splits은 SourceReader가 작업을 분배하고 데이터를 병렬로 읽는 단위입니다.
- SourceReader
- SourceReader는 Splits를 요청하고 그것들을 처리합니다. 예를 들면, split으로 나누어진 파일이나 로그 파티션을 읽습니다.
- SourceReader는 Task Magagers의 SourceOperator에서 병렬로 동작합니다. 그리고 이벤트나 레코드의 병렬 스트림을 생성합니다.
- SplitEnumerator
- Splits를 생성하고 각각의 Split을 SourceReaders에게 할당합니다.
- Job Manager의 단일 인스턴스로 실행되며, 대기중인(pending) splits의 백로그 정보를 유지하고 균형있게 reader들에게 할당하는 역할을 합니다.
DataSource API
고수준의 인터페이스를 제공하여 사용자가 데이터를 정의하고 소스에서 데이터를 읽어올 수 있게 합니다.
DataSource API는 Flink 애플리케이션에서 데이터 소스를 정의하는데 사용됩니다.
KafkaSource
.builder()
.setProperty("partition.discovery.interval.ms", "3000")
.setProperty("enable.auto.commit", "true")
.setProperty("request.timeout.ms", "90000")
.setBootstrapServers(bootstrapServer)
.setTopics(..)
.setGroupId(..)
.setStartingOffsets(
OffsetsInitializer.committedOffsets(OffsetResetStrategy.EARLIEST)
)
.setDeserializer(new BISamplingRecordSchema)
.setClientIdPrefix(bootstrapServer)
.build()
The Split Reader API
SplitReader API는 실제로 데이터를 읽어오는 저수준의 인터페이스입니다. Flink 내부에서 실제로 데이터를 읽어오는 역할을 담당합니다. SplitReader는 데이터를 동기적으로 읽어오며, SourceReader에 의해 호출됩니다.
SplitReader는 데이터를 외부 시스템에서 가져오고, 이를 SourceReader가 비동기적으로 처리할 수 있도록 합니다.
이 외에 자세한 내용은 아래 링크를 참고하는 것을 추천드립니다.
References
https://nightlies.apache.org/flink/flink-docs-release-1.17/docs/dev/datastream/sources/
반응형
'데이터 엔지니어링' 카테고리의 다른 글
Flink - State, Checkpointing and Fault Tolerance 상세 내용 (0) | 2024.08.19 |
---|---|
Flink Memory에 대해 알아보자 (0) | 2024.05.21 |
Dataflow Windowing : watermark (0) | 2024.05.17 |
NGINX TCP / UDP Load Balancing (0) | 2024.04.17 |
Apache Spark : Join strategy (0) | 2024.03.21 |
댓글