내마음대로 Hadoop을 간단하게 이해하고자 정의한 개발 시나리오다. 틀릴 수도 있지만 좀 쉽게 풀어써볼려고 노력하였다.
질문 수십 테라 데이터 분석을 해보자.
답변 무엇이 문제지?
질문 : 분석용 대용량 파일(몇십 테라), 읽고 쓰는 게 너무 느림.
답변 : 데이터를 N개로 분할해서 N개의 디스크에 나누어서 저장. N개의 디스크에서 동시에 데이터를 읽어 들이니 속도가 N배 빨리짐.(HDFS)
질문 : 그럼 N개의 디스크가 필요해 비용은? 그리고 용량이 남아도는데 놀고 있는 디스크는 어쩔 거냐?
답변 : 데이터를 다른 사람들에게도 사용하게 해주자. 디스크도 여러 명이 디스크를 공유해서 사용해서 사용률을 높이자.(HDFS)
질문 : 디스크가 많아지지 장애 날 확률도 높아짐. 대책은?
답변 : 복제본을 여러 개 다른 디스크에 저장하자. 장애 발생하면 알아서 다른 디스크에서 읽고 복제본은 다시 만들자.(HDFS)
질문 : 데이터를 여러 개의 파일로 나누어 저장되다 보니 분석은 어떻게 해야 함? 어떻게 할 칠 거냐?
답변 : 여러 개의 디스크에 나누어져 있는 데이터는 키-값 쌍으로 데이터로 변환한 다음 분류해서 데이터 집합 형태로 모은다(Map). 분류된 데이터 집합을 그룹핑 혹은 집계 같은 연산을 수행하여 최종 분석 데이터를 추출한다(Reduce). 이런 일련의 작업을 할 수 있는 Map-Reduce라는 추상화된 분산 데이터 처리 프레임워크를 제공함. 코딩해!(MapReduce)
질문 : Map-Reduce 말고도 내가 만든 프로그램으로 분석하고 싶어! 가능해?
답변 : 리소스 관리하고 하는 프로그램이 알아서 해줌! 대신 리소스 관리 프로그래밍이 핸들링해서 스케줄링할 수 있게 프로그래밍해와!(Yarn)