Data Engineering

"아파치 카프카 애플리케이션 프로그래밍 with 자바"교재의 학습 내용을 정리하였습니다    우선 토픽이란?  토픽은 카프카에서 데이터를 구분하기 위해 사용하는 단위임! => 토픽은 1개 이상의 파티션을 소유하고 있음 (파티션에는 프로듀서가 보낸 데이터들이 들어가 저장되는데 이 데이터를 '레코드' 라고 부름) 레코드에 대해 자세히 알아보고 가자 레코드는 타임스탬프, 메시지 키,  메시지 값, 오프셋, 헤더로 구성되어 있음 프로듀서가 생성한 레코드가 브로커로 전송되면 오프셋과 타임스탬프가 지정되어 저장됨 => 브로커에 한번 적재된 레코드는 수정할 수 없고 로그 리텐션 기간 또는 용량에 따라서만 삭제됨 로그 리텐션이란 카프카 브로커에 저장된 메시지(레코드)를 얼마나 오래 보관할지를 결정하는 정책임=> 카프카..
"아파치 카프카 애플리케이션 프로그래밍 with 자바" 교재의 학습 내용을 정리하였습니다  우선 시작하기에 앞서 카프카란? 카프카는 파이프라인, 스트리밍 분석, 데이터 통합 및 미션 크리티컬 애플리케이션을 위해 설계된 고성능 분산 이벤트 스트리밍 플랫폼임 => Pub-Sub 모델의 메시지 큐 형태로 동작하며 분산환경에 특화되어 있음 카프카 브로커 · 클러스터 · 주키퍼 카프카 브로커는 카프카 클라이언트와 데이터를 주고받기 위해 사용하는 주체이자, 데이터를 분산 저장하여 장애가 발생하더라도 안전하게 사용할 수 있도록 도와주는 애플리케이션이다! => 하나의 서버에는 한 개의 카프카 브로커 프로세스가 실행됨 (카프카 브로커 서버 1대로도 기본 기능이 실행되지만 데이터를 안전하게 보관하고 처리하기 위해 3대 이..
💡대규모 분산 처리의 프레임워크💡 ✔️구조화 데이터와 비구조화 데이터 SQL로 데이터를 집계하는 경우, 먼저 테이블의 칼럼 명과 데이터형, 테이블 간의 관계 등을 스키마로 정함 => 스키마가 명확하게 정의된 데이터를 구조화된 데이터라고 한다! (기존의 데이터 웨어하우스에서는 항상 구조화된 데이터로 축적하는 것이 일반적이었음)  스키마가 없는 데이터를 비구조화 데이터라고 함! (자연 언어로 작성된 텍스트 데이터와 이미지, 동영상 등의 미디어 데이터가 포함됨) => 이 상태로는 SQL로 제대로 집계 X 비구조화 데이터를 분산 스토리지 등에 저장하고 그것을 분산 시스템에서 처리하는 것이 데이터 레이크의 개념임=> 데이터를 가공하는 과정에서 스키마를 정의하고, 구조화된 데이터로 변환함으로써 다른 데이터와 마..
💡크로스 집계의 기본💡 ✔️ 트랜잭션 테이블, 크로스 테이블, 피벗 테이블  행과 열이 교차하는 부분에 숫자 데이터가 들어가기 때문에 이를 크로스 테이블이라고 부름 => 사람이 보기에는 편한 보고서이지만, 데이터베이스에서는 다루기 어려운 데이터 형식임(DB에서 행을 추가하는 것은 간단하지만, 열을 늘리는 것은 간단하지 X)   따라서, 보고서의 바탕이 되는 데이터는 행 방향으로만 증가하게 하는게 좋은데 이것을 트랜잭션 테이블이라고 함 트랜잭션 테이블에서 크로스 테이블로 변환하는 과정을 크로스 집계라고 함소량의 데이터를 크로스 집계하는데 편리한 것이 스프레드시트의 피벗 테이블 기능임  피벗 테이블에서는 행과 열이 교차하는 부분의 값은 자동으로 집계됨 결과를 크로스 테이블에 정리할 뿐만 아니라 그래프로 ..
💡빅데이터의 정착💡 ✔️분산 시스템에 의한 데이터 처리의 고속화  클라우드 서비스의 보급으로 기술적인 제약이 적어져 누구라도 마음만 먹으면 데이터를 분석할 수 있는 시대가 되었다 => 이제 대량의 데이터를 활용하여 새로운 가치를 창출하거나 의사 결정을 위해 이용하는 일이 보편화됨 "빅데이터"라는 단어를 자주 접하게 된 것은 2011~2012 기업들이 데이터 처리에 분산 시스템을 도입했을 무렵=> 빅데이터라는 단어가 여기저기서 사용되어 데이터를 비즈니스에 활용하자는 움직임이 활발해짐  빅데이터의 취급이 어려운 이유는 크게 2가지이다! 1. 데이터의 분석 방법을 모른다는 점=> 데이터가 있어도 그 가치를 창조하지 못한다면 의미 X 2. 데이터 처리에 수고와 시간이 걸린다는 점 => 지식이 있어도 시간을 ..
Amazon Redshift 웨어하우스를 대상으로 구성 저번 포스팅들을 통해 원하는 소스 시스템에서 데이터를 추출했는데 이제 Redshift 데이터 웨어하우스에 데이터를 로드하여 데이터 수집을 완료할 차례이다! => 로드 방법은 데이터 추출 산출물이 어떤 모습인지에 따라 다름 데이터 웨어하우스로 Amazon Redshift를 사용하는 경우 데이터를 추출한 후 로드하기 위해 S3와 통합하는 것은 매우 간단한다 우선 S3에서 읽기와 관련된 권한을 Redshift 클러스터에 직접 할당할 IAM 역할을 생성해야 하는데 IAM의 탐색 메뉴에서 역할을 선택하고 [역할 만들기]를 클릭한 후 선택할 AWS 서비스 목록에서 Redshift를 찾아 선택하고 [사용 사례 선택] 에서 'Redshift - Customizab..
MongoDB에서 데이터 추출 이번 예제에서는 집합(collection)에서 MongoDB 문서(document)의 하위 집합을 추출하는 방법을 다루고 있습니다! => 이 예제에서 MongoDB 집합에서 문서는 웹 서버와 같은 일부 시스템에서 기록된 이벤트를 나타냄 (env) pip install pymongo => MongoDB 데이터베이스에 연결하려면 먼저 PyMongo 라이브러리를 설치해야 한다 그 후 MongoDB의 Atlas에서 무료 MongoDB 클러스터를 생성하고, 데이터베이스를 생성한다! (env) pip install dnspython => MongoDB Atlas에서 호스팅하는 클러스터에 연결할 때 pymongo를 사용하려면 dnspython이라는 파이썬 라이브러리를 하나 더 설치해야 ..
이번 포스팅과 다음 포스팅을 통해 공통 시스템에서부터 또는 공통 시스템으로데이터를 내보내고 수집하기 위한 코드 예제를 이용해 공부를 해보겠슴다..!파이썬 환경 설정 앞으로 나올 모든 코드 예제는 파이썬과 SQL로 작성되며 오늘날 데이터 엔지니어링 분야에서 흔히 사용되는 오픈 소스 프레임워크를 사용한다 이번 실습에 사용된 라이브러리를 설치하기 전에 설치할 가상 환경을 만드는 것이 좋다 => 다양한 프로젝트 및 애플리케이션의 파이썬 라이브러리를 관리하는데 유용한 virtualenv 도구를 사용 (이를 통해 파이썬 라이브러리를 전역이 아닌 프로젝트에 맞는 범위 내에서 설치할 수 있음) $ python -m venv env 를 통해 env라는 가상 환경을 생성하고 window의 경우(제가 window 환경에서 ..
파이프라인은 각자 다른 목표와 제약 조건을 갖게 되는데 예를 들어 데이터의 실시간 처리여부, 매일 데이터가 업데이트될 수 있는지, 분석된 데이터를 최종적으로 어떻게 사용할지 등이다 이번에는 데이터 파이프라인의 다양한 사용 사례로 확장 가능한 성공적인 몇 가지 공통 패턴을 공부해보겠다!  ETL과 ELT  ETL과 ELT 모두 데이터 웨어하우징 및 비즈니스 인텔리전스에서 널리 사용되는 패턴이다 (둘다 데이터 웨어하우징에 뿌리를 두고 있음) 두 패턴 모두 데이터 웨어하우스에 데이터를 공급하고 분석가나 보고 도구가 이를 유용하게 쓸 수 있게 하는 데이터 처리에 대한 접근 방식이다!이 둘의 차이점은 마지막 두 단계(변환 및 로드)의 순서임  추출(extract) 단계는 로드 및 변환을 준비하기 위해 다양한 소스..
파이프라인을 구축하기 위한 제품과 설계를 결정하기 전에 최신 데이터 스택을 구성하는 요소를 이해할 필요가 있다! 선택 방법은 다양하지만 업계 표준이 되어 파이프라인 구현에 있어모범 사례의 발판을 마련한 핵심 요구 사항과 개념은 있다! ⬇️⬇️⬇️⬇️⬇️ 1. 데이터 소스의 다양성 2. 클라우드 데이터 웨어하우스와 데이터 레이크 3. 데이터 수집 도구 4. 모델링 도구 및 프레임워크 5. 워크플로 오케스트레이션 플랫폼   데이터 소스의 다양성 대부분 조직에는 수백 개는 아니더라도 수십 개의 데이터 소스가 있으며, 이를 통해 분석 작업을 수행할 수 있다 소스 시스템 소유권 분석 팀은 조직이 구축하고 소유한 소스 시스템과 타사 도구 및 공급업체에서 데이터를 수집 하는 것이 일반적이다 ex. 전자상거래 회사는 ..
데이터 파이프라인이란? 데이터 파이프라인은 다양한 소스에서 새로운 가치를 얻을 수 있는 대상으로 데이터를 옮기고 변환하는 일련의 과정이다. => 이는 분석, 리포팅, 머신러닝 능력의 기초가 됨  데이터 파이프라인의 복잡성은 원본 데이터의 크기와 상태, 구조 및 분석 프로젝트의 요구상항에 따라서도 달라짐 => 가장 단순한 형태의 파이프라인은 REST API처럼 단일 소스에서 데이터를 추출하고 데이터 웨어하우스의 SQL 테이블과 같은 대상으로 데이터를 로드하는 것임! 실제로 파이프라인은 일반적으로 데이터 추출, 데이터 가공, 데이터 유효성 검사를 포함한 여러 단계로 구성되며, 때로는 데이터를 최종 목적지로 전달하기 전에 머신러닝 모델을 학습하거나 실행하는 단계가 있기도 함  누가 파이프라인을 구축할까?  1..
JJunGyo
'Data Engineering' 카테고리의 글 목록