pixel
Cloud Insight

[Tech 025] Dataproc Workflow Template을 활용하여 ETL 프로세스를 효율적으로 구성하는 방법

By 2023년 8월 1일 7월 24th, 2025 No Comments

/*! elementor – v3.19.0 – 29-01-2024 */
.elementor-column .elementor-spacer-inner{height:var(–spacer-size)}.e-con{–container-widget-width:100%}.e-con-inner>.elementor-widget-spacer,.e-con>.elementor-widget-spacer{width:var(–container-widget-width,var(–spacer-size));–align-self:var(–container-widget-align-self,initial);–flex-shrink:0}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container,.e-con>.elementor-widget-spacer>.elementor-widget-container{height:100%;width:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer{height:100%}.e-con-inner>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner,.e-con>.elementor-widget-spacer>.elementor-widget-container>.elementor-spacer>.elementor-spacer-inner{height:var(–container-widget-height,var(–spacer-size))}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty,.e-con>.elementor-widget-spacer.elementor-widget-empty{position:relative;min-height:22px;min-width:22px}.e-con-inner>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon,.e-con>.elementor-widget-spacer.elementor-widget-empty .elementor-widget-empty-icon{position:absolute;top:0;bottom:0;left:0;right:0;margin:auto;padding:0;width:22px;height:22px}

안녕하세요, 클루커스 구글 클라우드 컨설턴트 엄수민, 박보련, 오지수, 최재우입니다.
클루커스는 지금까지 데이터 분석, 보안, 시각화 등의 데이터 활용 방안부터 관리까지 다양한 분야를 소개드렸습니다.
효율적인 데이터 관리 및 활용을 위해서는 먼저 데이터를 잘 수집하고 가공하는 과정이 중요한데요.

데이터를 가공하는 과정은 수집한 데이터를 적재 전 가공하는 ETL(Extract, Transfrom, Load)
데이터 적재 후 목적에 맞게 가공하는 ELT(Extract, Load, Transform) 두 가지로 나눠 볼 수 있습니다.

이번 포스팅에서는 ETL 프로세스에 대해 알아보겠습니다.
먼저, 기업에서 ETL 프로세스가 필요한 이유는 무엇일까요?
ETL 프로세스를 사용하면, ETL 프로세스를 사용하면, 기업은 데이터를 더 효율적으로 관리하게 될 뿐만 아니라
의사결정의 개선이 가능하고 새로운 비즈니스 기회 창출 등 다양한 이점을 얻을 수 있기 때문입니다.
그렇다면 Google Cloud에서 어떻게 ETL 프로세스를 구성할 수 있을지 소개드리겠습니다.

일반적으로, Google Cloud에서는 ETL 프로세스 구성을 위해 Dataproc, Dataflow, Cloud Data Fusion 과 같은 서비스들을 주로 사용하게 되는데요.
이번 영상에서는 Dataproc 기반의 효율적인 ETL 프로세스를 구성하는 방법에 대해 알아보겠습니다.

/*! elementor – v3.19.0 – 29-01-2024 */
.elementor-widget-divider{–divider-border-style:none;–divider-border-width:1px;–divider-color:#0c0d0e;–divider-icon-size:20px;–divider-element-spacing:10px;–divider-pattern-height:24px;–divider-pattern-size:20px;–divider-pattern-url:none;–divider-pattern-repeat:repeat-x}.elementor-widget-divider .elementor-divider{display:flex}.elementor-widget-divider .elementor-divider__text{font-size:15px;line-height:1;max-width:95%}.elementor-widget-divider .elementor-divider__element{margin:0 var(–divider-element-spacing);flex-shrink:0}.elementor-widget-divider .elementor-icon{font-size:var(–divider-icon-size)}.elementor-widget-divider .elementor-divider-separator{display:flex;margin:0;direction:ltr}.elementor-widget-divider–view-line_icon .elementor-divider-separator,.elementor-widget-divider–view-line_text .elementor-divider-separator{align-items:center}.elementor-widget-divider–view-line_icon .elementor-divider-separator:after,.elementor-widget-divider–view-line_icon .elementor-divider-separator:before,.elementor-widget-divider–view-line_text .elementor-divider-separator:after,.elementor-widget-divider–view-line_text .elementor-divider-separator:before{display:block;content:””;border-block-end:0;flex-grow:1;border-block-start:var(–divider-border-width) var(–divider-border-style) var(–divider-color)}.elementor-widget-divider–element-align-left .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider–element-align-left .elementor-divider-separator:before{content:none}.elementor-widget-divider–element-align-left .elementor-divider__element{margin-left:0}.elementor-widget-divider–element-align-right .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider–element-align-right .elementor-divider-separator:after{content:none}.elementor-widget-divider–element-align-right .elementor-divider__element{margin-right:0}.elementor-widget-divider–element-align-start .elementor-divider .elementor-divider-separator>.elementor-divider__svg:first-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider–element-align-start .elementor-divider-separator:before{content:none}.elementor-widget-divider–element-align-start .elementor-divider__element{margin-inline-start:0}.elementor-widget-divider–element-align-end .elementor-divider .elementor-divider-separator>.elementor-divider__svg:last-of-type{flex-grow:0;flex-shrink:100}.elementor-widget-divider–element-align-end .elementor-divider-separator:after{content:none}.elementor-widget-divider–element-align-end .elementor-divider__element{margin-inline-end:0}.elementor-widget-divider:not(.elementor-widget-divider–view-line_text):not(.elementor-widget-divider–view-line_icon) .elementor-divider-separator{border-block-start:var(–divider-border-width) var(–divider-border-style) var(–divider-color)}.elementor-widget-divider–separator-type-pattern{–divider-border-style:none}.elementor-widget-divider–separator-type-pattern.elementor-widget-divider–view-line .elementor-divider-separator,.elementor-widget-divider–separator-type-pattern:not(.elementor-widget-divider–view-line) .elementor-divider-separator:after,.elementor-widget-divider–separator-type-pattern:not(.elementor-widget-divider–view-line) .elementor-divider-separator:before,.elementor-widget-divider–separator-type-pattern:not([class*=elementor-widget-divider–view]) .elementor-divider-separator{width:100%;min-height:var(–divider-pattern-height);-webkit-mask-size:var(–divider-pattern-size) 100%;mask-size:var(–divider-pattern-size) 100%;-webkit-mask-repeat:var(–divider-pattern-repeat);mask-repeat:var(–divider-pattern-repeat);background-color:var(–divider-color);-webkit-mask-image:var(–divider-pattern-url);mask-image:var(–divider-pattern-url)}.elementor-widget-divider–no-spacing{–divider-pattern-size:auto}.elementor-widget-divider–bg-round{–divider-pattern-repeat:round}.rtl .elementor-widget-divider .elementor-divider__text{direction:rtl}.e-con-inner>.elementor-widget-divider,.e-con>.elementor-widget-divider{width:var(–container-widget-width,100%);–flex-grow:var(–container-widget-flex-grow)}

데모에서 사전 준비된 사항

  • 사용할 데이터 GCS(Google Cloud Storage) Bucket에 저장
  • 데이터가 적재될 BigQuery Dataset 생성

데모에서 나온 Dataproc Workflow Template 생성 시 주의사항

  • 클러스터 선택
    – 새로 클러스터를 생성하려는 경우 ‘관리형 클러스터 추가’에서 ‘관리형 클러스터 구성’ 클릭하여 사용합니다.
    – 기존 클러스터를 사용하려는 경우 ‘라벨별로 클러스터 풀 선택’에서 클러스터에 지정된 라벨을 입력합니다.
  • Private Cluster 생성
    – ‘클러스터 구성’에 ‘클러스터 맞춤설정’에서 ‘내부 IP 전용’을 체크하면 Dataproc 클러스터를 외부 IP 없이 생성해 보다 Private한 환경 구성이 가능합니다.
  • Apache Spark와 함께 BigQuery에서 데이터를 읽거나 쓰려는 경우 Connector 설정
    – ‘작업 추가’ 탭에서 ‘jar 파일’ 부분에 Google Cloud에서 제공하는 ‘spark-bigquery-connector’를 버전에 맞게 입력해야 합니다.
  • 특정 시간마다 Workflow Template을 동작해야 할 때
    – Cloud Scheduler를 사용해 원하는 시간, 요일마다 동작 시킬 수 있습니다.
    – Google Cloud의 관리형 Airflow인 Cloud Composer를 활용해 각 Dataproc Workflow를 DAG에서 수행할 Task로 등록하여 작업 스케줄링 및 오케스트레이션 할 수 있습니다.

Google Cloud에서 ETL 프로세스를 구축하시는데 도움이 필요하시다면, 클루커스와 함께 시작해보세요😊

Reference

Secured By miniOrange