TG360 Technologies는 다양한 비식별 기반 데이터를 수집하여, 최고도의 빅데이터 기술, ML/AI 기반의 분석 알고리즘을 기반으로 새롭게 만들어진 데이터를 제공하고 있습니다. 데이터를 제공하기 전에, 정리하고 변환해야 합니다. Hive 를 이용한 ETL (추출, 변환, 적재) 작업은 데이터를 준비하고 제공 가능한 형태로 데이터를 적재하는데 사용됩니다.
1. Hive 란
- 하둡에서 동작하는 데이터 웨어하우스 인프라 구조로서 데이터 요약, 질의 및 분석 기능을 제공합니다.
- Apache Hive 데이터 웨어하우스 소프트웨어는 SQL을 사용하여 분산 스토리지에 있는 대규모 데이터 세트를 읽고, 쓰고, 관리하는 것을 용이하게 합니다.
- Hive 연결하기 위해 명령어 도구 및 JDBC 드라이버가 제공됩니다.
- Hive는 온프레미스(on-premise)로 사용되거나 HDFS, Azure, AWS S3, Google Cloud Storage 등과 같은 다양한 스토리지 미디어와 함께 클라우드에서 사용 될 수 있습니다.
- RDB의 데이터베이스, 테이블과 같은 형태로 HDFS에 저장된 데이터의 구조를 정의하는 방법을 제공하며, 이 데이터를 대상으로 SQL과 유사한 HiveQL 쿼리를 이용하여 데이터를 조회하는 방법을 제공합니다.
- MySQL 구문에 가깝지만 ANSI SQL 표준을 준수하지 않습니다.
Hive 구성
그림 1은 Hive의 주요 구성 요소와 Hadoop과의 상호 작용을 보여줍니다. 이 그림에서 볼 수 있듯이 Hive의 주요 구성 요소는 다음과 같습니다.
- UI - 사용자가 쿼리 및 기타 작업을 시스템에 제출하는 사용자 인터페이스입니다. CLI, Beeline, JDBC 등이 있습니다.
- Driver - 쿼리를 입력받고 작업을 처리 합니다. 사용자 세션을 생성하고, JDBC/ODBC 인터페이스 API 제공 합니다.
- Compiler - 메타스토어를 참고하여 쿼리 구문을 분석하고 실행계획을 생성 합니다.
- Metastore - 데이터베이스, 테이블, 파티션의 정보를 저장 합니다.
- Execution Engine - 컴파일러에 의해 생성된 실행 계획을 실행 합니다.
Hive 실행 순서
- 사용자가 제출한 SQL문을 드라이버가 컴파일러에 요청하여 메타스토어의 정보를 이용해 처리에 적합한 형태로 컴파일합니다.
- 컴파일된 SQL을 실행엔진으로 실행합니다.
- 리소스 매니저가 클러스터의 자원을 적절히 활용하여 실행합니다.
- 실행 중 사용하는 원천데이터는 HDFS 등의 저장장치를 이용합니다.
- 실행 결과를 사용자에게 반환합니다.
Hive 에 대한 간략한 설명은 여기까지 하고 실제 TG360 온라인 행동 데이터 ETL 작업 사례를 예제로 통해서 설명을 진행하도록 하겠습니다.
2. Hive 를 이용한 온라인 행동 데이터 ETL 프로세스 개요
다음 그림은 온라인 행동 데이터 ETL 프로세스를 간략히 보여주고 있습니다. 수집된 데이터는 Hive 를 ETL 도구로 사용하여 분석된 데이터로 제공합니다.
1. 마케팅/광고서비스등으로 온라인 행동 원본 데이터가 매시간 DMP Hadoop 지정된 경로에 파일로 적재됩니다.
2. Hive 에서 스키마를 저장하는데 사용할 메타데이터 저장소 데이터베이스 (MySQL 데이터베이스 사용)를 생성합니다.
3. 행동 데이터 원본을 읽을 수 있는 테이블과 ETL 작업 결과를 저장하는 테이블를 정의합니다.
4. Jenkins 에서는 등록된 스케줄에 따라서 Hive 서비스를 실행하고, Hive 를 통해서 수집된 행동 데이터는 ETL(추출, 변환, 적재) 작업을 통해서 결과 테이블에 적재합니다.
5. Elastic Search, Greenplum, MySQL 등을 통해서 분석 데이터를 제공합니다.
본 포스팅에서는 ETL 도구인 Apache Hive 와 TG360 온라인 행동 데이터 ETL 개요에 대해서 간략히 알아봤습니다.
이후 포스팅에서는 TG360 ETL 각 프로세스 단계별로 상세하게 다뤄보도록 하겠습니다.
'Tech' 카테고리의 다른 글
Apache Hive 쿼리 오류 해결 방안 (1) | 2022.06.27 |
---|---|
Git GUI 소스트리(SourceTree) 활용 - Custom Action 기능 (0) | 2022.06.13 |
Parquet 파일 구조와 관련 설정 값 이해하기 (0) | 2022.05.23 |
RabbitMQ - SAC(Single Active Consumer) (0) | 2022.04.06 |
Google Privacy Sandbox (0) | 2022.03.07 |