Search
Duplicate

Hadoop

태그

Hadoop이란

하둡은 여러개의 컴퓨터를 하나로 묶어 대용량데이터를 처리하는 기술로 , 수천대의 분산된 x86장비에 대용량 파일을 저장할 수 있는 기능을 제공하는 분산파일 시스템과, 저장된 파일을 분산된 서버의 CPU와 메모리 자원을 이용하여 빠르게 분석하는 맵리듀스 플랫폼으로 구성되어 있다

HDFS(하둡 분산형 파일시스템)

하둡 네트워크에 연결된 기기에 데이터를 저장하는 분산형 파일 시스템
1.
HDFS는 데이터를 저장하면, 다수의 노드에 복제 데이터도 함께 저장해서 데이터 유실을 방지
2.
HDFS에 파일을 저장하거나, 저장된 파일을 조회하려면 스트리밍 방식으로 데이터에 접근해야 함.
3.
한번 저장한 데이터는 수정할 수 없고, 읽기만 가능하게 해서 데이터 무결성을 유지. (2.0 알파버전부터는 저장된 파일에 append가 가능하게 됨)
4.
데이터 수정은 불가능 하지만 파일이동, 삭제, 복사할 수 있는 인터페이스를 제공함.

MapReduce

대용량의 데이터 처리를 위한 분산 프로그래밍 모델, 소프트웨어 프레임워크 맵리듀스 프레임워크를 이용하면 대규모 분산 컴퓨팅 환경에서, 대량의 데이터를 병렬로 분석 가능 프로그래머가 직접 작성하는 맵과 리듀스라는 두개의 메소드로 구성 Map: 흩어져 있는 데이터를 연관성 있는 데이터들로 분류하는 작업(key, value의 형태) Reduce: Map에서 출력된 데이터를 중복 데이터를 제거하고 원하는 데이터를 추출하는 작업

HDFS 아키텍처

1.
블록 구조의 파일 시스템으로, 저장하는 파일은 특정 사이즈의 블록으로 나눠져 분산된 서버에 저장됨.
2.
하나의 블록은 3개(수정 가능)로 복제되며, 각각 다른 HDFS의 노드에 분산저장됨
3.
HDFS에는 마스터 역할을 하는 네임노드 서버 한 대와, 슬레이브 역할을 하는 데이터노드 서버가여러 대로 구성된다.
4.
네임 노드는 HDFS의 모든 메타데이터(블록들이 저장되는 디렉토리의 이름, 파일명등..)를 관리하고, 클라이언트가 이를 이용하여 HDFS에 저장된 파일에 접근할 수 있음.
5.
하둡 어플리케이션은 HDFS에 파일을 저장하거나, 저장된 파일을 읽기 위해 HDFS 클라이언트를사용하며, 클라이언트는 API형태로 사용자에게 제공됨.
6.
데이터 노드는 주기적으로 네임노드에서 블록 리포트(노드에 저장되어 있는 블록의 정보)를 전송하고 이를 통해 네임노드는 데이터 노드가 정상 동작하는지 확인.
7.
클라이언트는 네임노드에 접속해서 원하는 파일이 저장된 블록의 위치를 확인하고, 해당 블록이 저장된 데이터 노드에서 직접 데이터를 조회함.
Reduce 단계
1.
Splitting : 문자열 데이터를 라인별로 나눈다.
2.
Mapping : 라인별로 문자열을 입력받아, <key, value> 형태로 출력.
3.
Shuffling : 같은 key를 가지는 데이터끼리 분류.
4.
Reducing : 각 key 별로 빈도수를 합산해서 출력.
5.
Final Result : 리듀스 메소드의 출력 데이터를 합쳐서 하둡 파일 시스템에 저장.