뇌운동일지

[Hadoop] 개념정리 본문

BigData/Apache Hadoop

[Hadoop] 개념정리

purpleduck 2021. 8. 2. 17:29

정리1)

정형 데이터 (Structured data) : 데이터베이스의 정해진 규칙(Rule)에 맞게 들어간 데이터 중에 수치만으로 의미 파악이 쉬운 데이터

비정형 데이터 (Unstructured data) : 정해진 규칙이 없어서 값의 의미 파악이 어려운 데이터

ex) 텍스트, 음성, 영상

반정형 데이터 (Semi-structured data) : 약한 정형 데이터 

ex) HTML, XML

 

하둡 

- 대용량 자료 처리 가능

- 컴퓨터 클러스터에서 동작

- 분산 응용 프로그램을 지원하는 오픈소스 자바 프레임워크 

분산 데이터 처리 기술 : 큰 용량의 단일 서버보다 작은 용량의 여러 서버를 묶은 컴퓨터 클러스터가 가성비 더 좋음

하둡의 핵심 철학 : 코드(가벼움)를 데이터(무거움)가 있는 곳으로 보냄

 

레이드와 하둡 

레이드 시스템 )

- 디스크 여러개 

- OS 1개

- CPU 1개

=> 10펙타바이트 처리 시, OS와 CPU가 힘들다 (매우 느림)

 

하둡 )

- 디스크 여러개 

- OS 여러개

- CPU 여러개 

=> 10펙타바이트 처리 시, 분산처리 (빠름)

 

상업용 RDBMS는 확장하려면 큰 용량을 가진 서버를 구매해야함 (스케일의 증가, scale-up)

하둡은 컴퓨터(nodes)를 추가함으로써 선형적으로 확장 (스케일의 확장, scale-out)

 

하둡의 목적 

매우 큰 데이터를 저장할 수 있어야 함 : HDFS

그 데이터를 이용해서 연산을 수행할 수 있어야 함 : MapReduce

 

HDFS(Hadoop Distributed File System) 

 

 

HDFS 마스터는 슬레이브 노드 사이의 저장 공간을 분할하고, 데이터 저장 위치를 관리하는 책임을 담당 

네임노드는 어떤 데이터노드가 각 파일 블록을 관리하는지 등과 같은 파일시스템에 대한 메타데이터를 메모리에 보관 

데이터노드는 파일 읽기 및 쓰기 파이프라인을 위해 서로 통신 

파일은 블록으로 구성, 각 파일은 여러 차례 복제 -> 파일의 블록 별로 동일한 복사본이 여러 개 있다는 뜻

HDFS는 장애가 발생해도 데이터를 잃지 않는 견고성, 하드웨어 추가로 성능을 향상하는 확장성, 클러스터 내의 여러 노드에 데이터분할 등의 기능이 있음

 

하트비트(heartbeat)

데이터노드는 네임노드에게 하트비트를 3초마다 보냄. 

하트비트에는 디스크 가용 공간정보, 데이터 이동, 적재량 등의 정보가 들어있음. 

핸드셰이킹에 사용됨. 10초 이상 못받으면 사용하지 못한다고 인식. 

 

맵리듀스(MapReduce)

맵리듀스 모델을 사용해 애플리케이션을 작성할 경우, 하둡이 확장성과 관련된 모든 일을 알아서 처리

 

정리2)

1. Hadoop의 개념과 아키텍쳐

[Hadoop]

Hadoop : reliable, scalable 하게 분산 처리를 하기 위한 오픈 소스 소프트웨어 

Hadoop은 Map-Reduce라는 단순한 데이터 처리 모델을 사용함으로써 여러 대의 컴퓨터를 통해 손쉽게 대규모 데이터를 처리하고자 함.

하둡은 분산 파일 시스템인 HDFS(Hadoop Distributed File System)에 데이터를 저장하여 처리

(이러한 방식은 Disk I/O에 의해 성능 저하를 유발. 추후 In-Memory 방식으로 처리하는 Spark 등장)

 

[Multi-Layer 구조]

Hadoop에서 수행하는 역할 )

1. HDFS에 파일을 저장하는 역할 

2. 데이터를 처리하는 역할 

이에 맞게 Layer가 다음과 같이 나누어 설계

 

MapReduce Layer : MapReduce를 수행하기 위한 Layer 

    Job Tracker : 사용자로부터 Job을 요청받고 Task Tracker에 작업 할당 

    Task Tracker : Job Tracker로부터 할당받은 작업을 Map-Reduce하여 결과 반환

 

HDFS Layer : 파일을 저장하기 위한 Layer

    Name Node : 작업을 해야하는 파일을 Block으로 나누어 Data Node에 전달

    Data Node : 전달받은 파일의 읽기/쓰기 등을 실제로 수행 

 

[Master-Slave 구조]

Hadoop은 기본적으로 Master-Slave 구조를 지니며, Master 노드는 1대의 노드로 구성

Master Node : DFS(Distributed File System, 분산 파일 시스템)에 대한 정보들을 지니고 있음. 자원할당 조절. Master Node는 2가지 Daemon을 통해 이를 처리.

    Name Node : DFS를 관리. 어떤 Data Block이 클러스터에 저장되어 있는지 알려줌. 

    Resource Manager : 스케줄링 및 Slave Node의 처리를 실행 

Slave Node : 실제 데이터를 가지고 있음. job을 수행하는데 Data Node와 Node Manager를 통해 이를 처리

    Data Node : NameNode에 물리적으로 저장된 실제 데이터를 관리

    NodeManager : 노드의 Task 실행

 

[Block의 저장]

Hadoop은 분산 파일 시스템인 HDFS(Hadoop Distributed File System)에 데이터를 저장하여 처리

Hadoop은 파일을 Block(블록)이라는 단위로 나누어 관리. 1개의 파일을 여러 개의 블록으로 나뉘어 여러 Node에 Replication(복제)된다. 

이러한 이유는 노드의 Failure를 극복하기 위함이다. 

예를 들어 1번 Node에만 Block1이 저장되었다고 할 때, Node1이 고장나면 저장된 Block1을 구할 수 없다. 하지만 Node2에도 Block1을 복제하면 Node1이 작동하지 않을 때에도 Node2로부터 Block1에 대한 정보를 얻을 수 있다. 이러한 Node Failure에 대응하기 위해 Hadoop은 하나의 블록을 여러 개의 Node에 복제. 

 

이러한 Block의 저장은 NameNode와 DataNode에 의해 처리됨. NameNode가 저장할 Block을 특정 Node에 저장하라고 명령을 전달하면, 노드의 DataNode는 전달받은 블록을 자신의 Node에 저장 

 

2. Hadoop의 MapReduce 

[MapReduce]

MapReduce란 대용량의 데이터를 분산/병렬 컴퓨팅 환경에서 처리하기 위해 제작된 데이터 처리 모델

큰 데이터가 들어왔을 때, 데이터를 특정 크기의 블록으로 나누고 각 블록에 대해 Map Task와 Reduce Task를 수행.

Map Task와 Reduce Task는 입력과 출력으로 Key-Value구조 사용. 

Map은 처리한 데이터를 (Key, Value)의 형태로 묶는 작업 의미. 

Map에서는 묶은 (Key, Value) 형태의 데이터들을 List의 형태로 반환

Reduce는 Map으로 처리한 데이터에서 중복된 Key값을 지니는 데이터를 제거하여 합치고, 원하는 데이터를 추출하는 작업 수행

 

[MapReduce 처리 과정]

텍스트 파일에서 단어의 갯수를 세는 문제(WordCount) 수행 순서

1. 단어의 갯수를 세기 위한 텍스트 파일들을 HDFS에 업로드. 각각의 파일은 블록단위로 나누어 저장. 

2. 순차적으로 블록을 입력받음. Splitting 과정을 통해 블록 안의 텍스트 파일을 한 줄로 분할 

3. line을 공백 기준으로 분리. Map(line_num, line)연산을 통해 (vocabulary, 1개)의 리스트 반환

4. Shuffling 과정을 통해 연관성있는 데이터들끼리 모아 정렬

5. Reduce(단어, 갯수)를 수행하여 각 블록에서 특정 단어가 몇번 나왔는지를 계산

6. 이후에 결과를 합산하여 HDFS에 파일로 결과 저장 

 

[MapReduce의 제어]

Map Task와 Reduce Task는 Master Node에 존재하는 Job Tracker에 의해 제어됨. 

1. Client는 job(데이터, MapReduce 프로그램, 설정정보 등)을 Job Tracker에게 보냄.

2. Job Tracker는 Task Tracker들에게 Map Task와 Reduce Task를 할당

3. Task Tracker는 할당받은 Map Task와 Reduce Task를 인스턴스화하여 Task를 수행하며 진행 상황을 Job Tracker에게 보고

 

참고자료) 

https://sjh836.tistory.com/43

https://mangkyu.tistory.com/129#:~:text=Hadoop%EC%9D%98%20%EA%B0%9C%EB%85%90%EA%B3%BC%20%EC%95%84%ED%82%A4%ED%85%8D%EC%B3%90.%20%5B%20Hadoop%EC%9D%B4%EB%9E%80%3F%20%5D%20Hadoop%EC%9D%80%20Reliable%2C,HDFS%20%28Hadoop%20Distributed%20File%20System%29%EC%97%90%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC%20%EC%A0%80%EC%9E%A5%ED%95%98%EC%97%AC%20%EC%B2%98%EB%A6%AC%ED%95%9C%EB%8B%A4.

 

'BigData > Apache Hadoop' 카테고리의 다른 글

[hadoop] hadoop 연습  (0) 2020.06.29
[hadoop] window환경에서 hadoop 실행  (0) 2020.06.26
hadoop 연습  (0) 2020.06.24
Comments