Data Engineering 18

Parquet vs ORC 데이터 파일 형식 비교하기.

데이터 엔지니어링 분야에서 일하거나 빅 데이터를 다루는 분석가, 과학자라면 데이터를 처리할 때(저장, 호출 등) 스토리지 및 처리에 적합한 파일 형식을 선택해야 한다. 적절한 데이터 파일 형식을 선택함에 따라 대용량 데이터를 효율적으로 저장하고 처리할 수 있는데 그 중 인기 있는 두 가지 파일 형식인 Apache Parquet(아파치 파케이)와 ORC(Optimized Row Columnar)에 대해 설명한다. 1.Apache Parquet(아파치 파케이)란? Apache Parquet은 하둡(hadoop) 에코시스템의 모든 프로젝트에서 사용할 수 있는 컬럼 스토리지 파일 형식이다. 효율성과 성능을 위해 설계되었으며 특히 대규모 데이터셋에서 복잡한 쿼리를 실행하는 데 적합하다. Parquet 파일을 쓸 ..

Hadoop의 Mapreduce(맵리듀스) vs Spark(스파크)?

하둡 Hdfs 상에 데이터를 저장하고 PySpark로 분석하면서 정확한 시스템 용어나 개념에 대해서 정리해야지 말만하다가 이제라도 공부하고 정리하려고 한다. 다는 모르더라도 기본적인 것은 알고쓰자! 1.하둡(Hdoop)이란 - HDFS, MapReduce? 하둡은 대규모 데이터를 저장하고 처리하는데 사용되는 오픈소스 분산 컴퓨팅 프레임 웤이다. 아파치 소프트웨어 재단에서 개발하고 관리하며, 대용량(large-scalable) 데이터를 여러 대의 컴퓨터 클러스터에서 처리할 수 있도록 설계되어 있다. 여기서 우리가 알고 가야할 핵심적인 개념을 뽑자면 hdfs와 mapreduce이다. Hadoop 분산 파일 시스템(Hadoop Distributed File System, HDFS) HDFS는 대용량 데이터를 ..

airflow에서 start_time, execution_time, backfill, catchup

1.airflow의 시간 https://airflow.apache.org/docs/apache-airflow/stable/faq.html#what-s-the-deal-with-start-date: start_date, execution_date 공식문서 1-1.start_date 실행 날짜가 아니라 스케줄 시작 시간으로 DAG 첫 실행은 'start_date + 실행주기' 에 실행하게 된다. start_date: 2023-08-01 00:00:00 hourly job: schedule: 0 * * * * (매시 0분에 실행) → DAG의 첫 실행은 2023-08-01 01:00:00 daily job: schedule: 0 10 * * * (매일 10시 0분에 실행) → DAG의 첫 실행은 2023-08..

airflow는 어떻게 작동할까? 그리고 DAG란?

기존에 다른 배치 프로그램을 사용하다가 airflow로 넘어오면서 뭐 같은 workflow 프로그램 이겠구나 싶었다. 근데 airflow만의 문법이나 기능? 개념? 등을 새롭게 접하면서 단순히 똑같은 배치 프로그램이라고 생각하고 넘어가기 보다는 찾아보고 정리하는 부분이 필요하다고 느꼈다. 그리고 airflow만의 시간에 대한 공부없이 냅다 dag를 만들어서 구현하려다 보니 너무 고생했어서 여기다 같이 정리 하겠다 ㅇㅅㅇ. 1.airflow란? Apache Airflow™는 python 코드로 워크플로우(workflow)를 개발하고, 스케줄링 및 모니터링하기 위한 오픈 소스 플랫폼. DAG(Directed Acyclic Graph, 유향 비순환 그래프): python으로 작성한 workflow로 이를 통해..

airflow DAG 결과를 Slack API로 메세지 받아보기

기존에 Jenkins를 이용해 코드 배치관리를 진행했는데 코드 관리나 배치 관리 복잡도가 증가하면서 모델별로 하나의 DAG로 관리하고 체계적인 system화를 위해 airflow로 배치를 옮기고 있다. 거기다 기존의 hive sql을 pyspark로 구현해서 정리까지 하고있는데 병아리 수준에서 시스템, 코드를 뜯어보고 새롭게 구성하려고 하니 에러 투성이다 ㅠ Slack에서 제공되는 API를 활용하여 구성해둔 DAG가 정상 작동 했는지 메세지를 전달 받아 모니터링을 효율적으로 하는 목적으로 해당 페이지를 작성했다. 참고로 Slack과 airflow는 설치 및 세팅이 돼 있다는 가정하에 작성했고 DAG 구성에 대한 디테일한 설명은 없다. 추후에 공부하고 정리해서 따로 올리려고 한다. [목차] 1.airflo..

[빅데이터를 지탱하는 기술] Ch5.빅데이터 파이프관리

5-1.워크플로우 관리 정해진 업무를 원활하게 진행하기 위한 구조 워크플로 관리도구 정기적으로 태스크 실행 비정상적인 상태 감지후 해결 ex) Airflow, azkaban, Digdag, Luigi, Oozie 워크플로 관리도구와 태스크 정해진 개별 반복 처리를 태스크(Task)라고 함 도구를 사용하는 이유는 태스크 실행의 실패 때문 태스크 수 증가로 재실행이 어려워 도구를 활용함 워크플로 관리 도구의 기능 정기적인 스케쥴로 태스크 실행후 통지 태스크간 의존 관계를 정하구 정해진 순서대로 실행 태스크 실행결과 보관, 오류 발생시 재실행 워크플로 관리 도구의 종류 선언 형과 스크립트 형 선언형(declarative) XML, YAML 등의 서식으로 워크플로 기술 미리 제공된 기능만 이용가능하지만 최소한의..

[빅데이터를 지탱하는 기술] Ch4.빅데이터의 축적

4-1 벌크 형과 스트리밍 형의 데이터 수집 빅데이터는 대부분 확장성이 높은 분산 스토리지(distributed storage)에 저장 Hadoop 이라면 HDFS, 클라우드 서비스라면 Amazon S3 객체 스토리지(object storage)에서는 다수의 컴퓨터를 사용해 파일을 여러 디스크에 복사 데이터의 중복화 및 부하 분산 파일 읽고 쓰는데 네트워크 거쳐 실행 여러 디스크에 복사하기 때문에 일부 고장 나더라도 데이터 손실 x 다수의 하드웨어에 분산해 데이터 양 커도 성능 유지 소량에 데이터에서는 오히려 비효율적, 데이터양에 비해 통신 오버헤드가 큼 빅데이터에서 자주 다루는 것은 시계열 데이터 수시로 객체 스토리지에 기록시 대량의 작은 파일이 생성돼 성능 저하 적당히 모아서 하나의 큰 파일로 만드는..

[빅데이터를 지탱하는 기술] Ch3.빅데이터 분산 처리 프레임워크

3-1 대규모 분산 처리의 프레임워크 구조화 데이터(structured data) 스키마(schema) 명확하게 정의된 데이터 테이블 비구조화 데이터(unstured data) 스키마가 없는 데이터 텍스트, 이미지 스키마리스 데이터(schemaless data) CSV, JSON(인터넷을 통해 주고받는 데이터), XML 서식은 정해져 있지만, 컬럼 수나 데이터형은 명확X 일반적으로 구조화 데이터 압축률 높이기 위해 열지향 스토리지로 저장 즉, MPP DB로 저장하거나 Hadoop 상에서 열 지향 스토리지 형식으로 변환 구조화된 데이터중 시간에 따라 증가하는 데이터를 팩트 테이블, 그에 따른 부속 데이터를 디멘젼 테이블데이터 구조화 열 지향 스토리지의 작성 MPP DB의 경우 제품에 따라 스토리지의 형식이..

[프로그래머스] 데이터 엔지니어 study - 8주차

1.Database Normalizaion DB를 조직적이고 일관된 방법으로 디자인 → 데이터 정합성 유지, 수정/적재/삭제 용이 사용되는 개념 → Primary key, Composite key, Foregin key 1NF(First Normal Form) 2NF(Second Normal Form) 일단 1NF 만족 Primary Key 중심으로 의존결과 알 수 있어야함 부분적인 의존도 x → 모든 부가 속성들은 Primary Key를 가지고 찾을 수 있어야함 3NF(Third Normal Form) 2NF 만족 전이적 부분 종속성 없어야함 Slowly Changing Dimensionsl DW, DL에서 모든 테이블의 히스토리를 유지하는 것이 중요함 보통은 두개의 timestamp 필드 create..

[프로그래머스] 데이터 엔지니어 study - 7주차

1.Spark 기초 hadoop이 1세대라면 스파크 2세대 빅데이터 처리 기술 YARN등을 분산환경으로 사용 Scala로 작성됨 등장 버클리 대학 AMPLab에서 아파치 오픈소스 프로젝트로 2013년 시작 Databricks 스타트업 창업 Spark 3.0 구성 Spark Core: pandas의 데이터 프레임과 같음 Spark SQL Spark ML: scikit learn의 분산 버전 Spark Streaming Spark GraphX 자체 서버 엔진을 들고있는게 아니라 하둡(YARN), Kubernetes 와 같은 resource 매니저 위에서 돌아감 Spark vs MapReduce Spark 기본적으로 메모리 기반 → 메모리 부족시 디스크 사용 하둡(YARN) 이외에도 다른 분산 컴퓨팅 환경 지..