[Hadoop] Big Data에 대한 소개

Engineer Edlin·2022년 8월 29일
0

Hadoop

목록 보기
1/3
post-thumbnail

🔊 Udemy Hadoop 무료 강의를 정리한 내용입니다.
강의 내용에 이해가 더 필요한 내용을 덧붙여 정리하였습니다.
언제나 피드백은 환영입니다. 제가 잘못 알고 있는 내용이 있다면 언제든 코멘트 달아주세요!


우리는 언제 빅데이터 방법론을 적용하는가?

데이터의 양이 많다고해서 빅데이터 방법론을 적용할 수 있을까?

  • 빅데이터 방법론을 적용하는 3 가지 기준이 있다.
  1. Volume
  2. Velocity
  3. Variety

1) Volume

  • 데이터의 양이 일정 기간동안 꾸준히 증가하고 있는가
  • 선형적인 증가가 Volume에 속한다.
  • Terabytes, Petabytes, Exabytes ...

2) Velocity (속도)

  • data volume이 일정하다고 가정한다면, 일정한 Volume의 데이터가 얼마나 빠르게 축적되는가
  • 예를 들어 데이터가 일주일에 1 Terabytes씩 쌓인다면, 한달, 일년이면 어마어마한 데이터가 축적되는 것이다. 이때, 빅데이터 방법론을 사용하여 데이터를 처리하는 것을 고려할 수 있다.

3) Variety

  • 데이터는 정형적 형태뿐 아니라 비정형 형태도 존재한다.
  • 데이터의 형식이 다를 경우 형식을 맞추려는 과정이 필요하다.
  • 정제과정이 필요할 때, 빅데이터 방법론이 적용될 수 있다.

3가지 요소를 고려하여 빅데이터 방법론을 적용할 수 있다.
모두 고려할 수도 있고 한 가지, 혹은 두 가지 요소만 충족하여 빅데이터 방법론을 적용할 수도 있다.
다만, 왜 빅데이터 방법론이 필요한가에 대한 근거를 찾을 때 3가지 기준을 적용하면 타당성을 갖출 수 있다.


i.e. 실제 데이터가 쌓이는 예

  • eBay: 검색, 추천, 상업적 광고 등의 처리를 위해 40 PB Hadoop cluster가 필요하다.
  • Facebook: 50 billion photo and 130TB of log stories를 위해 30PB Hadoop cluster가 필요하다.

Big Data - Challenges

  • Storage
  • 계산 효율성 (Computational Efficiency): 얼마나 빠르게 효율적으로 데이터에서 정보를 추출해낼 수 있는가
  • Data Loss: Hadoop의 Fault Tolerance와 연관된다.
  • Cost : 데이터 처리를 위해 필요한 서버 비용, 네트워크 비용, 시간 등

1) 전통적 방법

  • Big data가 가진 Challenges을 해결하기 위해 RDBMS에서 여러 기능을 제공했지만, 데이터 양이 너무 많아지면서 역부족 (=비용이 너무 많이 들어 더 효율적 방법이 필요)
  • 데이터가 만약 어떤 특정한 형태를 가지고 있지 않다면?
    - 테이블에 저장될 수 있도록 categorized data가 있을 수도 있지만 uncategorized data가 있을 수도 있다.

2) Hadoop의 등장

  • Storage (= 수평적 확장 (Horizontal scaling), Huge Volume, Storage Effieciency)
  • Computational Efficiency: MapReduce 방식을 통해 빠르게 데이터를 계산할 수 있도록 하였다. 이 외의 알고리즘 적용도 쉽게할 수 있다.
  • Data Loss: Replication을 통해서 Fault tolerance가 가능하도록 하였다.
  • Cost: Scale-out 방식으로 데이터 저장소의 크기를 비용적 측면에서 해결하였다.

3) Hadoop과 RDBMS의 비교

HadoopRDBMS
Linear ScaleNonlinear Scale
Dynamic SchemaStatic Schema
BatchInteractive and Batch
PetabytesGigabytes
Write once, Read Many timesRead & Write Many times


Bigdata Problem

빅데이터 방법론을 적용할 수 있는 문제에는 어떤 것들이 있을까요?

1) Simple problem: Stock Symbols

  • Dataset: 몇 년 간 몇 가지 특징적 현상에 대해 모은 주식 정보 (1TB)
  • Problem: 각 주식의 특징적 현상 별 최고로 높은 가격을 찾아라

(1) Disk에 access하여 데이터를 처리한다고 가정해보기

  • Data access rate + Program computation(계산) time + Network bandwidth ≽ 3 hrs
    • Data access Rate122 MB/sec 라고 가정한다면, 1TB 의 데이터에 엑세스하기 위해서는 1048576 / 122 = 8595 secs (총 2시간 22분) 필요


(2) 1TB의 데이터를 100개의 같은 사이즈의 블록으로 나눠보면 어떨까?

  • 1TB의 데이터를 100개로 나눈다면, 10GB = 10000MB / 122 = 80 secs ≦ 2 mins
  • Computation time 도 훨씬 줄어들 수 있다.
  • 그리고 같은 사이즈의 블록이 병렬적으로 처리된다면?

    ▶▶▶ 데이터 처리속도가 훨씬 빨라진다 ◀◀◀


2) Hadoop

  • 클러스터를 이용하여 거대한 양의 데이터를 처리할 수 있도록 돕는 프레임워크
  • HDFS: 여러 개의 노드로 분산시켜 마치 병렬적으로 데이터 처리가 될 수 있도록 하는 파일 시스템
  • MapReduce: 여러 개의 노드로 분산시켰을 때 적용시킬 알고리즘
    • 데이터를 분류(Categorization)하기 위한 기준(알고리즘) - map
    • 기준에 따라 정제된 데이터의 중복을 최소화하기위한 알고리즘 등 - reduce
profile
담대하게 도전하고 기꺼이 실패를 받아들이는 개발자

0개의 댓글