1. Scala 소개2003년 스위스 로잔공대의 Martin Odersky가 개발한 강력한 타입(Storngly typed) 방식의 확장 가능한(Scalable) 프로그래밍 언어(Language)객체 지향형과 함수형 프로그래밍을 모두 지원스칼라 코드는 자바 바이트코드로 변환될 수 있음(JVM이 읽을 수 있는 자바가 컴파일된 결과인 .class 파일이 있으면 scala도 읽을 수 있음, 100% 호환은 아님)Scala는 대규모 데이터 분산 컴퓨팅 분야에 많이 사용됨 (데이터 엔지니어에게는 유요한 기술)대규모 데이터에 주로 쓰이는 만큼 대중적이고 인기가 많은 언어는 아님 2. 변수, 상수var변수 선언 (같은 타입에 한해 변경 가능)val상수 선언 (초기값 변경 불가) 변수와 상수의 이름 규칙 (Naming..
1. Spark 설치 전 참고사항Spark학습을 목적으로 한다면 로컬환경으로 구성하는 것이 좋습니다. 이유는 다음과 같습니다.로컬 설치 이유비용 없음: 로컬 머신만 있으면 별도의 클라우드 비용 없이 실습 가능구성 이해에 도움: Spark를 직접 설치하고 설정해보는 과정에서 아키텍처 이해에 큰 도움간단한 테스트에 적합: 소규모 데이터(수MB~수백MB) 기준으로 대부분의 Spark API를 충분히 학습 가능오프라인 환경에서도 실습 가능구성 방법Spark Standalone 모드로 설치Jupyter + PySpark 조합으로 실습 환경 구성 가능로컬 클러스터(Spark Local[n]) 방식으로 멀티스레드 테스트도 가능다른 구성 방법 (참고)Docker 또는 로컬 클러스터 구성Spark Master + Wor..
Spark를 사용하기 앞서 RDD라는 기본적인 데이터 구조에 대해 확실히 이해하는것이 중요합니다. 지난 포스팅에서는 RDD의 개념을 간단하게 알아보았다면 이번에는 RDD가 개발 배경과 특징에 대해 자세히 알아보겠습니다. 1. RDD란?중요한만큼 다시한번 RDD에 대해 알아봅시다.RDDRDD는 immutable한 분산된 object들의 collection이다.RDD의 각 데이터셋은 logical patition으로 나눠져있어 클러스터 내의 물리적으로 다른 컴퓨팅노드에서 처리될 수 있다.read-only의 파티션된 record의 집합이다.storage나 다른 RDD로 부터 deterministic operation(결정론적인 동작, Spark의 API)을 통해서 만들어질 수 있다.병렬로 실행될 수 있는 Fa..
RDD - 탄력적인 분산 데이터셋이란?스파크의 데이터 구조는 크게 3종류가 있습니다. - RDD (Resilient Distributed Dataset) - Dataframe - Dataset RDD는 그 중 가장 처음으로 도입된 데이터 구조로 Spark 1.0부터 도입된 가장 기초적인 데이터 구조입니다. (현재 Spark 3.0) 이름을 풀어보면 이렇게 해석이 가능하겠습니다.Resilient(탄력적인, 회복력 있는, 변하지 않는) : 메모리 내부에서 데이터가 손실 시 유실된 파티션을 재연산해 복구할 수 있음Distributed(분산된) : 스파크 클러스터를 통하여, 메모리에 분산되어 저장됨Data : 파일, 정보 등 RDD 특징 5가지1. 데이터 추상화데이터는 클러스터에 흩어져있지만 하나의 파일인것 ..
데이터 엔지니어링은 단순한 데이터 이동 이상의 일을 요구합니다. 원시 데이터를 수집하고, 이를 유용한 정보로 가공하며, 이 모든 과정을 자동화된 파이프라인으로 구축해야 합니다. 이번 글에서는 AWS를 기반으로 데이터 파이프라인 구성하는 방법, SQL 및 프로그래밍 개념을 활용해 데이터를 변환하며, 성능을 최적화하고 인프라를 자동화하는 방법을 소개합니다. 1. 데이터 파이프라인과 ETL 프로세스 이해 이전 포스팅에서는 데이터 소스의 이해부터 수집, 변환, 저장, 그리고 오케스트레이션에 이르는 ETL (Extract, Transform, Load) 과정을 살펴보았습니다. AWS에서는 이를 운영화 및 자동화하기 위한 다양한 도구를 제공합니다.AWS Glue: 서버리스 ETL 서비스로, Spark 기반 작업..
이번 포스팅에서는 On-premis 환경에서 HA(고가용성) DB 환경에 대해 알아보고 직접 구축해보며 느꼈던 간단한 후기를 남겨보려고 합니다. 요즘엔 클라우드 환경에서 간편한 설정으로 HA DB 환경을 구축할 수 있지만 기업에서 실제 운영되는 DB가 아닌 이상 클라우드 환경을 사용 시 가장 걱정되는 것이 금액문제입니다. 그래서 금액 걱정없이 간단한 토이 프로젝트나 팀 단위 프로젝트에서 구성해 볼만한 on premise 고가용성 DB 환경을 구축하는 경험을 해보고자 했습니다. 1. 아키텍처 1.1 기본 구조기본적으로 3계층 아키텍쳐(3 Layer Architecture)를 따르며 위의 아키텍처는 Client-APP-Data layer중 Data Layer를 집중적으로 다루었습니다.VMware을 이용해 ..