Big data
빅 데이터(영어: big data)란 기존 데이터베이스 관리도구로 데이터를 수집, 저장, 관리, 분석할 수 있는 역량을 넘어서는 대량의 정형 또는 비정형 데이터 집합 및 이러한 데이터로부터 가치를 추출하고 결과를 분석하는 기술을 의미한다.
다양한 종류의 대규모 데이터에 대한 생성, 수집, 분석, 표현을 그 특징으로 하는 빅 데이터 기술의 발전은 다변화된 현대 사회를 더욱 정확하게 예측하여 효율적으로 작동케 하고 개인화된 현대 사회 구성원 마다 맞춤형 정보를 제공, 관리, 분석 가능케 하며 과거에는 불가능했던 기술을 실현시키기도 한다.
이같이 빅 데이터는 정치, 사회, 경제, 문화, 과학 기술 등 전 영역에 걸쳐서 사회와 인류에게 가치있는 정보를 제공할 수 있는 가능성을 제시하며 그 중요성이 부각되고 있다.
하지만 빅데이터의 문제점은 바로 사생활 침해와 보안 측면에 자리하고 있다. 빅데이터는 수많은 개인들의 수많은 정보의 집합이다. 그렇기에 빅데이터를 수집,분석할 때에 개인들의 사적인 정보까지 수집하여 관리하는 빅브라더의 모습이 될 수도 있는 것이다. 그리고 그렇게 모은 데이터가 보안 문제로 유출된다면, 이 역시 거의 모든 사람들의 정보가 유출되는 것이기에 큰 문제가 될 수 있다.
세계 경제 포럼은 2012년 떠오르는 10대 기술 중 그 첫 번째를 빅 데이터 기술로 선정했으며 대한민국 지식경제부 R&D 전략기획단은 IT 10대 핵심기술 가운데 하나로 빅 데이터를 선정하는 등 최근 세계는 빅 데이터를 주목하고 있다.
Categories
- Hadoop
- Spark
- Tuplex (python) - 병렬 빅데이터 처리 프레임워크
- YTsaurus - Exabyte-Scale 스토리지 & 처리 시스템 오픈소스
- FastLanes - 차세대 빅데이터 파일 포맷
Bigdata platform
Hadoop, Spark 생태계로 대표되는 빅데이터 플랫폼은 대용량·다양한 형태의 데이터를 처리하기 위해 등장했습니다. 정형, 반정형, 비정형 데이터를 모두 수집할 수 있다.
빅데이터 플랫폼은 데이터의 수집, 처리, 저장 및 관리, 분석, 시각화 등의 역할 수행을 지원함으로써 새로운 insight와 비즈니스 가치 창출이 가능한 데이터 프로세스 환경을 의미한다.
Bigdata platform vs Data warehouse
- 데이터 수용 범위 — 정형, 반정형(JSON, Parquet), 비정형(텍스트, 이미지, 로그) 데이터를 모두 원본 그대로 저장할 수 있습니다. Schema-on-Read 방식으로, 데이터를 읽을 때 스키마를 적용합니다.
- 확장성 — 범용 하드웨어(commodity hardware)를 수평 확장(scale-out)하는 분산 아키텍처를 사용하므로, 페타바이트 이상의 데이터도 비교적 저렴하게 저장·처리할 수 있습니다. 반면 전통 DW는 수직 확장(scale-up) 위주로 비용이 급격히 증가합니다.
- 처리 방식 — 배치 처리뿐 아니라 스트리밍(Kafka, Flink, Spark Streaming) 처리도 지원하여 실시간에 가까운 분석이 가능합니다. DW는 주로 배치 기반의 OLAP 분석에 집중합니다.
- 비용 구조 — 오픈소스 기반이 많아 라이선스 비용이 낮지만, 운영 복잡도와 인력 비용이 높습니다. DW는 라이선스/서비스 비용이 높지만 운영이 상대적으로 단순합니다.
현대적 수렴: 데이터 레이크하우스
최근에는 이 둘의 경계가 허물어지고 있습니다.
데이터 레이크하우스(Databricks Delta Lake, Apache Iceberg, Apache Hudi)는 데이터 레이크의 유연한 저장 능력과 DW의 ACID 트랜잭션·스키마 관리를 결합한 아키텍처입니다.
Snowflake나 BigQuery 같은 클라우드 DW도 반정형 데이터 지원과 분리형 스토리지-컴퓨트 아키텍처를 채택하면서 빅데이터 플랫폼의 장점을 흡수하고 있습니다.
실시간 데이터 개념 이해
스트리밍 데이터 처리를 위한 내용을 알기 앞서 몇 가지 용어와 개념을 미리 알아두자.
- 한정 데이터(Bounded data) 처리 : 이미 저장된 데이터를 처리하는 것, 별도의 처리 패턴 없음
- 무제한 데이터(Unbounded data) : 스트리밍 데이터로 배치(batch)와 스트리밍(streaming)의 두가지 패턴으로 처리한다.
- Batch : 스트리밍 데이터를 일정 시간 단위로 모아 처리하는 방식. 구현이 간단하나 데이터 수집 후 처리가 되므로 실시간 처리에서 떨어진다.
- Streaming : 스트리밍 처리에는 Time agnostic, Filtering, Inner join, Windowing 방식 등이 있고, 배치에 비해 복잡하다. Skew가 환경에 따른 변화가 심해 데이터가 시스템에 도착하는 순서 역시 순차적이지 않기 때문이다.
- Time agnostic : 시간 속성이 없는 데이터로 들어오는 순서대로 처리한다.
- Filtering : 들어오는 데이터 중 특정 데이터만 필터링 후, 저장한다.
- Inner join : 교집합이라는 말처럼, 두개의 무제한 데이터에서 들어오는 값을 비교, 매칭시켜 값을 구별한다.
- Windowing : 스트리밍 데이터를 일정한 시간 간격으로 처리한다.
빅 데이터는 죽었다
이 글을 쓴 회사는 MotherDuck 으로 DuckDB를 만드는 회사라는 걸 감안하고 봐야합니다.
- 나는 누구이고 왜 관심을 갖는가 → BigQuery의 초기 엔지니어
- 필수 소개 슬라이드 → 모두들 참조하는 "시간이 지날수록 데이터는 폭증한다" 그래프
- 대부분의 사람들은 그렇게 많은 데이터를 가지고 있지 않음
- 스토리지와 컴퓨팅이 분리, 스토리지에 편향성을 가짐
- 워크로드 크기가 전체 데이터 크기보다 작음
- 대부분의 데이터는 거의 쿼리되지 앟음
- 빅 데이터 프론티어는 계속해서 후퇴하는 중
- 데이터는 책임(Liability)
- 빅 데이터의 또 다른 정의는 "데이터를 유지하는 비용이 무엇을 버릴지 알아내는 비용보다 적을 때"
- 정말 엄청난 양의 데이터를 생성하고 있나요?
- 만약 그렇다면 정말 한 번에 엄청난 양의 데이터를 사용해야 하나요?
- 만약 그렇다면 데이터가 너무 커서 하나의 시스템에 맞지 않습니까?
- 만약 그렇다면, 당신은 단순한 데이터 수집가(Hoarder)가 아니라고 확신합니까?
- 만약 그렇다면 요약하는 것이 더 좋지 않을까요?
Solutions
데이터를 수집해서 처리하고 이를 이용해 수익을 내는 일련의 과정에는 복잡하고 번거로운 단계들이 있는데, 이를 좀 더 빠르게 처리할 수 있는 실시간 데이터 분석을 위한 새로운 기술이 생겨났다. 간단하게 정리하면 아래와 같다.
큐잉 시스템 (Queuing system)
스트림 처리
- 스톰 (Storm)
- 스파크 스트리밍 (Spark Streaming)
- 삼자 (Samza)
고속 스토리지
See also
- DuckDB - Embedded OLAP DB 오픈소스
- 빅데이터 플랫폼 (Big Data Platform)
- 데이터 웨어하우스 (Data Warehouse)
- 데이터 레이크 (Data Lake)
- 데이터 레이크하우스 (Data Lakehouse)