본문 바로가기

데이터 엔지니어링31

Apache Druid 정의, 구성요소, 아키텍처 목차 Druid란? Apache Druid is a high performance real-time analytics database. 대규모 데이터 세트에 대한 빠른 분석을 위해 설계된 실시간 분석 데이터베이스입니다. Druid는 실시간 수집, 빠른 쿼리 성능을 위해 사용되며 빠른 집계가 필요한 동시성이 높은 API 백엔드로 사용됩니다. Apache Druid는 OLAP 데이터베이스 입니다. OLAP는 Online Analytics Processing의 약자로 사용자가 적재한 데이터를 다양한 방식(다차원)으로 적재하고 분석하도록 도와주는 시스템입니다. 다차원 정보는 기존에 1차원 정보(row단위)를 몇 개의 필드들을 사용해서 지표로 만들어 보여주는 것입니다. 즉, Druid는 다차원 필드인 디멘젼을 사.. 2022. 12. 27.
Elasticsearch search_after vs scroll API(cursor) Elasticsearch의 pagination 검색 방법에 대한 고민 ES를 통한 데이터 조회에서 scroll API(cursor) 방식을 사용하다가 한 노드 당 500개 이상의 cursor가 생성되면, cursor들이 삭제되기 전까지 추가적인 cursor가 생성되지 않는 것을 발견했다. cursor의 live time을 20m으로 설정했기 때문에 누군가가 고의적으로 혹은 실수로 500개 이상의 요청을 날리고 cursor를 사용하지 않는다면 일시적으로 장애가 발생할 수 있는 상황이었다. 참고로, cursor를 발급받고 사용하면 문제가 되지 않는다. 사용함과 동시에 scroll index count값이 줄어든다. 이를 해결하기 위해 알아본 결과 ES에서는 7버전부터 scroll API(cursor) 대신 .. 2022. 10. 8.
Kafka exactly-once delivery 지원 메시지 시스템들의 메시지 전송 방식에는 적어도 한 번 전송(at-least-once), 최대 한 번 전송(at-most-once), 정확히 한 번 전송(exactly-once)이 있습니다. 1) 적어도 한 번 전송(at-least-once) Kafka(브로커)는 첫 번째 메시지를 기록하고 잘 받았다는 ACK를 프로듀서에게 전송하려고 합니다. 하지만 네트워크 오류 또는 브로커 장애가 발생하여 결국 프로듀서는 메시지에 대한 ACK를 받지 못합니다. 메시지를 전송한 후 브로커로부터 ACK을 받지 못한 프로듀서는 브로커가 메시지를 받지 못했다고 판단해 메시지를 재전송합니다. 프로듀서는 메시지를 보내고 그에 대한 ACK를 받지 못했으므로 브로커가 메시지를 받지 못했다고 판단하지만 브로커는 메시지를 기록했으므로 장.. 2022. 9. 3.
Zookeeper ZNode란 무엇인가? Zookeeper는 분산 애플리케이션을 위한 분산 오픈 소스 코디네이션 서비스이다. 파일 시스템의 친숙한 디렉토리 트리 구조와 유사한 데이터 모델을 사용한다. 코디네이션 서비스는 race condition 및 교착 상태와 같은 오류가 발생하기 쉬운데 주키퍼는 이를 쉽게 할 수 있게 책임을 덜어준다. 특징 중 하나는 다수의 머신에서 실행되며 고가용성을 보장하도록 설계되었다는 것이다. Zookeeper 표준 파일 시스템과 유사하게 구성된 공유 계층 네임스페이스를 통해 분산 프로세스를 서로 조정할 수 있다. namespace는 ZNode라고 하는 데이터 레지스터로 구성되며 이는 파일 및 디렉토리와 유사하다. 저장용으로 설계된 일반 파일 시스템과 달리 주키퍼 데이터는 메모리에 보관되므로 주키퍼는 높은 처리량과.. 2022. 8. 30.
Message Queue | Message Broker와 pubsub 차이 What is the message queue? 메시지 큐(Message Queue)는 프로세스 또는 프로그램 간에 데이터를 교환할 때 사용하는 통신 방법 중의 하나로, 메시지 지향 미들웨어(Message Oriented Middleware:MOM)를 구현한 시스템을 의미한다. 메시지 지향 미들웨어란 비동기 메시지를 사용하는 응용 프로그램들 사이에서 데이터를 송수신하는 것을 의미한다. 메시지는 처리되고 삭제되기 전까지 대기열에 저장되며, 각 메시지는 하나의 소비자가 한 번만 처리한다. MessageQueue를 사용하면 서로 다른 시스템 간에 비동기식으로 작업을 처리할 수 있습니다. MQ는 메시지를 임시로 저장하는 간단한 버퍼를 제공하고, 메시지를 전송 및 수신하기 위해 소프트웨어 구성 요소가 대기열에 연.. 2022. 8. 13.
MapReduce vs Spark | 맵리듀스와 스파크의 차이점 위 그림에서 볼 수 있듯이 기존 MapReduce 엔진(왼쪽)에 비해 최신 처리 프레임워크(Tez, Impala 및 Spark)의 주요 특징은 HDFS에 중간 결과를 쓰지 않고 실행 그래프를 최적화한다는 것입니다. 또 실행 그래프 전체에 걸쳐 로컬 노드의 메모리에서 데이터를 처리/캐싱합니다.. 실제로 Hadoop MapReduce와 Spark의 주요 차이점은 처리 방식에 있습니다. Spark는 메모리 내에서 처리할 수 있지만 Hadoop MapReduce는 디스크에서 읽고 써야 합니다. 이에 따라 처리 속도가 크게 달라지며 Spark가 최대 100배 더 빠를 수 있습니다. 하지만 Hadoop MapReduce는 Spark보다 훨씬 큰 데이터셋을 작업할 수 있습니다. * 참고: Tez Apache Tez는.. 2022. 8. 13.
반응형