PLOD

[Hadoop]Hadoop and HDFS 본문

computer science/Cloud computing

[Hadoop]Hadoop and HDFS

훌룽이 2022. 11. 2. 14:40

Hadoop은 비정형 데이터를 관리하기 위해 생겨난 자바기반 프레임워크이다.  정형데이터는 RDBMS가 관리 할 수 있지만 비정형 데이터는 데이터의 크기와 또 그 데이터를 처리하고 보관하기 위한 비용이 크기 때문에 Hadoop이 생겨남 ,Hadoop은 분산처리를 위한 오픈소스 프레임워크이다
 -> Hadoop 은 RDBMS와 상호보완적 특징을 가진다

 

1. 하둡의 장점 

 

1) 오픈소스 프로젝트 -> SW license 비용부담이 적어짐

 

2) Commodity Hardware 

 

3) Scale - out  아키텍쳐

 

4) 테이터 복제를 통해 데이터 유실이나 장애 복구 가능 

 

5) 여러 대의 서버에 분산 저장 및 데이터가 자 데이터 분신 저장하고
각 서버에서 동시에 데이터 처리 -> Data Locality - 데이터 근접성

 

2. 하둡의 문제점

 

1) 고가용성(HA: High Availablity) 지원 -> high energy 필요

 

2) 파일 namespace 제한(메모리로 관리되기 때문)

 

3)데이터 수정 불가(한번 저장한 파일은 수정이 불가 하다 ) -> 파일 읽기나 배치 작업만이 Hadoop에 적합

 

4) POSIX 명령어 미지원(ex. rm , mv)

 

5)전문 업체 부족

 

 

2. AI, MachineLearning ,DeepLearning

인공지능 > 머신러닝 > 딥러닝 순서로 범위가 크다

 

1) AI : 사람처럼 학습하고 추론할 수 있는 지능을 가진 컴퓨터 시스템을 만드는 기술

 

2) Machine Learning :  머신러닝은 규칙을 일일이 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야 -> 프로그래머의 직접적인 개입이 필요

 

3) DeepLearning :  머신러닝 알고리즘 중 인공신경망을 기반으로 한 방법들을 통칭함, 머신러닝과의 차이점은 인공신경망은 특징 추출과정이 필요 없다는 것이다

 

HDFS(Hadoop Distributed Filesystem)

: 대용량 파일을 분산된 서버에 저장하고 그 저장된 데이터를 빠르게 처리할 수 있게 하는 파일 시스템 

 

 

 

HDFS의 특징

하둡은 비싸고 신뢰성 높은 하드웨어를 필요로 하지 않는다 또 하둡은 범용 하드웨어 클러스터에서 실행되도록 설계되었고 대규모일 경우 클러스터 전체에서 노드 장애가 발생할 가능성이 높다

-> HDFS는 이러한 하둡의 장애에도 불구하고 사용자의 눈에 띄는 중단 없이 작업을 계속 할 수 있도록 설계되었다. 

-> HDFS는 대기시간이 짧은 데이터 엑세스, 적은양의 파일들 , 여러 기록기와 임의 파일 수에 대해서는 동작을 잘 하지 않을 수 있다

 

메타데이터는 파일이름 ,파일 크기, 파일 생성시간, 파일 접근권한, 파일 소유자 및 그룹 소유자, 파일이 위치한 블록등으로 구성된다. 데이터 노드에서 전달하는  메타데이터를 받아서 전체 노드의 메타데이터 정보와 파일 정보를 묶어서 관리 

 

1) HDFS Block : 읽고 쓸 수 있는 한 단위를 의미한다. cost of seek를 최소화하는데 큰 블록이 사용된다. 각각의 블록들은 파일을 각각 datanode에 복제본을 만든다. datanode는 주기적으로 namenode에 heartbeat와 blockreport를 전달한다. heartbeat는 datanode의 동작여부를 판단하는데 사용되고, namenode는 heartbeat가 전달되지 않는 데이터노드는 동작하지 않는 것으로 판단하여 더이상 데이터를 저당하지 않도록 설정한다. blockreport로 블록의 변경사항을 체크하고 namenode의 metadata를 갱신한다. 

 

2) datanode: 파일을 저장하는 역할을 한다. 파일은 블록단위로 저장됨. 데이터노드는 주기적으로 네임노드에 하트비트와 블록리포트를 전달 

 

3)namenode : datanode로부터 매핑되는 파일블록들과 namespace tree 정보를 저장한다. , RAM에 위치한다. 

 

 

그런데 , 하둡을 2개 add 함으로써 HDFS High Availability를 보장할 수 있다. 그것을 위해서는 아래의 architecture change가 필요하다.

 

이름 노드 간에 편집 로그를 공유하기 위한 고가용성 공유 스토리지.
데이터 노드는 블록 보고서를 두 개의 이름 노드에 모두 전송해야 합니다.
클라이언트는 사용자에게 투명한 메커니즘을 사용하여 이름 노드 오류 해결을 처리하도록 구성해야 합니다.
보조 이름 노드의 역할은 활성 이름 노드의 네임스페이스에 대한 주기적인 체크포인트를 취하는 대기에서 사용됩니다.

Comments