전체 글

전체 글

    [빅데이터를 지탱하는 기술] 빅데이터의 축적 # 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 데이터베이스처럼 데이터를 내부로 가져오지 않아도 텍스트..

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

    Spark Apache Spark는 Hadoop의 MapReduce 보다 더 효율적인 데이터 처리를 하기 위해 개발이 진행되고 있는 독립된 프로젝트입니다. 기존의 MapReduce와의 차이로는 대량의 메모리를 활용하여 데이터 처리를 빠르게 진행한다는 점입니다. MapReduce가 개발되는 시절에는 처리해야 할 데이터의 크기에 비하여 훨씬 적은 메모리를 사용할 수 밖에 없었고 데이터 처리를 대부분 디스크 I/O에 사용하였습니다. Tez의 경우 또한 MapReduce의 불필요한 단계를 감소하였지만 기본적으로 디스크를 사용합니다. Spark에서는 중간 데이터를 디스크에 쓰지 않고 메모리에 보존합니다. 현재는 메모리의 발전으로 메모리가 취급할 수 있는 데이터의 양이 증가하여 가능한 많은 데이터를 메모리에 올려 ..

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

    Hadoop Hadoop은 현재 빅데이터를 대포하는 시스템입니다. 사실 Hadoop은 단일 소프트웨어가 아니라 분산 시스템을 구성하는 다수의 소프트웨어로 이루어진 집합체입니다. 분산 시스템(Hadoop)의 구성요소 HDFS(Hadoop Distributed File System) : 하둡 분산 파일 시스템 YARN(Yet Another Resource Negotiator) : 리소스 관리자 MR(Map Reduce) : 분산 데이터 처리(distributed data processing : 맵리듀스) 그 외의 프로젝트들은 Hadoop과 독립적으로 개발되어 Hadoop을 이용한 분산 애플리케이션으로 동작합니다. 모든 분산 시스템이 Hadoop에 의존하는 것이 아니라 Hadoop을 일부 사용하거나 전혀 이용..

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

    구조화 데이터와 비구조화 데이터 SQL로 데이터를 집계하는 경우 테이블의 컬러명, 데이터형태, 테이블의 관계를 스키마로 정하게 됩니다. 이때 스키마가 명확하게 정의된 데이터를 구조화 데이터(structured data : 정형데이터)라고 합니다. 빅데이터는 반드시 구조화된 데이터만 존재하지 않습니다. 텍스트 데이터, 동영상 데이터, 음성 데이터 등등 스키마가 없는 데이터를 비구조화 데이터(unstructed data : 비정형데이터)라고 합니다. 비구조화된 원시데이터를 분산 스토리지에 저장하고 그것을 분산시스템으로 처리하는 것이 데이터 레이크의 개념이고 이런 비구조화된 데이터를 데이터 가공, 스키마 정의를 통하여 구조화된 데이터로 바꾸어 데이터 웨어하우스로 옮겨 데이터 분석작업을 할 수 있습니다. 스키마..