ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [빅데이터의 축적] 1. 벌크 형과 스트리밍 형의 데이터 수집
    책/빅데이터를 지탱하는 기술 2022. 4. 1. 00:51
    반응형

    이 글은 빅데이터를 지탱하는 기술을 읽고 정리한 글입니다.


    벌크 형과 스트리밍 형 데이터에 대한 기본적인 내용 - https://hello70825.tistory.com/412

     

     

     

    1. 객체 스토리지와 데이터 수집


    빅데이터는 대부분 확장성이 높은 분산 스토리지에 저장되는데, 이것은 대량으로 파일을 저장하기 위한 객체 스토리지이다.

    객체 스토리지에서의 파일 읽고 쓰기는 네트워크를 거쳐서 실행한다. 데이터는 항상 여러 디스크에 복사되어 데이터를 손실하지 않고, 데이터의 읽고 쓰기도 여러 하드웨어에 분산되어서 데이터의 양이 늘어나도 성능이 떨어지지 않는다. 하지만 객체 스토리지는 데이터양이 적을 때 비효율적이다.

     

    데이터 수집

    시계열 데이터는 수시로 객체 스토리지에 기록하면 대량의 작은 파일이 생성되어 시간이 지나면 성능이 저하시키는 요인이 된다. 그래서 적당히 모아서 하나의 큰 파일을 만드는 것이 좋다. 하지만 파일의 크기가 너무 크면 네트워크 전송에 시간이 걸려 오류 발생률이 높아지기 때문에 적당한 크기의 파일(1MB ~ 1GB)을 만들고, 나중에 처리하기 쉽도록 준비해 둘 필요가 있다. 이렇게 수집한 데이터를 가공하여 집계 효율이 좋은 분산 스토리지를 만드는 일련의 프로세스를 데이터 수집이라고 한다.


     

     

     

    2. 벌크 형의 데이터 전송


    전통적인 데이터 웨어하우스에서 사용된 것은 주로 벌크 형 방식으로 데이터베이스나 파일 서버, 웹 서비스에서 SQL이나 API로 정리해 데이터를 추출한다.

    데이터가 분산 스토리지에 저장되어 있는 것이 아니라면 데이터 전송을 위한 ETL 서버를 설치한다. ETL 서버에는 데이터 웨어하우스를 위한 여러 도구나 스크립트를 사용해 데이터를 전송한다.

    ETL 프로세스는 하루마다 또는 1시간 마다의 간격으로 정기적인 실행을 하므로 그동안 축적된 데이터는 하나로 모인다. 그래서 만약 데이터가 매우 크다면 작은 태스크로 분해해 보내야 하는데, 이때 워크플로 관리 도구를 사용하면 태스크 실행을 쉽게 관리할 수 있다.

     

    데이터 전송의 워크 플로

    스트리밍 형의 데이터는 계속되어 데이터가 전송해오기 때문에 나중에 재실행하기가 쉽지 않은데, 벌크 형은 여러 번 데이터 전송을 재실행할 수 있기 때문에 데이터 전송의 신뢰성을 중요시하면 벌크 형 도구를 사용하는 것이 좋다. 그리고 벌크 형 데이터 전송은 워크플로 관리 도구와의 궁합이 뛰어나기 때문에 둘을 조합하여 도입한다.


     

     

     

    3. 스트리밍 형의 데이터 전송


     

    다수의 클라이언트에서 계속해서 작은 데이터가 전송되는데, 이런 데이터를 저장하려면 벌크 형 도구로 모으는 것이 불가능하기 때문에 스트리밍 형의 데이터 전송이 필요하다. 작은 데이터가 계속되어 전송되는 방식을 메세지 배송이라고 하며, 메세지 배송 시스템은 전송되는 데이터 양에 비해 오버헤드가 커지기 때문에 높은 성능의 서버를 요구한다.

    이런 메세지는 작은 데이터 쓰기에 적합한 NoSQL 데이터베이스를 이용하는 것인데, Hive와 같은 쿼리 엔진으로 NoSQL 데이터베이스에 연결해 데이터를 읽을 수 있다. 또는 분산 스토리지에 직접 저장하는 것이 아니라 메시지 큐와 메시지 브로커 등의 중계 시스템에 전송할 수 있다. 이때 중계 시스템에 저장된 데이터는 일정 크기가 되면 모아서 분산 스토리지에 저장된다.

     

    웹 브라우저에서의 메시지 배송

    1. 웹 서버 안에 메시지를 만들어 배송

    - 전송 효율을 높이기 위해 데이터를 축적하여 나중에 모아서 보낸다.

    2. 자바스크립트를 사용하여 웹 브라우저에서 직접 메시지를 보내는 웹 이벤트 추적을 사용

    - HTML 페이지에서 태그를 삽입만 하면 되는 것이라 각종 서비스에서 사용중

    - 수집된 데이터는 분산 스토리지에 저장하여 다른 데이터와 조합한 분석도 가능

     

     

    모바일 앱으로부터의 메시지 배송

    모바일 앱은 HTTP 프로토콜을 사용하는 클라이언트중 하나이기 때문에 메시지 배송 방식은 웹 브라우저와 동일하다.

     

    1. MBaaS 경유의 메시지 배송

    - 백엔드 데이터 저장소에 저장한 데이터를 벌크 형 도구를 사용하여 꺼냄

    2. SDK에 의한 메시지 배송

    - 모바일 앱에 특화된 액세스 해석 서비스를 통해 이벤트 데이터를 수집

    - 모바일 앱은 오프라인이면 데이터를 SDK 내부에 축적하고, 온라인 상태가 되면 전송하는 형식으로 만들어져 있음

    - SDK는 데이터가 중복될 가능성이 높기 때문에 중복 제거의 구조가 필요함

     

     

    디바이스로부터의 메시지 전송

    IoT등의 디바이스로부터 메시지 전달을 받는 것은 아직 업계 표준이라고 말할 것이 없다.

    MQTT는 TCP/IP를 사용하여 데이터를 전송하는 프로토콜의 하나이고, Pub(전달)/Sub(구독) 형 메시지 배송 구조를 가진다. 이것은 채팅 시스템이나 메시징 앱, 푸시 알람 시스템에서 사용하는 기술이다.

    MQTT에서는 관리자에 의해 토픽이 만들어지고, 토픽을 구독하면 메시지가 도착한다. 각 디바이스가 토픽에 메시지를 전달하는 프로그램을 작성하면 MQTT가 정한 규칙에 따라 메시지 배송이 이루어지는데, 이런 메시지의 교환을 중계하는 서버를 MQTT 브로커라고 하고, 메시지를 수신하는 시스템을 MQTT 구독자라고 한다.


     

     

     

     

    반응형

    댓글

Designed by Tistory.