하둡(Hadoop)이란?
Hadoop (High-Availability Distributed Object-Oriented Platform)
; 대량의 자료를 처리할 수 있는 큰 컴퓨터 클러스터에서 동작하는 분산 응용 프로그램을 지원하는 프리웨어 자바 소프트웨어 프레임워크.
빅데이터 분석의 날개를 달아준 하둡(Hadoop)!!
하둡은 대용량의 데이터를 적은 비용으로 더 빠르게 분석할 수 있는 소프트웨어이며, 빅데이터 처리와 분석을 위한 플랫폼 중 사실상 표준으로 자리잡고 있다.
여러대의 컴퓨터로 데이터를 분석하고 저장하는 방식으로 필요했던 많은 비용과 시간을 단축하게 해주었다!
국내외를 막론하고 빅데이터를 다루는 개발자들은 하둡 생태계를 통해 빅데이터를 보다 원할하고 효율적으로 분석할 수 있다.
Hadoop이란?
분산 환경에서 빅데이터를 저장하고 처리할 수 있는 자바 기반의 오픈 소스 프레임 워크
하둡 소프트웨어 라이브러리는 간단한 프로그래밍 모델을 사용하여 여러대의 컴퓨터 클러스터에 대규모 데이터세트를 분산 처리 할 수 있게 해주는 프레임워크다.
단일 서버에 수천대의 머신으로 확장할 수 있도록 설계되었다. (wow!!)
일반적으로 하둡파일시스템(HDFS)과 맵리듀스(MapReduce) 프레임워크로 시작되었으나, 여러 데이터 저장, 실행 엔진, 프로그래밍 및 데이터 처리와 같은 하둡 생태계 (Hadoop Ecosystem) 전반을 포함하는 의미로 확장, 발전되었다.
- 하둡 코어 프로젝트 : HDFS(분산 데이터 저장), MapReduce(분산 처리)
- 하둡 서브 프로젝트 : 나머지 프로젝트들 -> 데이터 마이닝, 수집, 분석 등을 수행한다.
먼저 하둡 코어 프로젝트들에 대해서 자세히 알아보자!!!!!!
구성 요소
1. 하둡 분산형 파일 시스템 (Hadoop Distributed File System, HDFS)
하둡 네트워크에 연결된 기기에 데이터를 저장하는 분산형 파일 시스템
하둡 분산 파일 시스템은 하둡 프레임워크를 위해 자바 언어로 작성된 분산 확장 파일 시스템이다. HDFS는 여러 기계에 대용량 파일을 나눠서 저장을 한다. 데이터들을 여러 서버에 중복해서 저장함으로써 데이터 안정성을 얻는다.
특징
- HDFS는 데이터를 저장하면, 다수의 노드에 복제 데이터도 함께 저장해서 데이터 유실을 방지한다.
- HDFS에 파일을 저장하거나, 저장된 파일을 조회하려면 스트리밍 방식으로 데이터에 접근해야한다.
- 한번 저장한 데이터는 수정할 수 없고, 읽기만 가능해서 데이터 무결성을 유지한다.
- 데이터 수정은 불가능하지만 파일 이동, 삭제, 복사할 수 있는 인터페이스르 제공한다.
아키텍쳐
HDFS는 마스터/슬레이브(master/slave)구조를 가진다. HDFS 클러스터는 하나의 네임 노드와 파일 시스템을 관리하고 클라이언트의 접근을 통제하는 마스터 서버로 구성된다. 게다가 클러스터의 각 노드에는 데이터 노드가 하나씩 존재하고, 이 데이터 노드는 실행될 때 마다 노드에 추가되는 스토리지를 관리한다. HDFS는 네임스페이스를 공개해서 유저 데이터가 파일에 저장되는 것을 허락한다.
네임노드는 파일과 디렉터리의 읽기(open), 닫기(close), 이름 바꾸기(rename) 등 파일 시스템의 네임프세이스의 여러 기능을 수행한다.
또한 데이터 노드와 블록들의 맵핑을 결정한다.
데이터노드는 파일 시스템의 클라이언트가 요구하는 읽기(read), 쓰기(write) 기능을 담당한다. 또한 데이터 노드는 네임 노드에서의 생성, 삭제, 복제 등과 같은 기능도 수행한다.
네임노드와 데이터노드는 GNU/Linux OS를 기반으로 하는 상용 버신에서 실행하기 위해 디자인된 스프트웨어의 일부다. HDFS는 자바 언어를 사용하므로 자바가 동작하는 어떠한 컴퓨터에서나 네임노드나 데이터노드 소프트웨어를 실행할 수 있다.
파일 저장 플로우
- 어플리케이션이 HDFS 클라이언트에게 파일 저장을 요청하면,
클라이언트는 네임 노드에게 파일 블록들이 저장될 경로 생성 요청
네임 노드는 해당 파일 경로가 존재하지 않으면 경로 생성 후 다른 클라이언트가 해당 경로를 수정하지 못하게 lock
이후 네임노드는 클라이언트에게 해당 파일 블록들을 저장할 데이터 노드의 목록 반환 - 클라이언트는 첫번째 데이터 노드에게 데이터 전송
- 4. 첫번째 데이터 노드는 데이터를 로컬에 저장한 후 데이터를 두번째 데이터 노드로 전송. 이후 계속 전달전달
- 로컬에 데이터를 저장하였면 자기에게 넘겨준 데이터 노드에게 데이터 로컬 저장이 완료되었음을 응답.(ack)
- 첫번째 데이터 노드는 클라이언트에게 데이터 저장이 완료되었음을 응답.
파일 읽기 플로우
- 어플리케이션이 클라이언트에게 파일 읽기 요청
- 클라이언트는 네임 노드에게 요청된 파일이 어떤 블록에 저장되어있는지 정보 요청
- 메타 데이터를 통해 파일이 저장된 블록 리스트를 반환
- 클라이언트는 데이터 노드에 접근하여 블록 조회 요청
- 데이터 노드는 클라이언트에게 요정된 블록을 전송
- 클라이언트는 어플리케이션에 데이터를 전달.
하트비트(heartbeat)
리슨투마핱빝.. 알면 할매..?!
- 데이터 노드는 네임노드에게 하트비트를 3초마다 보낸다. 하트비트에는 디스크 가용 공간 정보, 데이터 이동, 적재량 등의 정보가 들어있다.
- 핸드 셰이킹에 사용된다. 10초 이상 못받으면 사용하지 못한다고 인식한다.
2. 맵리듀스(MapReduce)
대용량의 데이터 처리를 위한 분산 프로그래밍 모델, 소프트웨어 프레임워크
맵 리듀스 프레임워크를 이용하면 대규모 분산 컴퓨팅 환경에서 대량의 데이터를 병렬로 분석 가능
프로그래머가 직접 작성하는 맵과 리듀스라는 두개의 메소드로 구성
흩어져있는 데이터를 수직화하여, 그 데이터를 각각의 종류별로 모으고(Map) -> 필터링과 sorting을 거쳐 데이터를 뽑아내는(Reduce) 분산처리 기술과 관련 프레임워크를 의미.
맵(Map)
흩어져 있는 데이터를 연관성 있는 데이터들로 분류하는 작업. (key, value의 형태)
리듀스(Reduce)
Map에서 출력된 데이터에서 중복 데이터를 제거하고 원하는 데이터를 추출하는 작업
맵리듀스 잡(MapReduce Job) : Client 수행 작업 단위
클라이언트가 수행하려는 작업 단위로써, 입력 데이터, 맵리듀스 프로그램, 설정 정보로 구성되어있다.
하둡은 Job을 Map Task와 Reduce Task로 작업을 나누어서 실행한다.
Job 실행 과정을 "제어"해주는 노드
맵 리듀스 시스템은 Client, JobTracker, TaskTracker로 구성된다.
- 클라이언트 : 분석하고자 하는 데이터를 잡(JOB)의 형태로 JobTracker에게 전달
- 잡 트래커 : 네임노드에 위치. 하둡 클러스터에 등록된 전체 잡(job)을 스케줄링하고 모니터링.
- 태스크 트래커 : 데이터노드에서 실행되는 데몬. Task를 수행하고, 잡 트래커에게 상황 보고
'머신러닝 꿈나무' 카테고리의 다른 글
[Python 데이터 분석 3대장] Numpy 라이브러리 (0) | 2020.08.04 |
---|---|
데이터의 성능을 높이는 방법 (0) | 2020.08.02 |
[Python 데이터 분석 3대장] 판다스(Pandas) (0) | 2020.01.13 |
하둡 에코시스템(Hadoop-Ecosystem)이란 (0) | 2019.11.10 |
DW(Data Warehouse; 데이터 창고)? Data Lake!! (0) | 2019.11.05 |
댓글
이 글 공유하기
다른 글
-
데이터의 성능을 높이는 방법
데이터의 성능을 높이는 방법
2020.08.02 -
[Python 데이터 분석 3대장] 판다스(Pandas)
[Python 데이터 분석 3대장] 판다스(Pandas)
2020.01.13 -
하둡 에코시스템(Hadoop-Ecosystem)이란
하둡 에코시스템(Hadoop-Ecosystem)이란
2019.11.10 -
DW(Data Warehouse; 데이터 창고)? Data Lake!!
DW(Data Warehouse; 데이터 창고)? Data Lake!!
2019.11.05