Motivation
우리는 모든 data를 하나의 drive로 읽는데 오래걸린다.
따라서 multiple disk로 read를 할 것이다. (100개의 drive -> 1개의 data를 1/100으로 쪼개는 개념)
하지만, multiple disk로 읽으면 문제점이 존재한다.
- 하드웨어가 fail -> 이는 replication으로 보완
- data를 combining 한다. -> MapReduce로 보완
RDBMS VS MapReduce
● Small portion으로 DB를 update 할 때, majority 로 DB를 update 할 때, !!!
Small에는 relation을 생각하고, 소량의 데이터를 가진다.
sort & merge가 기본이고, 자료구조가 갖춰져 있어 매번 기준에 부합하게 update 하는 B-Tree 알고리즘 구조를 가진 RDBMS가 적합하다.
Majority에는 data를 지속적으로 쓰고 읽고 업데이트 하는 RDBMS와는 달리, HBase는 기존의 data를 추가하는 방식이다 또 Column-oriented인 DB를 가진 HBase이기 때문에, 큰 데이터를 다뤄도 Column만을 check 해서 key값으로 지정하고 그 column만을 읽는데 유용한 알고리즘 MapReduce가 적합하다.
● Dataset의 structure
- Structured data : data format이 정해져있음 ex) xml data -> RDBMS에 용이함
- Semi-structured data : ex) excel, spreadsheet
- Unstructured data : ex) image, web , audio -> Hadoop에 용이함
● Normalization vs Not Normalization
https://mambo-coding-note.tistory.com/6?category=732493
여기에 정규화에 대하여 자세히 포스팅하였다. 이건 참고해서 보면 좋다.
간단히 말하면 정규화는 data들의 관계를 따져서, 중복을 최대한 줄여서 설계한다.
(동일한 대상이 table에 존재하면 X -> 이를 정규화를 통해 분리한다.)
정규화는 RDBMS 에서, 비정규화는 Hadoop에서 쓰인다.
● Scaling
Scaling은 확장성을 말한다. 만약에 input이 size가 2배가 되면 job은 2배로 느려질 것이다.
근데 만약에 cluster가 2배로 확장된다면, job은 2배로 속도가 빨라질 것이다.
Scaling을 늘려도 RDBMS는 데이터의 무결성이 존재하기 때문에, cluster를 늘려도 무결성을 유지하기 위해, 더 많은 update를 하고 write를 여러번 할 것이다. 따라서 scaling은 nonlinear로 나타난다.
반대로 MapReduce는 데이터의 무결성이 상대적으로 낮기 때문에, scaling을 올리면, 같이 성능이 증가한다. 또한 분산저장시스템이기 때문에 cluster를 늘릴수록 성능이 올라간다.
이러한 차이점이 있지만, 이러한 차이점은 Spark, Hive로 보충되었다.
Hadoop Releases
1.2.x - JobTracker & TaskTracker로 구성 (여기에는 resource 관리가 x)
2.5.x - Nodemanager & Resourcemanager로 구성
UNIX tool로 시간이 오래걸림... 42분이 걸려버림.....( (single EC2) & Expensive!!!)
그래서 밑으로는 EC2 10개를 이용하는 Hadoop이 comodity를 이용하는데 어떻게 6분 밖에 안걸릴까?
병렬로 처리하면 생기는 문제점!!
- 동일한 size로 work를 나누는 것이 어렵다.
- difference로 부터 merging result를 하는 것이 더 많은 process를 요구한다.
- 단일 머신의 processing capacity 에 의한 limit
이를 해결한 것이 Hadoop!!!
REVIEW
- (MapReduce) job은 client가 원하는 작업을 이루는 work unit이다.
- hadoop은 두 개의 task로 돌아간다. map task , reduce task
- job을 관리하는 두 개의 node가 존재한다. Jobtracker, Tasktracker // ResourceManager, Nodemanager
- hadoop은 input split, splits 라는 fixed-size 데이터를 MapReduce job으로 보낸다.
- hadoop은 각각의 split 마다 하나의 map task에 보낸다.
'대학원 공부 > computer science' 카테고리의 다른 글
Computer Structure : CPU vs GPU 차이점 (0) | 2019.10.28 |
---|---|
Big Data : Hadoop : lecture_3 : YARN (0) | 2019.10.26 |
Big Data : Hadoop : lecture_1 : Overview of Hadoop (0) | 2019.10.25 |
Big Data : Hadoop : WordCount 예제 (0) | 2019.10.25 |
Big Data : Hadoop : Ubuntu 16.04 LTS -> Hadoop 2.7.6 세팅하기! (0) | 2019.10.25 |
댓글