Data Camp - Data Enginner Career 복습
데이터 사이언티스트를 보조하는 일이 데이터 데이터 엔지니어로서의 길임
데이터베이스, 대규모 처리 시스템과 같은 아키텍쳐 구성, 테스트 및 유지하는 역할
데이터 엔지니어는 데이터 대량 처리에 초점을 둔다
기계 클러스터의 사용
데이터 품질 보호
클라우드 기술 등
데이터베이스 시스템의 전문 사용자임 / 작업은 주로 데이터베이스에서 일어날 것임
데이터를 신속하게 처리할 수 있는 도구를 사용함
데이터 처리, 합병 등을 할 때 엄청난 양의 데이터를 처리함
따라서 한 컴퓨터에서 데이터를 처리하는 대신, 기계 클러스터(여러 대의 컴퓨터들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합)를 사용해서 데이터를 처리한다.
=> 기본 아키텍쳐를 추상화함 + 간단한 api를 가짐
스케쥴링 => 데이터가 특정 간격으로 정확한 시간에 한 장소에서 다른 장소로 이동하는지 여부를 확인함
=> 이런 작업이 적시에 실행되고 올바른 순서로 진행되는지를 확인한다.
위 업무를 진행하기 위해
데이터 베이스 : MySql, PostgreSQl
데이터 처리 : Spark, Hive
스케쥴링 : Apache Airflow,Oozie, Cron
등의 도구를 사용한다
데이터 엔지니어들은 클라우드 컴퓨팅을 정말 많이 사용한다
예전에는 데이터 처리에 의존했던 회사가 자체 데이터센터(클러스터 등)를 소유했었음
비용 처리 등도 다 자회사에서 했었음
리소스 낭비 => 클라우드 서비스가 매력적이게 된 계기
따라서, 비용 최적화 때문에 많은 기업들이 클라우드 서비스를 이용하게 된다.
또한, 데이터 베이스의 안정성(물리적으로 위협을 받을 만한 상황이 줄어듦) 역시 클라우드의 가장 매력적인 요소 중 하나이다.
클라우드 서비스를 공급하는 회사는 크게
AWS / Azure / Google Cloud
이들이 제공하는 서비스 => Storage, Computation, Database
[1] Storage => 모든 유형의 파일을 클라우드에 업로드 할 수 있음, 일반적으로 저렴함
AWS S3 / Azure Blob Storage / Google Cloud Storage
[2] Computation => 클라우드에서 Computation 실행 가능, 일반적으로 가상 머신을 시작하고 원하는 대로 이용 가능
웹서버를 호스팅 하는 등에 사용됨
AWS EC2 / Azure Virtual Machines / Google Compute Engine
[3] Database Hosting
AWS RDS / Azure SQL Database / Google Cloud SQL
데이터 엔지니어 = 데이터베이스가 목숨
정보 저장에 데이터 베이스 사용
데이터 베이스
데이터베이스 vs 파일 시스템
구조화된 데이터 vs 구조화되지 않은 데이터
데이터 베이스 스키마
관계형 데이터베이스의 테이블
SQL vs NoSQL
table => 데이터 형성
Database Schema => 테이블 간의 관계 정의
관계형 데이터베이스
비관계형 데이터베이스
구조화 or 비구조화
스키마 : 데이터베이스의 구조와 관계를 설명함
최신 데이터 처리 도구의 기초를 형성함
메모리 문제 때문에 빅데이터에서 중요 개념으로 부상함
빅데이터 처리 시 데이터를 여러개의 작은 하위 작업으로 분할함
=> 처리 도구는 해당 하위 작업들을 여러 컴퓨터에 배포함
=> 모든 컴퓨터가 더 작은 하위 작업에서 병렬로 작동하기 때문에 전체 작업이 더 빠르게 수행된다.
장점
추가 처리 능력
한 컴퓨터의 메모리에 모든 데이터를 로드할 필요 없이 데이터를 분할하고 하위 집합을 다른 컴퓨터의 메모리에 로드할 수 있음
=> 컴퓨터 당 메모리 사용량이 상대적으로 적음
=> 데이터는 RAM에 들어갈 수 있음
단점
MapReduce / HDFS
=> 작업을 하위 작업으로 나누고 여러 처리 장치간에 워크로드와 데이터를 분배함.
=> 처리장치는 클러스터의 여러 컴퓨터
그러나 MapReduce는 결함(작업 작성하는 난이도가 너무 어려움) 존재
=> 극복하기 위해 Hive 등장
Spark
=> 클러스터 간에 데이터 처리 작업을 배포함
메모리에서 가능한 많은 처리를 유지하려고 함
MapReduce 한계에 대한 해답
스파크는 RDD 에의존한다
RDD(Resilient distributed datasets)
=> 탄력적인 분산 데이터 세트, 여러 노드간에 분산된 데이터를 유지한다
RDD에는 DataFrame과는 다르게 명명된 열이 없음
RDD는 개념적으로 튜플 목록에 가까움
Hive : SQL 추상화를 사용
Spark : DataFrame 추상화를 사용
위 작업을 통합하는 것이 워크 플로 스케쥴링 프레임 워크
DAG(Directed Acyclic Graph)
주로
Linux(cron, 선호되지는 않음)
Spotify(Luigi)
Apache Airflow