네이버 쇼핑에서는 1000 만 건이 넘는 큰 데이터를 처리하기 위해서, Hadoop 파일 시스템 (HDFS) 과 같은 분산 데이터베이스를 적극적으로 활용하고 있다
이 방법의 큰 장점은 데이터 엔지니어링 툴을 직접 사용할 수 있기 때문에, 데이터 전처리를 빠른 속도로 적용할 수 있다는 점이다.
1 min read
네이버 쇼핑에서는 1000 만 건이 넘는 큰 데이터를 처리하기 위해서, Hadoop 파일 시스템 (HDFS) 과 같은 분산 데이터베이스를 적극적으로 활용하고 있다
이 방법의 큰 장점은 데이터 엔지니어링 툴을 직접 사용할 수 있기 때문에, 데이터 전처리를 빠른 속도로 적용할 수 있다는 점이다.
HDFS Hive Apache Spark Presto Apache Flink data warehouse columnar storage
... join, 정렬, 여러 단계 집계처럼 흔한 작업도 map 과 reduce 의 조합으로 옮겨야 한다. 단계가 여러 개면 MapReduce 작업을 여러 개 이어붙여야 하고, 그때마다 중간 결과가 HDFS 에 기록됐다가 다시 읽힌다. 디스크 왕복이 반복되어 느리다. 진입 장벽이 높다. 분석가나 기획자가 데이터를 보려면 자바 코드를 짜야 했다. 이 문제를 풀려고 페이스북이 만든 것이 Hive 로,...
큰 데이터를 여러 대의 기계에 나눠 처리하기 위한 프로그래밍 모델이다. 2004년 구글 논문에서 제안됐고, 이를 오픈소스로 구현한 것이 Hadoop MapReduce 다. 처리를 두 함수로만 표현하게 강제하는 것이 핵심이다.
Apache Iceberg는 대용량 분석 테이블을 파일 위에서 안전하게 관리하기 위한 open table format이다. 여기서 중요한 말은 “테이블 포맷”이다.
정의 Distributed SQL Query Engine for Big Data (Trino 와 유사) Presto is an open source distributed SQL query engine for running interactive analytic queries against data sources...
row based storage 는 일반적인 관계형 데이터베이스 테이블의 저장 방식으로, 각 행 (row) 마다 단일 레코드의 필드값이 저장된다. 장점 및 단점 장점 row based storage 는 한 행의 여러 열을 동시에 작업할 때 효율이 극대화된다.
TFRecord 의 단점 엄격한 포맷 tf.train.Feature(float list=tf.train.FloatList(value=[value])) 와 같이 TFRecord 에 저장할 모든 데이터는 TensorFlow 에서 제공하는 데이터 타입으로 변환해야 한다.
Hive에서 조인 명령을 실행할때, 크기가 작은 테이블은 메모리에 캐시하고 크기가 큰 테이블은 맵퍼로 흘려 보낼 수 있다. 하이브는 메모리에 캐시한 작은 테이블로 부터 일치하는 모든 것을 찾아 낼 수 있기 때문에 맵에서 모든 조인을 할 수 있다.
columnar storage row based storage 의 단점을 극복하기 위한 방법으로 많이 사용된다.
대용량 실시간 메시지 처리를 위한 프레임워크 Producer & Consumer Kafka 는 Producer 와 Consumer 가 데이터를 주고 받기 위한 중간 다리 역할을 한다.
Spark Apache Spark 는 메모리 내 처리를 지원하여 빅 데이터를 분석하는 애플리케이션의 성능을 향상시키는 오픈 소스 병렬 처리 프레임워크입니다. Spark 는 메모리에서 대량의 데이터를 처리하므로 디스크 기반 대체 방법보다 훨씬 빠릅니다.
Kafka Topic Kafka Topic 은 같은 종류의 event/message 를 모아두는 logical stream 이다. Producer 는 topic 으로 message 를 쓰고, Consumer 는 topic 에서 message 를 읽는다.