Apache Beam은 데이터 처리를 위한 오픈소스 분산처리 프레임워크로, 대규모 데이터 집합을 효율적으로 처리하고 분석하기 위해 설계되었다. 그래서 주로 batch나 stream으로 주어지는 데이터에 대해 효율적으로 병렬 처리를 하고 싶을 때 사용한다.
💡 Beam은 Batch와 Streaming을 합쳐서 만들어졌다

Apache Beam은 앞서 batch와 stream 데이터를 처리할 수 있다고 했지만, 데이터 처리 작업을 추상화했기 때문에 사용자가 데이터가 들어오는 방식에 따라 다르게 구현할 필요는 없다. 즉, 동일한 pipeline 코드를 사용하면 모든 환경에서 실행이 가능한 구조이다.
Apache Beam의 구성요소는 다음과 같다:
Pipeline: 데이터 처리 작업을 정의하고 실행하는 데 사용되는 일련의 단계들이다. 데이터의 원천부터 결과물까지의 흐름을 정의하며, 여러 가지 변환 단계들을 포함한다.
PCollection: 파이프라인에서 데이터는 PCollection 형식으로 표현된다. PCollection은 변환 단계를 통해 만들어지며, 파이프라인의 각 단계에서 전달된다.
Transforms: 데이터를 처리하고 변환하는 데 사용되는 함수 또는 연산의 모음이다. Apache Beam은 일반적인 변환들을 제공하지만, 사용자 정의 변환도 가능하다.
Runners: Beam 파이프라인을 실행하는 데 사용되는 실행 엔진이다. Apache Beam은 다양한 실행기를 지원하며, Apache Spark, Apache Flink, Google Cloud Dataflow 등의 분산 처리 엔진을 활용할 수 있다.
IO Connectors: 파이프라인의 입력과 출력을 처리하는 부분(보통 파이프라인의 시작과 끝 지점)에 위치하며, 데이터 원천 및 대상과의 상호 작용을 담당한다.