[Bigdata] Hadoop 이란 - HDFS

nnn_nnn·2022년 1월 17일
0

빅데이터

목록 보기
1/3
post-thumbnail

빅데이터의 등장배경

빅데이터란 방대한 규모의 데이터를 뜻하는데, 기존의 RDBMS로만 관리할 수 없는 규모로 복잡한 데이터 구조를 가진다.

빅데이터의 속성인 3V Volume, Velocity, Variety - 가치, 속도, 다양성으로 다양한 데이터 (정형,비정형, 반정형) 들이 대규모 크기로 구성되어 있으며, 데이터 처리 속소가 빨라야한다.

추가로 다른 속성도 있지만, 자연스레 책을 보다 보면 접하게 된다. Value, Variability, Visualization 등이 등장했다.

기존의 RDBMS는 OLTP성으로 (Online Transaction Processing) 트랜잭션 단위로 작업을 한다. ACID (원자성, 일관성, 독립성, 영구성)으로 데이터를 빠르게 처리하고 정확하게 처리하는것에 초점을 둔다.

Hadoop은 OLAP성으로 (Online Analytical Processing) 데이터 처리의 정확성에 초점을 두기 보단 기업에서 다양한 관점으로 데이터 분석에 초점을 둔다.

하둡이 그래서 뭔데?

HDFS (Hadoop Distribution File System) 으로 하둡은 데이터를 블락 단위로 잘라서 저장하는 파일 시스템이다.

기본적으로 공식사이트에선 Hadoop은 3-Copy형식으로 분산하여 저장한다고 설명되어있다( 꼭 3으로 설정하진 않아도 된다.)

풀어서 설명하자면 예를 들어 200MB의 크기의 데이터를 하나의 블록의 크기를 64MB로 3개로 쪼개서 저장을 한다. 여기서 블록하나의 크기 또한 설정을 바꿀 수 있다.

데이터가 쪼개지고 나서 64MB에 채워지지않아도 하둡은 알아서 64MB에 맞춰 저장한다.

그러면. 하둡을 사용하긴 위해선 자원이 기존보다 3배가 필요하다. 3GB의 데이터가 있으면 저장 공간은 9GB가 있어야하기 때문이다.

하둡의 단점

저장공간이 3배가 필요하고 (데이터 손실을 막기위해 복제함) 데이터를 저장하고 MapReduce가 동작하는데 있어서 디스크에 I/O가 빈번하여 네트워크 트래픽이 생긴다.

다른 오픈소스 Spark등을 함께 사용하여 이런 하둡의 단점을 보완할 수 있다.
*spark의 경우 디스크가 아닌 메모리에 I/O 작업을 하는데, 데이터의 최초 입력과 출력시에만 디스크에 I/O 작업을 한다.

현재는 하둡 3버전 등장으로 저장공간이 3배가 필요하진않다. Eraser Coding의 등장으로 저장공간을 절약할 수 있다.

기존에 6개의 데이터를 3개로 복제하여 18블록을 사용했다면, 하둡3은 6개의 데이터의 저장공간과 3개의 패리티를 저장할 공간이 필요하다. (RAID - 스트라이핑 구성)

하둡 클러스터?

하둡은 HDFS, Mapreduce, Yarn으로 구성되어있다.

HDFS는 앞서 말했듯이 데이터를 복제하여 저장하는 시스템이고
MapReduce는 데이터를 분산 병렬처리하는 프레임워크이다. Map으로 데이터를 쪼개고 split하여 key/value 쌍으로 임시적으로 나눈다. 그리고 중간파일을 Reduce로 합쳐서 key에 의해 sort되고 reduce함수로 결과물을 디스크에 저장한다.
Yarn은 이러한 작업을 할 수 있도록 리소스를 관리해준다.(메모리, cpu, 디스크 등 하드웨어 자원)

HDFS는 네임노드 데이터노드로 구성되어 있다. 여기서 말하는 노드란 서버로 이해하면 된다.
대략 Master - Slave의 구성으로 네임노드가 Master 역할, 데이터 노드가 Slave역할 이다.

네임노드가 메타정보를 가지고 있고, 데이터 노드에는 실질적으로 쪼개진 데이터들이 저장이 된다.

네임노드가 가지고 있는 메타정보에는 데이터의 파일시스템이미지(FSImage) (네임스페이스 정보, 데이터 노드 간의 블락 매핑 정보)와 Editslog(메타 데이터 변경정보)를 가진다. - 추후에 Zookeeper에서 다룰 예정

HDFS에 분산되어 있는 데이터를 읽어 올때, 네임노드가 데이터노드에 저장된 블락중 가장가까운 주소로 부터 데이터를 제공한다.

0개의 댓글