데이터엔지니어링
-
[2장] 아파치 스파크 시작데이터엔지니어링/Spark 2023. 7. 7. 01:59
아파치 스파크 다운로드 pip isntall pyspark 를 통해서 pyspark를 설치해준 상태에서 로컬로 실시했다. 파이스파크 셸 사용 pyspark, spark-shell, spark-sql, sparkR의 네 가지 인터프리터들이 포함되어 있어 일회성 데이터 분석이 가능하며, 파이썬, 스칼라, R, SQL이나 bash 같은 유닉스 셸을 써봤으면 대화형 셸들이 익숙할 것이다. 이 셸들은 클러스터에 연결하고 분산 데이터를 스파크 워커 노드의 메모리에 로드할 수 있도록 확장 되어왔다. 로컬 머신에서 사용하기 ㅇ스파크 연산들은 작업으로 표현되는데, 작업들은 태스크라는 저수준 RDD 바이트 코드로 변환되며 실행을 위해 스파크의 이그제큐터들에 분산된다. 이후 빠져나가기 위해서 Ctrl-D를 누르면 된다. 스..
-
[5장] 리소스 관리데이터엔지니어링/K8s on Cloud 2023. 7. 4. 00:47
리소스 이해하기 워크로드에 사용 가능한 클러스터 리소스를 최대한 활용하는 동시에 트래픽 폭증, 노드 장애, 잘못된 배포 상황에 대처할 수 있는 충분한 여유 공간을 확보할 수 있는 방법은 무엇이 있을까?? 쿠버네티스 스케줄러 관점에서 생각을 해보자. 여기서, 스케줄러는 주어진 파드를 어디에서 실행할지 결정하는 역할을 하는데, "파드를 실행할 수 있는 충분한 리소스를 가진 노드가 있는가?" -> 파드를 실행하는데 얼마나 리소스가 드는지 알아야 답을 할 수 있다. 리소스 단위 파드의 CPU 사용량은 CPU 단위로 표시되며, 쿠버네티스 CPU는 AWS의 vCPU, 구글 클라우드의 코어, AZURE의 vCore와 동일하다. 쿠버네티스 용어로 1CPU는 일반적인 CPU단위로 보면 된다. 대부분의 파드는 CPU 전체..
-
[1장] 아파치 스파크 소개데이터엔지니어링/Spark 2023. 6. 28. 03:46
아파치 스파크란!!?? 데이터 센터나 클라우드에서 대규모 분산 데이터 처리를 하기 위해 설계된 통합형 엔진! 스파크는 중간 연산을 위해 메모리 저장소를 지원하여 하둡 맵리듀스보다 훨씬 빠르게 동작할 수 있다. 스파크는 머신러닝(MLlib), 대화형 질의를 위한 SQL(스파크 SQL), 실시간 데이터 처리를 위한 스트리밍 처리(스파크 스트리밍), 그래프 처리(GraphX) 등을 위해 쉽게 사용 가능한 API들로 이루어진 라이브러리를 갖고 있다. 스파크의 네 가지 핵심 특성 - 속도 - 스파크는 질의 연산을 방향성 비순환 그래프(DAG)로 구성되며, 이 DAG의 스케줄러와 질의 최적화 모듈은 효율적인 연산 그래프를 만들어서 각각의 태스크로 분해하여 클러스터의 워커 노드 위에서 병렬 수행될 수 있도록 해 준다..
-
[4장] 쿠버네티스 오브젝트 다루기데이터엔지니어링/K8s on Cloud 2023. 6. 20. 23:51
디플로이먼트 만약 컨테이너가 종료가 된다면, 터미널에 접속하여 docker container run 명령어로 컨테이너를 다시 시작해줘야하는 불편함이 있다. 이런 방식은 불편하며, 지속적으로 컨테이너가 실행 중인지 혹은 정지되었다면 다시 실행해야하는지 관리하는 관리프로그램이 필요하다. 전통적으로 systemd, runit, supervisord 같은 도구를 사용하고, 쿠버네티스의 경우 디플로이먼트라는 관리자 기능을 제공한다. 관리와 스케줄링 쿠버네티스는 각 프로그램을 관리하기 위해 디플로이먼트 오브젝트를 생성하는데, 디플로이먼트 오브젝트에는 해당 프로그램에 대한 정보가 기록된다. 쿠버네티스의 오브젝티브인 컨트롤러는 디플로이먼트 리소스를 관리하며, 컨트롤러는 리소스가 존재하고 작동하는지 확인한다. 컨트롤러는..
-
[3장] 쿠버네티스 구축하기데이터엔지니어링/K8s on Cloud 2023. 6. 6. 15:37
클러스터 아키텍처 쿠버네티스는 여러 대의 서버가 하나의 클러스터로 연결되어 있다. 다음은 쿠버네티스의 아키텍처다. 컨트롤 플레인 컨트롤 플레인은 클러스터의 두뇌 역할을 하며 컨테이너 스케줄링, 서비스 관리, API 요청 처리등의 작업 처리를 한다. 컨트롤 플레인은 다음과 같은 컴포넌트로 구성이 된다. -컨트롤 플레인 컴포넌트- kube-apiserver 컨트롤 플레인의 프론트엔트 서버로 API 요청을 처리한다. etcd 어떤 노드가 존재하고 클러스터에 어떤 리소스가 존재하는지와 같은 쿠버네티스와 관련된 모든 정보를 저장하는 데이터 베이스다. kube-scheduler 새로 생성된 파드(pod)를 실행할 노드를 결정한다. kube-controller-manager 디플로이먼트와 같은 리소스 컨트롤러를 관리..
-
[2장] 쿠버네티스 첫걸음데이터엔지니어링/K8s on Cloud 2023. 6. 5. 12:30
Cloud Native DevOps with Kubernetes의 책을 읽고 실습을 따라한 과정 도커 데스크톱을 활용해서 간단한 데모 애플리케이션을 빌드하고 로컬에서 실행한 뒤 이미지를 컨테이너 레지스트리에 푸시하기 도커는 쿠버네티스와 관련된 여러 기능을 제공한다. 컨테이너 이미지 포맷, 컨테이너의 수명 주기를 관리하는 컨테이너 런타임 라이브러리, 컨테이너의 패키징 및 실행에 사용하는 명령줄 도구, 컨테이너 관리용 API가 있다. 도커가 중요하긴 하나 쿠버네티스가 사용하는 많은 컴포넌트 중에 하나다. docker container run -p 9999:8888 --name hello cloudnatived/demo:hello 명령어를 이용하여 파일을 다운로드하고 localhost:9999에 띄운걸 확인할..
-
GCP VM으로 Airflow 구축하기데이터엔지니어링/Airflow 2023. 6. 4. 23:27
이전에는 로컬에서의 Airflow를 구축했으니, 이번에는 구글 클라우드 플랫폼의 VM(가상머신)을 이용한 Airflow를 구축(?)하는 시간이다. 구글 클라욷 플랫폼에서 새로운 프로젝트를 만들어준다. Airflow를 작동시킬 메인 VM을 만들어준다.(vCPU : 2개, RAM : 8GB를 main node로) Compute engine의 VM 인스턴스에서 인스턴스 만들기를 눌러 만들어준다. (worker node는 vCPU : 2개, RAM : 4GB로 만들어준다) (리전과 영역은 만약 기존에 쓰는 다른 서비스가 있다면, 맞춰주는게 좋은것 같다) 우분투가 편해서 우분투로 설정하고, 방화벽에서 HTTP/HTTPS의 트래픽 허용을 체크한다. 이렇게 만들어주면 main-node VM 생성.. 인스턴스 생성이 ..
-
Airflow(celeryexecutor - docker-compose)데이터엔지니어링/Airflow 2023. 5. 13. 22:56
이번엔 Docker를 이용한 Celeryexecutor 배포를 구현 아나콘다를 이용했다. 우선, 도커를 설치해야한다. sudo apt-get update 위와 같은 명령어를 입력해 업그레이드 시키기 sudo apt-get docker 위 명령어를 이용해 도커를 설치해준다. sudo apt-get install \ ca-certificates \ curl \ gnupg 레포지토리 접근에 필요한 패키지들을 설치해준다. sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+..