목표 앞으로 데이터 엔지니어가 되기 위해서 개인 프로젝트를 하나씩 진행해보려 한다! 다양한 주제로 프로젝트를 해볼 계획이고, 해당 내용을 진행 순서에 맞춰 하나씩 연재(?)해보려 한다. 물론 나도 엄청나게 부족하고 프로젝트를 진행하면서 엄청난 삽질을 하겠지만 그러한 과정들을 공유하면서 나처럼 데이터 엔지니어가 되려는 많은 분들께 조금이나마 도움이 되보려고 한다. 👍👍👍 대망의 첫번째 프로젝트는 알라딘 api를 이용하여 중고책 매물 현황을 시각화하려고 한다. 굉장히 단순한 구조의 프로젝트이지만 전체적인 데이터 파이프라인을 구축하고, 그 속에서 발생하는 여러 문제들을 해결하면서 데이터 엔지니어링 프로젝트에 첫 발걸음을 내딛어보려고 한다. 아키텍처 우선 내가 그려본 대략적인 아키텍처는 위와 같다. 새로 올라온..
어떻게 알게되었나 쿠버네티스를 배우면서 Vagrant(이하 베이그런트)를 통해 쿠버네티스 환경을 설정하였다. 베이그런트가 가상머신에 쿠버네티스 환경을 자동으로 한 번에 설치해주는 것까지는 알겠는데, 정확히 어떤 용도로 쓰이는 툴이며 무슨 역할을 담당하는지 호기심이 생겼다. 이번 포스팅에서는 베이그런트란 무엇인지, 구체적으로 어떤 용도로 쓰이는 지를 알아보려고 한다. Vagrant란 Vagrant는 단일 워크플로우에서 가상 시스템 환경을 구축하고 관리하기 위한 도구입니다. 사용하기 쉬운 워크플로우와 자동화에 중점을 둔 Vagrant는 개발 환경 셋업 시간을 단축하고 프로덕션 패리티를 높이며 "내 시스템에서 작업"을 과거의 것으로 간주합니다. 베이그런트 공식 홈페이지에서 베이그런트에 대한 설명은 위와 같다...
Chapter 1. 빅데이터 기초 지식 Hadoop: 대량의 데이터를 처리하기 위한 시스템 NoSQL: 분산 처리에 뛰어난 데이터베이스 => 'NoSQL에 저장하고, Hadoop으로 분산 처리' 데이터 파이프라인 데이터 웨어하우스: 대량의 데이터를 장기 보존하는데 최적화. -> ETL 데이터 마트: DW에서 필요한 데이터만 추출하여 시각화 도구와 조합. 데이터 레이크: DW처럼 가공하여 데이터를 저장하는 것이 아니라 원 데이터를 그대로 저장. Chapter2. 빅데이터의 탐색 크로스 테이블: 행 방향과 열 방향의 데이터가 교차. 트랜잭션 테이블: DB 형태의 테이블. 피벗 테이블: 소량의 데이터를 크로스 집계. MPP 데이터베이스: 빠른 데이터 접근을 위해 병렬 처리하는 데이터베이스. 아마존 Redshi..
개요 데이터 엔지니어 프로젝트를 진행하려고 여러 자료를 찾아보았는데, 많은 프로젝트에서 데이터 웨어하우스(이하 DW)를 구성하고 있었다. 그런데 예전부터 말만 들었지 정작 나도 DW를 구성하려고 하니 정확한 정의를 떠올릴 수가 없었다. 그래서 이참에 데이터 웨어하우스에 대한 정의를 명확히 하는 것이 좋겠다 싶어 정리를 해보려 한다. 참고로 해당 내용은 여러 프로젝트를 보다가 든 궁금증과 의문점들을 찾아 정리한 것이므로 순전히 나의 궁금증을 따라가며 정리되었음을 알린다 데이터 웨어하우스란 데이터 웨어하우스를 한 줄로 정의하면 다음과 같다. 데이터 웨어하우스는 조직 전체의 여러 소스로부터 데이터를 저장하고 처리하여 중요한 비즈니스 분석, 보고서 및 대시보드에 사용할 수 있는 의사결정 지원 시스템 해당 정의에..
우분투를 도커에서 실행할 때 착각할 수 있는 부분을 잘 정리해놓은 글인 것 같다! https://www.popit.kr/%EA%B0%9C%EB%B0%9C%EC%9E%90%EA%B0%80-%EC%B2%98%EC%9D%8C-docker-%EC%A0%91%ED%95%A0%EB%95%8C-%EC%98%A4%EB%8A%94-%EB%A9%98%EB%B6%95-%EB%AA%87%EA%B0%80%EC%A7%80/
부스트캠프 회고록을 노션에다 쓰고 주마다 블로그로 옮기려고 하였는데 옮기는 과정이 생각보다 수월하지가 않아 포기했다 ㅠㅠ 1, 2일차 내용까지는 어찌저지 옮겼는데 이미지 파일이 많은 3일차부터는 이미지가 안 옮겨지고 심지어는 리스트 형식의 정리글이 깨지기 시작해서 도저히 안되겠다 싶어 포기하려 한다. 일일이 신경쓰면 할 수는 있지만 그렇게 까지 중요한 작업도 아닌거 같고 지금 노션도 충분히 좋은 거 같아 우선은 포기하려 한다. 이를 해결하는 과정중에 Notion2Tistory라는 앱을 발견하기도 하였는데 나한테는 잘 먹히지가 않았다. 노션이 블럭제한이 있다는 얘기를 들은 것 같아 임시로 노션을 사용하고 이를 블로그로 옮기는 과정을 반복하려 하였는데, 찾아보니 블럭제한이 또 사라졌다고...? (왠지 생각보..
Drill 스키마가 정해지지 않은 데이터에 대해 SQL 쿼리를 실행할 수 있다. HDFS, MongoDB, S3, Azure, GCP, JSON 등 다양한 파일 시스템의 상위에 위치할 수 있다. JDBC 드라이버를 통해 시각화 도구나 관계형 DB에 연결할 수 있다. 처리속도가 빠르지만 시스템에 설계되지 않은 상황에서는 효율적이지 않다. 다른 DB 테이블을 조인할 수 있다. Drill 쿼리 평점 데이터 Hive로 CREATE DATEBASE movielens; u.data 업로드 스파크를 통해 몽고디비에 데이터 적재 spark-submit --packages arg.mongodb.spark:mongo-spark-connenctor_2.11:2.0.0 MongoSpark.py Drill 설치 wget tar..
NoSQL 작은 데이터는 RDB로 충분하지만 큰 데이터라면 한계가 생긴다. 대용량 데이터를 아주 빠르게 처리한다. 데이터를 신속하게 분산 처리하면서 변형도 쉽다. RDB 스케일링 업(수직적 확장) 비정규화 Caching layer 마스터/슬레이브 → 어떤 건 write, 어떤 건 read만 Sharding → 서버가 자주 터질걸? API를 통해 원하는 정보만 필요하다. → key, value HBase HDFS 위에 구축되고, 대용량 데이터를 HDFS에 저장하면 이를 활용해 데이터를 대규모로 외부로 내보낼 수 있다. 컬럼 기반 데이터베이스 구글 빅테이블을 기반으로 하고 있다. 쿼리가 아니라 API → CRUD 수 많은 클러스터 전체에 데이터를 자동으로 분배한다. 마스트 노드가 실제 데이터의 스키마를 관리..
Hive 전체 클러스터에 저장된 데이터를 표준 SQL을 통해 맵리듀스로 변환하여 사용할 수 있다. HiveQL SQL과 아주 비슷하지만 Hive에 최적화 스키마 온 리드 비구조화 된 데이터를 가져와 스키마 확인을 데이터를 읽는 시점에 한다. 데이터 위치 LOAD DATA, Managed 하이브 소유 데이터 LOAD DATA LOCAL, External tables 테이블을 사용은 하지만 소유하지는 않음 사용법 CLI Ambari JDBC, ODBC 워크플로 MySQL과 하둡 통합 Sqoop SQL + Hadoop RDB 데이터를 HDFS, Hive 등으로 임포트 하거나, 반대로 RDB로 익스포트할 수 있다. 증분 임포트가 가능 Import sqoop import —connect jdbc:mysql://l..
스파크 개념 대용량 데이터 처리에서 훨씬 빠른 성능을 내는 엔진 확장성 드라이버(SparkContext): 통제 → 네임 노드 클러스터 매니져 Executors: 데이터 노드 Cache Tasks 속도 맵리듀스보다 적어도 100배는 빠른 속도를 가지고 있다. DAG 엔진으로 최적화를 할 수 있다. 유행 AWS, Ebay 등 많은 기업이 스파크를 사용하고 있다. 쉬움 파이썬, 자바, 스칼라로 프로그래밍할 수 있다. RDD 스파크 구성 Spark Streaming Spark SQL SQL로 쿼리를 만들고 변환할 수 있다. MLLib 스파크로 머신러닝 GraphX 소셜 그래프를 통해 분석 RDD(Resilient Distributed Dataset) 탄력적 분산 데이터셋 클러스터 전체에 걸쳐 작업이 고르게 분..