JD의 블로그

Cloud Dataproc vs Cloud Dataflow 본문

클라우드/GCP

Cloud Dataproc vs Cloud Dataflow

GDong 2020. 1. 10. 01:46

Cloud Dataproc과 Cloud Dataflow는 데이터 처리/분석 제품으로 모두 배치와 스트리밍 데이터를 처리합니다. 그러나, 정확하게 어떤 차이점이 있는지 헷갈리는 부분이 많았는데 이번 기회에 확실히 두 제품의 차이점을 정리해보았습니다.

1. Cloud Dataproc 

Cloud Dataproc은 Apache Spark와 Apache Hadoop 클러스터를 더 간단하고 효율적으로 실행할 수 있게 도와줄 수 있는 관리형 서비스입니다. 단순히 관리형 서비스이므로 클러스터의 수는 사용자가 직접 조절하여야 합니다. 

 

Dataflow를 설명하기 전에 Spark와 Hadoop, 그리고 Dataflow의 기본이 되는 Apache Beam에 대한 얘기를 먼저 해야합니다. Spark나 Hadoop과 같은 대용량 분산 처리 시스템은 특정 노드의 연산이 늦게 끝나면 전체 연산이 늦게 끝나는 경우가 많다는 문제점을 가집니다. 예를 들면, 대용량의 데이터를 가지고 분산 처리하여 결과를 모두 합치는 연산의 경우, 단지 몇 개의 노드가 연산이 늦게 끝나도 전체 값을 계산하기 위해 나머지 노드들이 기다려야하고 전체 시간이 느려지게 됩니다.  

 

구글에서 개발하고 오픈소스로 내놓은 Apache Beam은 Apache Spark의 다음 세대 스트리밍 프레임웍으로 생각할 수 있습니다. Apache Beam은 리밸런싱(rebalancing)이라는 알고리즘을 통해 Spark와 Hadoop보다 더 나은 성능을 보여주는데, 리밸런싱이란 특정 노드의 연산이 느려진 경우 느려진 노드의 데이터를 연산이 끝나 대기하는 다른 노드로 옮겨 전체 연산 시간을 줄이는 방법입니다.

 

2. Cloud Dataflow

Cloud Dataflow는 이런 Apache Beam을 완전 관리형 서비스로 출시한 제품으로 서버리스 특징으로 작업의 양에 따라 리소스를 자동으로 프로비저닝하고 관리해줍니다. 

 

Cloud Dataproc과 Cloud Dataflow의 선택 flow차트

위의 그림을 통해 Dataproc과 Dataflow를 언제 사용해야하는지 명확하게 확인할 수 있습니다.

 

기존에 Apache Hadoop과 Spark 환경을 가지거나 직접 DevOps를 하는 환경을 원하는 사용자라면 Dataproc을 사용하는 것을 추천하고 있으며, 스트리밍 및 배치 데이터 처리를 Serverless로 하고자 한다면 Dataflow를 추천하고 있습니다.