[Kafka] Kafka에 대하여
·
Data Engineering
개요Kafka를 처음 접한건 데이터 연합 동아리 BOAZ에서였다. 이벤트 스트리밍에 최적화된, producer와 consumer가 있는 메시징 큐라는 것을 배웠던 것 같다. 그때 Kafka를 배우기만 하고 따로 정리를 안하기도 했고, Kafka의 단편적인 모습만 배운 것 같아서 처음부터 정리하려고 한다. 우선 카프카는 라이브러리도, 프레임워크도 아닌 하나의 플랫폼이다. 여러 개의 컴포넌트들이 상호작용하면서 동작하는 플랫폼이다. Airflow랑 구조가 비슷하다고 보면 된다. 똑같이 여러 개의 컴포넌트를 사용해 서로 통신하면서 동작하니까. Kafka가 탄생한 배경: Event StreamingKafka를 알기 위해 Apache Kafka 홈페이지에 들어가봤다. Kafka를 소개하는 페이지의 첫 번째 주제..
[데이터 파이프라인] 3. 데이터 수집 실습
·
Data Engineering
이번 실습에서는 데이터 수집 중에서 로컬 데이터베이스에서 csv 파일을 추출 후 s3 버킷에 업로드 하는 것을 실습한다. 알아야 할 SDK는 boto3이다. boto3는 파이썬 HTTP 프레임워크로, AWS 서비스를 다루기 위해 만들어졌다. HTTP 요청과 응답을 사용하기 때문에 AWS 서비스만 쓰이는 것은 아니고 로컬의 여러 서비스 접속에도 활용할 수 있다. 오늘의 할 일pymysql을 이용한 로컬 MySQL 접속MySQL Orders 데이터를 csv 파일로 추출 후 로컬에 저장로컬에 저장한 csv 파일을 boto3을 이용해 AWS s3 버킷에 저장 로컬 MySQL 접속모든 실습은 ubuntu에서 진행한다. python 스크립트를 이용해 MySQL 데이터베이스에 접속하는 것이 목적이다. 참고로 ubun..
[Airflow] Slack을 이용한 Airflow 실습 - 3 (Slack Webhook)
·
Data Engineering
Slack WebhookSlack에서 외부 앱이 봇처럼 활용될 수 있도록 특정 워크스페이스에 열어둔 HTTP URL이다. 워크스페이스의 고유한 주소로, 이 주소로 정보를 보내면 채팅으로 올라온다. 다양한 활용 방법이 있는데,외부 서비스 이벤트 알림데이터 파이프라인 알림서버 알림 등으로 활용할 수 있다. 발급 방법https://api.slack.com/apps 접속“Create New App” 클릭“From scratch” 선택 → 이름과 워크스페이스 설정좌측 메뉴에서 “Incoming Webhooks” 선택“Activate Incoming Webhooks” → ON아래로 스크롤 → “Add New Webhook to Workspace” 클릭채널 선택 후 “Allow” 클릭발급된 Webhook URL을 복..
[Airflow] Slack을 이용한 Airflow 실습 - 2 (Airflow와 DAG)
·
Data Engineering
Airflow 및 Docker 폴더로컬의 airflow 폴더에 들어가면 4개의 폴더가 존재한다. 이 로컬의 폴더들은 모든 airflow 컴포넌트 컨테이너의 특정 폴더에 마운트 된다. 컨테이너의 설정을 담고 있는 docker-compose.yaml 파일을 열어보면 모든 컨테이너 안에 특정 경로에 다음의 폴더들을 마운트하라고 적혀있다. 이것 덕분에 우리가 로컬의 dags 폴더에 원하는 dag 코드를 넣어두면 컨테이너들이 이를 인식할 수 있는 것이다. 마운트는 한 운영체제 안에 다른 기기(코드로 운용될 수 있는 기기 ex) 디스크, 메모리 등)가 운영체제 안에 파일 형식으로 인식되는 행위를 의미한다. USB를 꽂을 때 내 컴퓨터에 USB가 뜨는게 마운트라 할 수 있다. Airflow WebserverWebs..
[Airflow] Slack을 이용한 Airflow 실습 - 1 (Docker와 Airflow 연동)
·
Data Engineering
Airflow와 Slack Webhook을 활용해 Airflow의 기능을 실습해보자. Airflow란?Airflow는 복잡한 데이터 파이프라인을 관리해주는 오픈 소스 워크플로우 플랫폼이다. 쉽게 설명하면 데이터 엔지니어링 과정을 관리하고 자동화 해주는 툴이다. ETL과 같이 데이터를 다루는데 필요한 과정을 python 등의 코드를 통해 자동으로 실행되게 만들 수 있다. 이번에 실습을 하면서 Airflow를 처음 만져보기 때문에 천천히 알아보자. Airflow는 여러 컴포넌트들을 활용해 데이터 파이프라인을 관리한다. 각각의 컴포넌트는 컨테이너 안에서 동작하며 컨테이너끼리 통신하면서 파이프라인 관리 동작을 조율한다. Airflow와 Docker ComposeDocker Compose는 여러 개의 컨..
[데이터 파이프라인] 2. 일반적인 데이터 파이프라인
·
Data Engineering
ETL과 ELT데이터 파이프라인의 세부 단계에는 세가지가 있다. Extract(추출), Transform(변환), Load(적재)이다. 세 단계의 순서를 어떻게 하느냐에 따라 ETL과 ELT로 나뉜다. ETL전통적인 데이터 파이프라인으로 데이터를 소스에서 추출하고, 회사 내부의 컴퓨팅 자원을 이용해 데이터를 변환하여 데이터베이스나 웨어하우스 저장하는 방식이다. 오랫동안 쓰여 왔고 변환된 데이터를 간편하게 쓸 수 있다는 장점이 있지만, 데이터 인프라가 변경되면 파이프라인을 다시 만들어야 하는 단점이 있다. 또 필요이상의 데이터를 미리 변환하는 바람에 컴퓨팅 자원이 낭비될 수 있다. ELT데이터의 저장과 분석을 동시에 할 수 있도록 컴퓨팅 자원이 구비된 웨어하우스의 등장으로 새롭게 생겨난 파이프라인 구조이다..
[데이터 파이프라인] 1. 데이터 파이프라인 소개 및 설명
·
Data Engineering
데이터 파이프라인 기본 개요데이터 파이프라인의 정의다양한 소스의 데이터를 가치를 뽑아내는 특수한 대상으로 옮기고 변환하는 일련의 과정 데이터 파이프라인의 결과물이 빙산의 일각이고, 데이터 파이프라인은 빙산의 가려진 부분이다. 잘 정리되고 통찰력을 주는 분석 결과물은 견고하게 지어진 데이터 기계를 통해 등장한다. 데이터 파이프라인은 이 기계를 구축하는 일 전반을 다룬다. 데이터 엔지니어에게 요구되는 기술데이터 엔지니어에게 요구되는 기술은 다음과 같다. 숙련된 SQL 실력과 기초 웨어하우스 지식을 갖춰야 한다. 파이썬과 자바와 같은 데이터를 다루는데 사용하는 프로그래밍 언어를 알아야 한다. Hadoop, Spark와 같은 빅데이터를 위한 분산 컴퓨팅 기술을 알아야 하며 클라우드도 알아야 한다. 그리고 로그 ..
[Spark] RDD는 무엇인가?
·
Data Engineering
소개RDD는 Spark에서 사용할 수 있는 데이터를 다루는 하나의 객체이다. 이 객체는 sc(spark context)라는 객체를 통해 생성될 수 있으며 빅데이터의 클러스터내 분산 저장과 여러 개의 멀티 코어에서 동시에 다뤄지는 것을 가능하게 한다. Spark의 여러 라이브러리들은 RDD를 활용하는 것으로부터 출발하기 때문에 RDD라는 개념 위에서 동작한다고 볼 수 있다.  RDD 생성 방법RDD를 생성하는 방법은 다양하다.클라우드 환경의 S3에서 사용HDFSJDBC, ODBCElasticSearchHadoop의 Hive 등빅데이터를 다루는 소프트웨어이기 때문에 다양한 데이터베이스와 호환될 수 있다. 자바와 파이썬 위에서 동작하는 Spark 특성상 JDBC와도 연결이 가능함을 알 수 있다.  그럼 왜 쓰..