본문 바로가기

분류 전체보기

(44)
[9주차] Docker & K8s (3) 🙂 Docker 명령 정리✔ Imagedocker build --platform=linux/amd64 -t [레포이름]docker imagesdocker image lsdocker rmidocker image rm✔ Docker Hubdocker login -u [사용자ID] -p [사용자PW]docker pull [레포이름]docker push [레포이름]✔ Containerdocker createdocker run --name -p [외부포트]:[내부포트] -v [이미지이름]docker ps (-a / -q)docker stop [컨테이너이름/ID]docker start [컨테이너이름/ID]docker restart [컨테이너이름/ID]docker kill [컨테이너이름/ID]docker pause..
[9주차] Docker & K8s (2) 🙂 Hangman 프로그램hangman 프로그램을 flask를 사용하여 웹으로 노출포트번호는 어디는 바인딩 가능하며 실행할 때 지정flask 관련 모듈 설치 필요실행 방법python3 -m flask run --host=0.0.0.0 --port=4000app.py 기본사용✔ Repo 구성app.py: flask의 메인 함수가 있고 커맨드라인으로 받은 포트에 바인드하고 요청 대기requirements.txt: pip3 install requirements.txt ( pip3 freeze > requirements.txt )test.py: app.py에 있는 코드의 유닛 테스트 로직. CI/CD 구성 시 실행되게 설정할 예정README.md🍦 프로그램 실행 데모git clone ~pip3 install..
[9주차] Docker & K8s (1) 🙂 Airflow 운영상의 어려움✔ 관리해야하는 DAG의 수가 100개를 넘어간다면?🍦 라이브러리 충돌DAG에 따라 실행에 필요한 라이브러리/모듈 상이이로 인해 DAG 혹은 Task 별로 별도의 독립공간 확보Docker to the rescueDag 혹은 Task 코드를 Docker Image로 만들고 이를 Docker Container 안에서 실행🍦 Worker의 부족Scale UpScale Out - 클라우드 사용K8s와 같은 컨테이너 기술 사용🍦 낮은 Server Utilization 이슈Airflow 전용 HW를 지정했는데 서버가 항상 바쁜 게 아니라면?서비스별로 전용 서버를 할당하는 것은 여러가지로 이슈를 만듦K8s와 같은 컨테이너 기술의 도입으로 해결 가능🍦 해결책Task나 DAG 코..
[8주차] 데이터 파이프라인과 Airflow (4) 🙂 Primary Key Uniqueness테이블에서 하나의 레코드를 유일하게 지칭할 수 있는 필드하나의 필드가 일반적이지만 다수의 필드를 사용할 수도 있음CREATE TABLE 사용시 지정관계형 DBMS가 PK의 값이 중복 존재하는 것을 방지 ✔ 빅데이터 기반 DW는 PK보장 X데이터 인력을 통해 보장보장하는 데 메모리와 시간이 더 들기 때문에 대용량 데이터 적재가 걸림돌🍦 PK 유지 방법 1임시 테이블을 만들고 현재 모든 레코드를 복사임시 테이블에 새로 데이터소스에서 읽어들인 레코드를 복사중복을 걸러주는 SQL 작성최신 레코드를 우선 순위로 선택ROW_NUMBER를 이용해서 PK로 파티션을 잡고 ts 필드르 order desc를 수행해 PK별로 레코드를 선택위의 SQL을 바탕으로 최종 원본 테이블..
[8주차] 데이터 파이프라인과 Airflow (3) 🙂 Hello World 예제✔ Operators - PythonOperatorfrom airflow.operators.python import PythonOperatorload_nps = PythonOperator( dag=dag, task_id="task_id", python_callable=python_func, params={ 'table': 'delighted_nps', 'schema': 'raw_data' },)def python_func(**cxt): table = cxt['params']['table'] schema = cxt['params']['schema'] ex_date = cxt['execution_date..
[8주차] 데이터 파이프라인과 Airflow (2) 🙂 트랜잭션✔ 트랜잭션이란?Atomic하게 실행되어야 하는 SQL을 묶어서 하나의 작업처럼 처리하는 방법BEGIN과 END 혹은 BEGIN과 COMMIT 사이에 해당 SQL을 사용ROLLBACK은 BEGIN 이전의 상태로 돌아가는 SQL 명령🙂 리눅스ubuntu: 리눅스 타입 중 하나ssh: 리눅스 혹은 유닉스 서버에 로그인하는 프로그램 (터미널)sudo: 보통 슈퍼유저로서 프로그램을 구동할 수 있도록 하는 프로그램apt-get: 우분투/데비안 계열의 리눅스에서 프로그램 설치/삭제를 관리해주는 프로그램su: substitute user의 약자로 현재 사용 중인 사용자 계정을 로그아웃하지 않고 다른 사용자의 권한을 얻을 때 사용vi: 텍스트 에디터 🙂 Docker 기반 Airflow 실행터미널 프로그..
[8주차] 데이터 파이프라인과 Airflow (1) 🙂 데이터 파이프라인✔ 데이터 파이프라인이란?ETL: Extract, Transform and LoadData Pipleline, ETL, Data Workflow, DAGETL (Extract, Transform and Load)DAG (Directed Acyclic Graph) in AirflowETL vs ELTETL: 데이터를 데이터 웨어하우스 외부에서 내부로 가져오는 프로세스데이터 엔지니어 업무ELT: DW 내부 데이터를 조작해서 새로운 데이터를 만드는 프로세스데이터 분석가 업무DBT가 가장 유명Data Lake vs. Data WarehouseData Lake구조화 데이터 + 비구조화 데이터보존 기한이 없는 모든 데이터를 원래 형태대로 보존하는 스토리지DW보다 몇 배는 더 큼Data Ware..
[7주차] 데이터 웨어하우스 관리와 고급 SQL과 BI 대시보드 (5) 🙂 시각화 툴✔ Looker2012년 산타크루즈에서 시작2019년 6월에 구글이 인수LookML이 자체언어로 데이터 모델을 만드는 것으로 시작내부 고객 뿐 아니라 외부 고객을 위한 대시보드 작성 가능고가의 라이선스 정책✔ Tableau2002년 마운틴 뷰에서 시작세일즈포스가 2019년 6월에 인수다양한 제품군 보유. 일부 사용 무료강력한 대시보드 작성 가능✔ ReDash오픈소스로 시작2020년에 Databrick이 인수Superset보다 강력한 쿼리 에디터를 제공하지만 권한 관련 기능 부족✔ SupersetAirbnb에서 시작된 오픈소스다양한 형태의 visualization과 쉬운 인터페이스 지원대시보드 공유 지원엔터프라이즈 수준의 보안과 권한 제어 기능 제공SQLAlchemy와 연동Druid.io와 ..