본문 바로가기
데이터/데이터 엔지니어링

빅데이터 파이프라인 총정리 (Hive, Spark, Airflow, Hadoop, Oozie)

by 개발하는 감자입니다 2023. 12. 17.
728x90

안녕하세요. 개발감자 박그냥입니다.

국내 기업에서 가장 많이 사용하는 빅데이터 파이프라인에 대해서 정리해보는 시간을 가져보도록 하겠습니다.

 

 

 

빅데이터 파이프라인은 왜 필요한 걸까요? 누구나 데이터를 쉽게 접근하여 사용하도록 하려면 기업은 빅데이터 플랫폼을 만들어 제공합니다. 기업의 다양한 서비스에서 데이터를 수집하고 이를 분석하고 서비스 개선에 활용하기도 합니다.

그럼 하나씩 차근 차근 정리해보도록 할까요?

 

 

출처 - https://www.linkedin.com/pulse/100-open-source-big-data-ml-architecture-papers-sequel-anil-madan/

 

 

위의 그림을 보면 빅데이터 시스템에 대한 전반적인 오픈소스 빅데이터/ML 아키텍쳐를 확인할 수 있습니다.

데이터를 저장하고 처리하고 분석하고 서빙하는 과정에서 어떤 오픈 소스들이 사용되는지 정리해놓은 것입니다. 

 

빅데이터 처리 과정은 데이터 소스 > 수집 > 저장 > 처리 > 분석 > 표현과 같습니다.
데이터 소스 : 내부 데이터, 외부 데이터, 미디어
수집 : 수동 / 자동 (로그 수집기, 크롤링, 센싱)
저장 : 정형 / 비정형 데이터 
처리 : 일괄 처리, 실시간 & 배치, 분산 병렬 처리
분석 : 전처리, 분석 모델

 

 

빅데이터 파이프라인은 데이터 처리 및 분석을 위해 여러 도구와 기술을 결합하여 사용하는 과정입니다. 여기에는 Hive, Spark, Airflow, Hadoop, 그리고 Oozie와 같은 도구들이 사용됩니다.

출처 :  1004jonghee.tistory.com

1. Hadoop

Hadoop은 대규모 데이터를 저장하고 처리하기 위한 오픈소스 프레임워크입니다. Hadoop은 분산 파일 시스템(HDFS)과 MapReduce를 기반으로 하며, 대용량 데이터의 분산 저장과 병렬 처리를 가능케 합니다.

 

1. Hadoop 분산 파일 시스템 (HDFS): HDFS는 Hadoop의 파일 시스템으로, 대용량의 데이터를 여러 노드에 분산하여 저장하는데 사용됩니다. 데이터를 작은 블록으로 나누어 여러 노드에 분산 저장함으로써 데이터의 안정성과 가용성을 보장합니다. 각 블록은 여러 복사본으로 저장되어 데이터 손실 시 복구가 가능합니다. HDFS의 분산 저장 구조는 대규모 데이터를 안정적으로 관리할 수 있는 기반을 제공합니다.

2. MapReduce: MapReduce는 Hadoop에서 데이터 처리를 위한 프로그래밍 모델 및 프레임워크입니다. MapReduce는 데이터 처리를 두 단계로 나누어 수행합니다.

  • Map 단계: 입력 데이터를 여러 노드에 분산시켜 작은 조각으로 나누고, 이를 처리하는 과정입니다. 각 조각은 키-값(key-value) 쌍으로 매핑됩니다.
  • Reduce 단계: Map 단계에서 생성된 결과를 모아서 최종 결과를 생성하는 단계입니다. 이 과정에서 동일한 키를 가진 값들을 그룹화하고 집계하는 작업을 수행합니다.

이러한 MapReduce 모델은 대규모 데이터를 효율적으로 분산 처리할 수 있도록 설계되었습니다. 이 프로세스는 데이터를 처리하는 데 있어서 병렬성과 확장성을 제공하여 대용량 데이터를 효율적으로 처리할 수 있게 해줍니다.

또한, Hadoop은 이 외에도 여러 기능과 도구들을 제공하여 데이터 처리, 관리, 분석을 위한 다양한 환경을 구축할 수 있습니다. 예를 들어, Hive는 SQL 스타일의 쿼리를 사용하여 Hadoop 상의 데이터를 처리하고, Spark는 빠른 속도로 데이터를 처리하는 데에 사용됩니다. 이러한 다양한 도구들을 통해 Hadoop은 대규모 데이터를 효과적으로 다룰 수 있는 환경을 제공합니다.

 

 

2. Hive

Data Management Service - Data Query
( The data query tools range from declarative languages like SQL to procedural languages like Pig)
Hive provides an introduction of Hive, while Hive another good paper tries to share the motivations behind Hive at Facebook.

 

Hive는 Hadoop 상에서 데이터를 관리하고 분석하기 위한 데이터 웨어하우징 시스템입니다. SQL과 유사한 HiveQL을 사용하여 데이터를 질의하고 처리할 수 있습니다. 비전공자도 익숙한 SQL 문법을 사용하여 데이터에 접근할 수 있어 편리합니다.

 

1. 데이터 모델링과 저장: Hive는 데이터를 테이블로 구조화하여 저장합니다. 이 테이블은 파일 형태로 Hadoop 분산 파일 시스템(HDFS)에 저장됩니다. 테이블은 사용자가 정의한 스키마에 따라 구성되며, 파일 형태의 데이터를 이러한 테이블에 매핑하여 쿼리할 수 있습니다.

2. HiveQL 사용: Hive는 SQL과 유사한 HiveQL을 사용하여 데이터를 조회하고 처리합니다. 이는 비전공자들도 익숙한 SQL 문법을 사용할 수 있어, 데이터에 쉽게 접근하고 다룰 수 있도록 해줍니다. SQL과 비슷하게 SELECT, INSERT, UPDATE, DELETE 등의 쿼리를 사용하여 데이터를 다룰 수 있습니다.

3. 성능 및 최적화: Hive는 처음에는 MapReduce를 기반으로 동작하였지만, 더 나은 성능을 위해 Tez나 Spark와 같은 엔진을 사용하여 쿼리를 실행하는 방식으로 발전해왔습니다. 이러한 엔진들을 사용함으로써 데이터 처리 속도를 향상시키고 최적화된 쿼리 실행을 가능케 합니다.

4. 데이터 처리 및 분석: Hive는 대용량 데이터를 다루는 데 특화되어 있어, 대규모 데이터를 효율적으로 처리하고 분석할 수 있습니다. 사용자들은 SQL 스타일의 문법을 사용하여 데이터를 쉽게 조회하고 분석할 수 있으므로, 데이터 처리 작업을 진행하기 위한 진입 장벽이 낮습니다.

5. 활용: 현업에서는 Hive를 데이터 분석, 보고서 작성, 비즈니스 인텔리전스(BI) 등 다양한 목적으로 사용합니다. 특히 SQL을 잘 다루는 사용자들은 Hive를 통해 Hadoop 상의 데이터를 쉽게 다룰 수 있어, 기존에 SQL을 사용해왔던 사용자들이 쉽게 적응할 수 있는 장점이 있습니다.

요약하자면, Hive는 SQL과 유사한 쿼리 언어를 사용하여 대용량 데이터를 Hadoop 상에서 다루기 쉽게 만들어주는 도구로, 데이터 웨어하우징 작업을 편리하게 할 수 있도록 해줍니다.

 

 

3. Spark

Data Foundational Services- Engines (They are the execution runtimes which provide an environment for running distinct kinds of compute. The two most common engines are spark and Flink.)
Spark has popularity and widespread adoption with a thriving ecosystem.

 

Spark는 빠른 데이터 처리 및 분석을 위한 오픈소스 클러스터 컴퓨팅 시스템입니다. 메모리 기반의 데이터 처리를 지원하여 Hadoop보다 빠른 속도로 데이터를 다룰 수 있습니다. 또한 다양한 언어를 지원하며, 머신 러닝 및 그래프 처리와 같은 다양한 작업을 수행할 수 있습니다.

 

Spark는 뛰어난 성능과 다양한 기능을 갖춘 오픈소스 클러스터 컴퓨팅 시스템으로, 여러 측면에서 유용한 특징들을 갖고 있습니다.

1. 빠른 데이터 처리: Spark는 메모리 기반의 데이터 처리를 지원하여 Hadoop의 디스크 기반 처리보다 훨씬 빠른 속도로 데이터를 처리할 수 있습니다. 이는 데이터를 디스크가 아닌 메모리에 유지하고 연산을 수행함으로써 I/O 속도를 크게 향상시킵니다.

2. 다양한 언어 지원: Spark는 Java, Scala, Python, R 등 다양한 프로그래밍 언어를 지원합니다. 이는 다양한 개발자들이 자신이 편한 언어로 Spark를 사용할 수 있도록 합니다.

3. 다양한 작업 수행: Spark는 다양한 작업을 수행할 수 있는데, 주요 기능으로는 배치 처리, 실시간 스트리밍 데이터 처리, 머신 러닝, 그래프 처리 등이 있습니다. 이러한 다양한 기능들을 하나의 플랫폼에서 지원함으로써 효율적인 데이터 처리 및 분석을 가능케 합니다.

4. 현업 활용: 현업에서 Spark는 대규모 데이터 처리, 실시간 스트리밍 분석, 머신 러닝 모델 학습 등 다양한 분야에서 활용됩니다. 대용량 데이터 처리에 강점을 가지고 있어 대규모 데이터를 빠르게 처리하고 분석할 수 있으며, 실시간 데이터 스트리밍 분석을 통해 실시간으로 데이터를 분석하여 의사 결정에 활용됩니다. 또한, 머신 러닝 및 그래프 처리와 같은 작업에서도 효과적으로 사용됩니다.

 

4. Airflow

Data Management Servies - Orchestration (tools help build data pipelines)
Airflow is originally developed at AirBnb, helps author, schedule and monitor workflows.

 

Airflow는 워크플로 관리를 위한 오픈소스 도구로, 작업 스케줄링, 모니터링, 작업 흐름 관리 등을 지원합니다. 시각적인 플로우 차트로 워크플로우를 관리할 수 있어 작업들 간의 의존성을 쉽게 파악할 수 있습니다.

 

1) 작업 스케줄링과 실행 관리: Airflow는 작업들 간의 의존성을 정의하고 스케줄을 관리할 수 있습니다. 사용자는 시간, 종속성, 우선 순위 등을 설정하여 작업의 실행을 예약하고 관리할 수 있습니다. 이를 통해 복잡한 데이터 처리 작업을 효율적으로 스케줄링할 수 있습니다.

2) 시각적인 워크플로우 표현: Airflow는 시각적인 플로우 차트를 통해 워크플로우를 관리할 수 있습니다. 이를 통해 사용자는 작업들 간의 관계와 의존성을 쉽게 파악할 수 있습니다. 이 시각적인 표현은 워크플로우 디자인과 모니터링을 용이하게 해줍니다.

3) 유연한 작업 정의: Airflow는 Python으로 작성된 코드로 작업을 정의할 수 있는데, 이는 사용자들이 복잡한 데이터 처리 작업이나 사용자 정의 작업을 유연하게 정의하고 관리할 수 있도록 도와줍니다.

4) 현업 활용: 현업에서 Airflow는 데이터 엔지니어링, ETL 작업, 데이터 워크플로우 자동화 등 다양한 분야에서 활용됩니다. 예를 들어, 데이터 파이프라인을 관리하고 효율적으로 실행하기 위해 사용됩니다. 또한, 정기적인 데이터 처리 작업이나 일정 기간마다 실행되어야 하는 작업들을 자동화하는 데에도 활용됩니다.

Airflow는 신뢰성 높은 데이터 처리를 위해 사용되며, 작업 스케줄링, 모니터링, 의존성 관리 등의 기능을 통해 현업에서 데이터 파이프라인을 효율적으로 구축하고 관리하는 데에 중요한 역할을 합니다.

 

5. Oozie 

Data Management Servies - Orchestration (tools help build data pipelines)
Oozie is a workflow scheduler system to manage Hadoop jobs

 

Oozie는 Hadoop 생태계에서 작업 흐름을 스케줄링하고 관리하기 위한 시스템입니다. XML 기반의 워크플로우 정의를 통해 작업을 스케줄링하고 관리합니다.

 

1) 워크플로우 스케줄링: Oozie는 다양한 종류의 작업을 포함하는 워크플로우를 정의하고 스케줄링할 수 있습니다. 이를 통해 복잡한 데이터 처리 작업의 흐름을 관리하고 실행할 수 있습니다.

2) XML 기반의 워크플로우 정의: Oozie는 작업 흐름을 정의하기 위해 XML 기반의 언어를 사용합니다. 이를 통해 사용자는 작업들의 순서, 의존성, 실행 조건 등을 명시적으로 정의할 수 있습니다.

3) 다양한 작업 유형 지원: Oozie는 MapReduce 작업, Hive 쿼리, Pig 스크립트, Sqoop 작업 등 다양한 유형의 작업을 지원합니다. 이는 다양한 Hadoop 생태계의 도구들을 통합하여 하나의 워크플로우에서 실행할 수 있도록 해줍니다.

4) 현업 활용: 현업에서 Oozie는 데이터 엔지니어링, ETL 작업, 데이터 워크플로우 자동화 등 다양한 분야에서 활용됩니다. 특히, Hadoop 기반의 데이터 처리 및 분석 작업을 정기적으로 실행하거나 여러 작업들 간의 의존성을 관리하기 위해 사용됩니다.

Oozie는 Hadoop 생태계에서 다양한 작업들을 조율하고 관리하여 복잡한 데이터 처리 흐름을 효율적으로 실행하도록 지원합니다. 데이터 엔지니어들이 데이터 처리 워크플로우를 정의하고 스케줄링하는 데에 필요한 유용한 도구 중 하나입니다.

 

 

일반적으로 데이터가 Hadoop 클러스터에 저장되고, Hive를 사용하여 SQL과 유사한 언어로 데이터를 쿼리하고 처리합니다. Spark는 Hadoop 위에서 실행되어 더 빠른 데이터 처리와 분석을 수행하며, Airflow나 Oozie를 사용하여 작업 스케줄링 및 관리를 합니다.

예를 들어, 데이터 처리 워크플로우는 Airflow나 Oozie를 통해 정의되고 스케줄되며, 이 워크플로우 내에서 Hive나 Spark가 데이터를 추출, 가공, 분석하게 됩니다. 이렇게 각 도구들이 연계되어 데이터 처리 파이프라인이 구축되고 운영되는 것이죠.

 

이렇게 빅데이터 파이프라인에 대해서 간단하게 총정리를 해보았습니다. 개념을 잡는데에 도움이 되셨길 바랍니다.

 

그럼 더 알찬 글로 돌아올게요. 개발감자였습니다.

출처

https://www.youtube.com/watch?v=_d-wNMxIn8U

https://www.youtube.com/watch?v=HCR1ILMROfI

728x90
반응형