🔊 Udemy Hadoop 무료 강의를 정리한 내용입니다.
강의 내용에 이해가 더 필요한 내용을 덧붙여 정리하였습니다.
언제나 피드백은 환영입니다. 제가 잘못 알고 있는 내용이 있다면 언제든 코멘트 달아주세요!
우리는 언제 빅데이터 방법론을 적용하는가?
데이터의 양이 많다고해서 빅데이터 방법론을 적용할 수 있을까?
- 빅데이터 방법론을 적용하는 3 가지 기준이 있다.
- Volume
- Velocity
- Variety
1) 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
- 계산 효율성 (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의 비교
Hadoop | RDBMS |
---|
Linear Scale | Nonlinear Scale |
Dynamic Schema | Static Schema |
Batch | Interactive and Batch |
Petabytes | Gigabytes |
Write once, Read Many times | Read & 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 Rate 가 122 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