강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

열심히하자님의 프로필 이미지
열심히하자

작성한 질문수

실리콘밸리 엔지니어와 함께하는 Apache Flink

Data Sink

Data Sink Topology 질문 있습니다

작성

·

7

0

이 부분도 이해가 잘 안 가서 추가로 질문드려요. Sink 과정을 자세히 쪼개보면 SinkWriter, Committer, Global Committer로 나눌 수 있는데, SinkWriter로 로컬에 데이터를 임시로 쓰면 Committer가 커밋을 수행한다는 내용이 맞나요?

 

그리고 Topology 용어도 궁금한데요 Topology가 네트워크 시간에 노드들을 연결해놓은 방식이라고 배웠었는데요 여기서 Topology가 어떤 뜻으로 사용되나요? (강의 덕분에 단어도 많이 알아가네요)

 

마지막으로 flink 문서를 찾아보니 SinkWriter, Committer, Global Committer 클래스가 삭제 되었다고 나오는데요, 버전업이 되면서 이제는 이런 방식으로 동작하지 않는 건가요?

 

답변 미리 감사드립니다.. 🙌 저는 오늘 이까지 들으려구요. 휴가 잘 다녀오세요!!!

답변 2

0

미쿡엔지니어님의 프로필 이미지
미쿡엔지니어
지식공유자

안녕하세요 열심히하자님,

휴가 출발전에 ㅋㅋㅋ 또 답변 드립니다.

일단 SinkWriter가 로컬에 임시로 데이터를 쓰고 Committer가 커밋을 수행한다는 게 맞나요?

네, 맞습니다. 다만 Committer는 단순히 “커밋한다”보다는 “체크포인트 성공 시점에 트랜잭션을 안전하게 마무리하는 역할”로 이해하시면 정확해요.

 

Topology 용어도 궁금한데요 Topology가 네트워크 시간에 노드들을 연결해놓은 방식이라고 배웠었는데요 여기서 Topology가 어떤 뜻으로 사용되나요?

말씀하신 대로, 네트워크 분야에서 Topology는 노드 간 연결 구조를 의미하죠. Flink에서도 거의 같은 개념을 차용하고 있습니다. 다만 Flink에서의 “Topology”는 다음처럼 해석됩니다:

Flink Job이 실행될 때, 연산자(operators) 간의 데이터 흐름 구조 전체

즉, Source -> Transformation -> Sink 로 이어지는 전체 데이터 플로우 그래프가 바로 Flink의 Topology입니다. Flink는 내부적으로 이 Topology를 Directed Acyclic Graph (DAG) 형태로 구성하고, 각 연산자 간 데이터 스트림이 어떤 병렬도(parallelism)와 네트워크 경로를 통해 연결되는지를 나타냅니다.

 

마지막으로 flink 문서를 찾아보니 SinkWriter, Committer, Global Committer 클래스가 삭제 되었다고 나오는데요, 버전업이 되면서 이제는 이런 방식으로 동작하지 않는 건가요?

흐음... 어디 그렇게 나와있죠? 제가 최신 2.0 ~ 2.2 중심으로 강의 했었는데... 지금 찾아보니 그런 내용이 없는데 한번 링크 남겨주시면 알아보겠습니다.

https://nightlies.apache.org/flink/flink-docs-master/docs/dev/datastream/sinks/

 

마지막으로 제가 여러 강의에서 강조했듯이 영어로 공부하셔야 보다 깊고 자세히 아실수 있습니다. 그렇지 않으면 한자로 변환된 단어를 외우다시피 해야되는데, 그렇게 되면 글로벌 경쟁력(나중에 해외 취직 희망시)도 낮아지고 이해도도 낮아질 수 있습니다.

그럼 즐공하세요!

-1

안녕하세요, 인프런 AI 인턴입니다. 열심히하자님.

Flink의 데이터 Sink 처리 과정에 대한 질문을 주셨군요. Flink에서는 데이터가 최종적으로 외부 시스템에 저장되는 과정을 Sink라고 하며, 이 과정은 몇 가지 주요 컴포넌트로 구성됩니다.

  1. SinkWriter: 데이터를 로컬에 임시 저장하는 역할을 합니다. 데이터가 외부 시스템으로 전송되기 전에 임시 저장소에 기록하는 단계라고 볼 수 있습니다.

  2. Committer: SinkWriter에서 준비된 데이터를 외부 시스템에 실제로 커밋하여 저장하는 역할을 합니다.

  3. Global Committer: 분산 환경에서 여러 Task들이 동시에 데이터를 커밋할 때, 그 전체를 조율하여 최종 커밋을 담당하는 컴포넌트입니다.

Topology라는 용어는 네트워크 내에서 노드들이 연결된 방식이라는 일반적인 의미 외에, Flink에서는 데이터 처리의 논리적 흐름과 작업들의 구조, 즉 데이터가 어떻게 이동하고 처리되는지를 설명하는 용도로도 사용됩니다.

버전업과 관련된 문제를 말씀하셨는데, Flink는 오랜 시간에 걸쳐 많은 변화를 겪어왔습니다. 최근 버전에서는 API가 새로워지거나 변경되면서 특정 클래스들이 제거되거나 이름이 바뀌는 경우가 있습니다. 이는 주로 시스템의 성능을 향상시키고, 더 나은 유연성을 제공하기 위한 발전 과정에서 이루어지는 변화입니다.

이와 관련하여 Flink의 최신 버전을 사용한다면, Flink의 공식 문서를 참조하시어 버전 변경 사항을 확인하는 것이 중요합니다. 최신 API의 활용 방식을 살펴보시면 지금 질문하신 클래스들이 어떤 식으로 대체되었는지 더 정확하게 알 수 있을 것입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

열심히하자님의 프로필 이미지
열심히하자

작성한 질문수

질문하기