[Hadoop] Hadoop 2.2.0 (1) – HDFS

Hadoop 이 나온지는 꽤 시간이 흘렀고, 현재는 버전업을 통해 1.x 때와는 다른 구조를 가진 2.2.0이 안정화 버전으로 나와있다.

여기서 가장 큰 차이점이 MapReduce가 Yarn Framework 에서 동작하며, Yarn Framework 도입과 함께 여러가지 구조가 바뀌게 되었다.

우선, 설치 전에 이 구조들에 대해서 먼저 알아보자. Apache Hadoop 안정화 버전 온라인 문서를 보게 되면 첫줄에 딱~ 적혀있다.

“Apache Hadoop 2.2.0 consists of significant improvements over the previous stable release (hadoop-1.x)”. 첫줄부터 대놓고 1.x 버전에서 괄목할 만한 개선이 이루어졌다고 자랑질(?) 이다. 그 자랑하는 주요 기능 향상은

  • HDFS 기능 향상 및 HDFS Federation
  • MapReduce NextGen aka YARN aka MRv2

가 되시겠다.

먼저 HDFS 부터 알아보자.

1.x HDFS Layout

1.x HDFS Layout

아시다시피 하둡의 HDFS(HaDoop File System)는 하둡 프레임워크의 기반이다.

왼쪽 그림에 나와 있는 것처럼 하둡은 데이터의 Block 관리를 위해 Namenode 를 사용한다. 1.x 버전에서는 주 Namenode와 여러개의 DataNode 가 종속되는 방식이다. 따라서 Data Node 증가에 따른 수평적 확장에 대한 부담이 존재하였다. 물론 이에 대해서는 Secondary Namenode 를 두어 대처가 가능했다.

2.x 버전의 HDFS 소개를 보면 이 프레임워크는 이러한 장점이 있다고 말하고 있다.

  • 파일퍼미션/인증 과 Rack awareness / Safemode / fsck / fetchdt / Rebalancer
  • Secondary NameNode / Checkpoint node / Backup node

의 특징을 들고 있다. Rack awareness 나 Safemode 등이야 이전에도 있었지만, Checkpoint 에 대한 Namenode 의 확장에 대한 개념들이 추가되었음을 알 수 있다.

특히, 이 Checkpoint node 는 주기적인 namespace 의 점검을 수행하며, NameNode의 특정 한계치 내에서 HDFS의 수정사항들에 대한 로그를  담고 있는 파일 사이즈를 유지할 수 있도록 돕는 것이다. 원래 Secondary Namenode 의 역할이 이러한 역할이었던 것을 보면 아래 설명할 HDFS Federation 의 namespace(Java나 C#의 그것이 아니다?! 아래에 설명이 나온다.) 개념까지 포함하여 Secondary Namenode 를 대치하도록 한 것으로 보인다.

물론 아파치 공식 문서에 따르면 아직 견고하게(battle-hardened라고 말하고 있다. 재미있는 표현이다.) 동작하지 못하므로, 시스템에 등록된 별도의 Backup node 들이 없는 한 Namenode에 여러개의 Checkpoint node 를 운영할 수 있다고 한다.

그렇다면 Backup node 의 기능은 말 안해도 알겠다. Backup node 는 Checkpoint node 의 기능을 수행하며 NameNode 의 연속적인 수정사항(stream of edits) 을 받아들이고 namespace의 복사본을 자체 메모리에 두고 active NameNode 의 namespace 상태와 항상 동기화 한다고 하니 정말 말 그대로 Backup node이다. (설명을 보니 예전 Active Directory의 active-standby 모드가 생각난다.)

HDFS Layers

HDFS Layers

HDFS 레이어의 기본구조는 다음과 같다.

HDFS 레이어의 Namespace 영역은 각각의Namenode를  중심으로  구성되며, 그 하부에는 Block Management 모듈이 Storage 영역 내에 데이터를 저장하는 다수의 Datanode 로 구성된다.

주요 내용으로는 왼쪽 그림과 같이 Namenode 와 Namespace 를 여러개 두고, 각각의 Namenode가 점유하고 있는 Namespace 영역들이 독립적으로 연대하여 동작할 수 있다.(그래서 Federation 이라는 단어를 썼나보다.)

HDFS Federation Architecture

HDFS Federation Architecture

그림에서 보는 것처럼 HDFS Federation 은  각각의 Namenode/Namespace를 두고 수평적 확장이 가능하게 하도록 되어 있다.이 방식을 통해 스토리지의 수평적 확장이 가능해지며, 1.x 버전에서 Namenode 대비 DataNode 의 수가 증가될 때의 r/w 성능문제와 다중 사용자 환경에서 다른 종류의 어플리케이션과 사용자 운영환경에서 과부하가 발생할 경우 해당 어플리케이션이나 사용자의 Namespace 만 차단하므로서 격리처리를 할 수 있다는 장점을 가지게 되었다..고 한다.(헥헥..길다)

2부에서..

3,213 total views, 13 views today

Leave a Reply