Hadoop 코어 컴포넌트 - 하둡 공통모듈

2022-01-22

.

Data_Engineering_TIL(20220120)

[학습자료]

인프런 “Hadoop 3.2.1 and Big data” 강의를 공부하고 정리한 내용입니다.

** URL : https://www.inflearn.com/course/하둡-빅데이터

[학습내용]

  • Hadoop의 핵심 컴포넌트(또는 스텍이라고도 부름)

(1) Hadoop Common - Libraries and Utilites

하둡 시스템 운영을 위한 라이브러리와 유틸리티를 말한다.

(2) HDFS

(3) Distributed Data Processing - Map/Reduce

(4) Resource Manager and Scheduler (YARN)

좋은 분산시스템의 핵심은 자원관리와 스케쥴링이라고 할 수 있는데 하둡이 얀을 네번째 핵심 컴포넌트로 넣은 이유가 바로 이 스케쥴링과 자원관리의 중요성 때문이다.

  • 하둡의 공통모듈은 하둡의 라이브러리와 유틸리티를 지칭한다.

  • 하둡 유틸리티의 특징

(1) 하둡은 언제든지 장애가 발생할 수 있다는 가정하에 이런 장애가 발생하면 하둡 프레임워크의 소프트웨어에 의해 대처가 가능하다.

(2) 자바나 C로 구현되어 있음.

  • 하둡 공통모듈 구성요소 및 특징

(1) CLI mini cluster

사용자가 클러스터의 특정 노드에서 CLI 명령어로 간단하게 하둡을 제어할 수 있다.

CLI mini cluster로 얀, 맵리듀스, HDFS 를 시작하거나 중지하는 등의 제어가 가능하다.

(2) 하둡 라이브러리

하둡 라이브러리는 .so로 끝나는 컴파일된 파일들을 말하며 libhadoop.so 형태가 대표적인 하둡 라이브러리 파일 형태이다.

그리고 이 라이브러리 파일들은 lib/native 디렉토리에 기본적으로 저장이 되어 있다.

아래와 같은 명령어로 실행하면 하둡 네이티브 라이브러리를 디스플레이 할 수 있다.

$ hadoop checknative -a

(3) 프록시 유저

프록시 유저 오브젝트 안에 superuser라는 하둡의 슈퍼유저가 존재한다. 이 사용자로 하둡 잡을 실행할 수 있다.

또한 joe라는 유저이름으로 HDFS에 접근할 수 있다.

슈퍼유저는 커버로스 크레덴셜을 갖고 있고, 조이는 없다. 그러나 조이라는 사용자 이름으로 네임노드나 잡 트레커에 접근이 가능한데

이는 슈퍼유저 커버로스 크레덴셜과 연결되어 있기 때문이다.

(4) Rack awareness

하둡은 렉을 인지할 수 있다.

예를 들어서 HDFS에서 하나의 데이터 블럭을 여러 랙에 분산하여 특정렉이 망가져도 대응할 수 있다.

또한 렉단위로 인지가 가능할 경우 네트워크 장애에도 대응할 수 있다.

(5) 시큐어 모드

시큐어 모드를 사용하게 되면 모든 사용자는 커버로스 인증을 받아서 하둡의 서비스에 접근해야 한다.

시큐어 모드는 이런 인증외에도 권한관리, 데이터 암호화 등도 가능하다.

(6) 서비스레벨에서 권한부여

예를 들어서 맵리듀스 잡을 위해서 특정사용자들에 대해서 하둡잡을 실행하도록 접근 및 실행권한을 부여한다.

(7) HTTP 인증

네임노드, 리소스매니저 웹콘솔 등에 대해서 HTTP 를 통해서 커버로스 인증을 하여 접근할 수 있는 기능을 제공한다.

(8) Credential Provider API

Credential Provider API는 확장가능한 자격증명 API 이다.

이 API를 이용해서 스토리지 접근이나 매니징을 제어할 수 있다.

(9) Hadoop KMS

하둡 키관리 서버는 하둡의 키 제공자로서 Credential Provider API를 기반으로하는 암호화 키 매니지먼트 서버이다.

Hadoop KMS은 자바기반의 어플리케이션이며 Hadoop KMS는 HTTP 기반의 REST API를 사용하는 클라이언트&서버 구조를 제공한다.

(10) Hadoop Tracing

HDFS에 대한 추적관리가 가능하다.

아래와 같은 명령어를 이용해서 각각의 서버의 하둡 트레이싱 설정을 업데이트 할 수 있다.

$ hadoop trace

(11) Unix shell guide

하둡은 기본적으로 쉘 명령어로 컨트롤 되는 환경변수를 지정해서 제어가 가능하다.