데이터 엔지니어링

    [Kafka] kafka 아키텍처와 구성

    MOM(Meesage Oriented Middle ware) 아키텍처 카프카 아키텍처에 대해서 이야기하기 전에 먼저 MOM과 메시지 브로커(Pub/Sub 패턴)을 정리하겠습니다. 메시지 공급자를 이용하여 클라이언트(애플리케이션)들의 메시지를 중간에서 관리해줌 메시지를 보낸(송신) 클라이언트는 응답이 오지 않더라도 다른 작업을 계속 수행할 수 있음(비동기) 메시지 공급자는 수신 클라이언트가 메시지를 소비할 때까지 메시지를 보관 시스템의 개별 구성 요소나 연결이 실패하여도 중단 없이 안정적으로 작동할 수 있는 느슨한 연결을 함 여기서 중요한 것은 MOM은 이론, 개념, 어떤 설계적인 방향성을 제시하고 있고 직접적인 구현체는 아닙니다. 메시지 브로커(Pub/Sub 패턴) 메시지 브로커는 송신자(Publishe..

    [Kafka] Apache kafka 소개와 배경

    현재 업무상 데이터 인프라, 데이터 엔지니어링, 데이터 플랫폼을 운영하고 있습니다. 데이터 엔지니어라는 포지션이 꼭 데이터 엔지니어링만을 다루는 것이 아니라 해당 시스템을 뒷받침하는 인프라적인 요소를 잘 다루어야 한다는 것을 크게 체감하고 있습니다. 데이터 인프라적인 요소 또한 조금씩 포스팅하려고 합니다.. 위에서 이야기한 두가지 요소를 포함하는 것을 데이터 플랫폼이라고 규명하겠습니다. 현재 운영하는 데이터 플랫폼의 첫 시작인 카프카에 대해서 이야기하려고 합니다. Apache Kafka(아파치 카프카) 카프카는 카프카 공식문서를 통하면 더욱 자세하게 알 수 있습니다. 아파치 카프카란? 오픈소스로 확장성이 뛰어난 메시지 브로커 프로젝트입니다. 분산형 데이터 스트리밍 플랫폼이며 대용량의 실시간 데이터를 처리..

    [빅데이터를 지탱하는 기술] 빅데이터의 축적 # 2

    스트리밍 형의 데이터 전송 웹 브라우저, 모바일 앱, 센서 기기등 각종 디바이스에서는 데이터가 바로 생성이 되고 어디에도 저장이 되지 않는 데이터는 바로 전송을 하고 수집을 해야합니다. 이러한 데이터는 벌크 형 도구로 모으는 것은 불가능하기 때문에 스트리밍 형 데이터 전송이 필요합니다. 웹 브라우저나 모바일 앱은 메시지 배송의 통신 프로토콜로 HTTP(S)를 사용합니다. lot 같은 머신 데이터는 MQTT 등의 오버헤드가 작은 프로토콜이 사용되는 경우도 있습니다. 이러한 데이터 전송의 공통점은 다수의 클라이언트에서 작은 데이터들이 전송되는 것입니다. 이러한 데이터 전송 방식을 '메시지 배송(message delivery)'이라고 하며 메시지 배송 시스템은 통신을 위한 오버헤드가 커지기 때문에 이를 처리하..

    [빅데이터를 지탱하는 기술] 빅데이터의 축적 # 1

    객체 스토리지와 데이터 수집 빅데이터의 대부분은 확장성이 높은 '분산 스토리지(distributed storage)'에 저장됩니다. 일반적으로는 파일을 저장하기 위한 '객체 스토리지(object storage)'가 많이 이용됩니다. 대표적으로 Hadoop의 HDFS, Amazon S3가 있습니다. 객체 스토리지의 파일을 읽고 쓰는 과정은 네트워크를 통해서 일어납니다. 데이터는 여러 디스크에 복사되기 때문에 하나의 디스크가 고장이 나도 데이터가 손실되지 않는다는 장점을 가지고 있습니다. 또한 읽고 쓰는 작업을 여러 하드웨어에 분산하기 때문에 데이터의 양이 늘어나도 성능이 떨어지지 않도록 설계되어 있습니다. 하지만 객체 스토리지는 데이터의 양이 많을 때에는 효율적이지만 소량의 데이터인 경우에는 비효율적입니다..

    [빅데이터를 지탱하는 기술] 대규모 분산 처리의 프레임워크 # 5

    데이터 마트의 구축 팩트 테이블(Fact Table) 데이터 분석의 시작은 데이터를 구조화입니다. 많은 정보를 담고 있는 팩트 테이블은 데이터 분석의 많은 부분을 차지하고 있습니다. 팩트 테이블의 크기가 작다면 메모리에 올릴 수 있지만 빅데이터의 경우에는 팩트 테이블의 크기가 커서 열 지향 스토리지에서 데이터를 압축해야 빠른 집계를 할 수 있습니다. 새로운 데이터가 들어왔을 때 팩트 테이블은 추가(append), 치환(replace) 두 가지의 작성방법이 있습니다. 추가(append)는 새로 도착한 데이터만 기존의 데이터에 추가해주는 방식이고 치환(replace)은 과거의 데이터와 새로운 데이터를 포함하여 테이블 전체를 치환하는 방식입니다. 테이블 파티셔닝 효율면에서는 추가(append)가 유리합니다. ..

    [빅데이터를 지탱하는 기술] 대규모 분산 처리의 프레임워크 # 4

    쿼리엔진 데이터 마트 구축의 파이프라인 위의 예제는 Hive와 Presto를 사용한 간단한 데이터 파이프라인입니다. 우선 분산 스토리지에 저장된 CSV, 텍스트 데이터 등을 Hive를 통하여 구조화하고 열 지향 스토리지 형식으로 저장합니다. 이때 Hive에서 만든 테이블의 정보는 Hive 메타 스토어에 저장됩니다. SQL-on-Hadoop의 쿼리엔진에서도 공통의 테이블 정보를 참고합니다. 그리고 열 지향 스토리지에서 Presto의 쿼리를 이용하여 구조화된 데이터를 결합, 집계하는 과정을 거쳐 비정규화 테이블로 만들어 데이터 마트로 내보냅니다. Hive에 의한 구조화 데이터 작성 Hive를 비롯한 대부분의 SQL-on-Hadoop의 쿼리 엔진은 MPP 데이터베이스처럼 데이터를 내부로 가져오지 않아도 텍스트..