SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
HDFS 훑어보기
최범균 (2013-12-05)
목적
● HDFS의 기본 동작 방식 이해
○ 구조
○ 데이터 흐름
○ 장애 상황
HDFS
● Hadoop Distributed FileSystem
○ 기본적으로 파일 시스템

● 주요 특징
○
○
○

○

블록 단위 파일 보관
■ 파일을 블록 단위로 나눠서 보관 (기본설정: 64M)
분산 파일 시스템
■ 블록을 다중 노드에 분산해서 보관
리플리케이션
■ 하나의 블록은 여러 노드에 복제
■ 특정 노드 장애에 무정지 대응
범용 장비 사용
HDFS는 파일 시스템
● 파일 시스템에 접근하기 위한 쉘스크립트(명
령행 인터페이스) 제공
$ hadoop fs -copyFromLocal typesafe-activator-1.0.0.zip hdfs://localhost/typesafe.zip
$ hadoop fs -ls hdfs://localhost/
Found 2 items
-rw-r--r-- 1 madvirus supergroup 125491 2013-12-02 18:00 /passion.jpg
-rw-r--r-- 1 madvirus supergroup 264523514 2013-12-02 18:01 /typesafe.zip
$ hadoop fs -copyToLocal hdfs://localhost/img/passion.jpg passion2.jpg

● 클라이언트
○ 쉘 스크립트, 자바 API, HTTP 등 제공
HDFS 블록
● 블록
○ HDFS에서의 파일은 블록 크기로 분리되어 저장
○ 기본 블록 크기는 64MB (128MB로 많이 사용)
○ 파일 분리 예
■ 256MB 파일은 64M 네 개의 블록으로 분리되어
저장 (즉, 4개의 파일로 분리되어 저장)
■ 블록 크기보다 작은 파일은 단일 블록으로 저장
●

이 경우, 블록 파일의 크기는 실제 파일 크기임

○ 단일 디스크보다 더 큰 파일을 보관할 수 있음
○ 복제 단위
■ 노드 간 데이터 복사는 블록 단위로 됨
HDFS의 구조

네임노드

하둡 클라이언트

RPC

Heart Beat, 블록 정보(리스트) 보고

RPC

Streaming

- 파일 시스템 관리 (디렉토리/파일 정보)
- 파일-블록-데이터노드 매핑 정보
- SPOF

파일 읽기/쓰
기
데이터
노드

데이터
노드

데이터
노드

- 블록들을 저장 (즉, 파일의 일부씩 보관)
- 하나의 완전한 파일은 여러 노드에 블록으로 분리되어 보관
파일 읽기
1. 파일의 블록들이 보관된
노드 위치 구하기
하둡 클라이언트

네임노드
2. 블록을 보관한 노드 위치 제
공.
4. 파일 읽기

3. 파일 읽기

데이터
노드

데이터
노드

데이터
노드

클라이언트 위치와 데이터
노드 위치를 고려해서 노드
목록 제공

하둡 클라이언트는 데이터 노드로 연
결이 안 되거나 읽은 블록이 깨져 있을
경우, 네임노드에 해당 블록과 데이터
노드를 통지하고, 다른 데이터노드에
서 블록 읽기를 시도
파일 쓰기
1. 파일 생성 정보 전송 (첫 번째
블록 크기 만큼 로컬에 쌓이면)
2. 블록을 보관할 노드 목록 요청
하둡 클라이언트
3. 블록을 보관할 노드 목록 제공

네임노드

6.완료
4.목록 첫 번째 노
드에 쓰기

5. 복제
데이터
노드

5. 복제
데이터
노드

* 모든 블록을 처리할 때 까지 2-5 과정 반복

데이터
노드
블록을 보관할 노드 선택은?
● 한 랙에 동일 블록 복제본이 존재하지 않도록
○
○

첫 번째 replica는 가까운 노드(랙)에 보관 또는 임의 노드 선택
두 번째와 세 번째는 첫 번째와 다른 랙에 보관
■ 두 번째/세 번째는 동일 랙에 보관

● 데이터 가용성, 읽기/쓰기 성능 고려
○
○

한 랙이 장애나더라도 서비스 가능
쓰기 과정에서 블록 복제 시, 랙 간 데이터 이동은 1회
랙1
데이터노드1-1

랙2
데이터노드2-1

데이터노드2-2
랙을 아는 방법
● 마스터 노드 네트워크 위상(topology) 관리
○ 외부 설정(+스크립트)을 주로 이용
■ 커스텀 구현도 가능
dnode1
dnode2
dnode3

/dc1/rack1
/dc1/rack1
/dc1/rack2
dc1

● 트리 구조로 거리 구함
rack1

dnode1

dnode2

rack2

dnode3
네임노드 데이터
● 메모리
○ 파일 시스템 메타 데이터
■
■

디렉토리, 파일명, 블록, 블록-데이터노드 매핑 정보
톰 화이트, “경험상 백만 블록 당1,000MB 메모리 사용(보수적)”

● 파일
○ 두 개의 파일
■ edits: 변경 내역
■ fsimage: 특정 시점의 데이터 스냅샷
●
●

디렉토리, 파일명, 블록, 상태 정보
블록-데이터노드 매핑 정보는 포함하지 않음
○ 이 정보는 네임노드 구동 시점에, 데이터노드로부터 받음
네임노드 구동 과정
1. 파일로부터 메모리에 데이터 생성
a. fsimage를 메모리에 로딩
b. edits를 읽어와 메모리에 변경 내역 반영

2. 스냅샷 생성
a. 현재의 메모리 상태를 fsimage로 내림
b. 빈 edits 생성

3. 데이터 노드로부터 블록 정보 수신
a. 메모리에 블록-데이터노드 매핑 정보 생성

4. 정상 서비스 시작
안전모드: 1~3 과정, 네임 노드 서비스 안 됨
보조 네임노드
● edits는 최초 재시작 할 때만 빔(empty)
○

운영 중 상태에서 edits가 무한정 커지게 됨

● 보조 네임노드 → edits 크기 정리
네임노드
edits

보조 네임노드
fsimage

1. edits 순환
2. 복사
(HTTP)

edits.new

edits

fsimage
3. 병합

fsimage.ckpt
5. fsimage 반영
edits.new를 edits로
edits

fsimage.ckpt
4. 전송
(HTTP)

fsimage
출처: 하둡 완벽 가이드
HDFS 장애
● 블록 깨짐
● 데이터 노드 장애
● 네임 노드 장애
HDFS 장애: 블록 깨짐
● 체크섬 파일: 블록과 함께 생성
○ 체크섬 파일은 데이터 노드에 함께 보관

● 데이터노드:
○ 주기적으로 블록 스캐너 실행 (체크섬 오류 확인)
■ 문제 있는 블록을 네임노드에 통지

● 클라이언트
○ 블록을 읽을 때 체크섬도 읽어와 오류 확인
○ 오류 있을 시, 네임노드에 해당 블록 오류 통지

● 네임노드
○ 통지받은 오류 블록에 해당하는 다른 복제본 복사
○ 오류 블록 소유 데이터 노드에 삭제 지시
HDFS 장애 대응: 데이터노드 장애
● 데이터노드 → 네임노드: heart beat 전송
○ 주기적으로 전송

● 네임노드
○ 데이터노드의 heart beat이 없으면 장애로 판단
○ 장애 데이터노드를 서비스 대상에서 제외
○ 장애 데이터노드가 포함한 블록들에 대한 복제 수행
해서 복제본 개수를 맞춤
HDFS 장애 대응: 네임노드
● 하둡1
○ SPOF
○ 수동 처리

● 최소
○ 공유파일 시스템(NFS 같은 것)에 edits와 fsimage 보
관
○ 노드 장애 발생시, 다른 장비를 네임노드로 사용
■ 데이터노드로부터 블록 정보 수신 필요

● 업체 별 지원
○ CDH4 Auto-Failover, ZooKeeper 저널
■ Active-Standby로 구성 (하둡2 방식과 동일?)
HDFS 장애 대응: 네임노드
● 하둡2: HA 지원 (Active-Standby), 수동 처리
- 도구를 이용해서 수동으로 네임
노드의 상태를 변경

haadmin 도구

Active 네임노드의 변경 내
역을 Standby 네임노드에
복사

네임노드
Active

네임노드
Standby

저널노드
(Journal)

Active 상태의 네임
노드와 통신
클라이언트
(ConfiguredFailover
ProxyProvider)

- 보조 네임노드
역할 수행

- 양쪽에 heartbeat, 블록 정보 보냄
데이터노드

* 저널노드 대신 NAS같은 NFS를 이용 가능
HDFS 장애 대응: 네임노드
● 하둡2: HA 지원 (Active-Standby), 자동 처리
ZooKeeper

Zookeeper/ZKFC가 Active 네임노드 장애시
Standby 네임노드 상태를 Active로 전환 처리

ZKFailover
Controller

ZKFailover
Controller

네임노드
Active

네임노드
Standby

저널노드
(Journal)
기타
● 밸런서
○ 사용률이 높은 데이터노드의 블록을 사용률이 낮은
데이터노드로 이동
○ 하둡 클러스터에서 백그라운드로 동작

● 하둡 아카이브
○ 하둡에 보관된 여러 파일을 아카이브(1개 파일)로 묶
음
○ 아카이브에 포함된 파일을 조회/접근 가능
○ 작은 파일들을 1개 파일로 전환해서 네임노드의 메모
리 사용량 감소

Mais conteúdo relacionado

Mais procurados

Advanced RAC troubleshooting: Network
Advanced RAC troubleshooting: NetworkAdvanced RAC troubleshooting: Network
Advanced RAC troubleshooting: NetworkRiyaj Shamsudeen
 
Introduction to RDFa
Introduction to RDFaIntroduction to RDFa
Introduction to RDFaIvan Herman
 
Cassandra concepts, patterns and anti-patterns
Cassandra concepts, patterns and anti-patternsCassandra concepts, patterns and anti-patterns
Cassandra concepts, patterns and anti-patternsDave Gardner
 
Scaling Hadoop at LinkedIn
Scaling Hadoop at LinkedInScaling Hadoop at LinkedIn
Scaling Hadoop at LinkedInDataWorks Summit
 
EDB Failover Manager - Features and Demo
EDB Failover Manager - Features and DemoEDB Failover Manager - Features and Demo
EDB Failover Manager - Features and DemoEDB
 
Kubernetes Failure Stories, or: How to Crash Your Cluster - ContainerDays EU ...
Kubernetes Failure Stories, or: How to Crash Your Cluster - ContainerDays EU ...Kubernetes Failure Stories, or: How to Crash Your Cluster - ContainerDays EU ...
Kubernetes Failure Stories, or: How to Crash Your Cluster - ContainerDays EU ...Henning Jacobs
 
Monitoring with Prometheus
Monitoring with PrometheusMonitoring with Prometheus
Monitoring with PrometheusShiao-An Yuan
 
Rsyslog vs Systemd Journal Presentation
Rsyslog vs Systemd Journal PresentationRsyslog vs Systemd Journal Presentation
Rsyslog vs Systemd Journal PresentationRainer Gerhards
 
Advanced backup methods (Postgres@CERN)
Advanced backup methods (Postgres@CERN)Advanced backup methods (Postgres@CERN)
Advanced backup methods (Postgres@CERN)Anastasia Lubennikova
 
Scylla Summit 2022: The Future of Consensus in ScyllaDB 5.0 and Beyond
Scylla Summit 2022: The Future of Consensus in ScyllaDB 5.0 and BeyondScylla Summit 2022: The Future of Consensus in ScyllaDB 5.0 and Beyond
Scylla Summit 2022: The Future of Consensus in ScyllaDB 5.0 and BeyondScyllaDB
 
Apache Arrow: High Performance Columnar Data Framework
Apache Arrow: High Performance Columnar Data FrameworkApache Arrow: High Performance Columnar Data Framework
Apache Arrow: High Performance Columnar Data FrameworkWes McKinney
 
A Thorough Comparison of Delta Lake, Iceberg and Hudi
A Thorough Comparison of Delta Lake, Iceberg and HudiA Thorough Comparison of Delta Lake, Iceberg and Hudi
A Thorough Comparison of Delta Lake, Iceberg and HudiDatabricks
 
Stream Processing Frameworks
Stream Processing FrameworksStream Processing Frameworks
Stream Processing FrameworksSirKetchup
 
Inside HDFS Append
Inside HDFS AppendInside HDFS Append
Inside HDFS AppendYue Chen
 
Live Demo: Introducing the Spark Connector for MongoDB
Live Demo: Introducing the Spark Connector for MongoDBLive Demo: Introducing the Spark Connector for MongoDB
Live Demo: Introducing the Spark Connector for MongoDBMongoDB
 
SeaweedFS introduction
SeaweedFS introductionSeaweedFS introduction
SeaweedFS introductionchrislusf
 
Using S3 Select to Deliver 100X Performance Improvements Versus the Public Cloud
Using S3 Select to Deliver 100X Performance Improvements Versus the Public CloudUsing S3 Select to Deliver 100X Performance Improvements Versus the Public Cloud
Using S3 Select to Deliver 100X Performance Improvements Versus the Public CloudDatabricks
 

Mais procurados (20)

Advanced RAC troubleshooting: Network
Advanced RAC troubleshooting: NetworkAdvanced RAC troubleshooting: Network
Advanced RAC troubleshooting: Network
 
Introduction to RDFa
Introduction to RDFaIntroduction to RDFa
Introduction to RDFa
 
Cassandra concepts, patterns and anti-patterns
Cassandra concepts, patterns and anti-patternsCassandra concepts, patterns and anti-patterns
Cassandra concepts, patterns and anti-patterns
 
Scaling Hadoop at LinkedIn
Scaling Hadoop at LinkedInScaling Hadoop at LinkedIn
Scaling Hadoop at LinkedIn
 
Hadoop HDFS
Hadoop HDFSHadoop HDFS
Hadoop HDFS
 
EDB Failover Manager - Features and Demo
EDB Failover Manager - Features and DemoEDB Failover Manager - Features and Demo
EDB Failover Manager - Features and Demo
 
Kubernetes Failure Stories, or: How to Crash Your Cluster - ContainerDays EU ...
Kubernetes Failure Stories, or: How to Crash Your Cluster - ContainerDays EU ...Kubernetes Failure Stories, or: How to Crash Your Cluster - ContainerDays EU ...
Kubernetes Failure Stories, or: How to Crash Your Cluster - ContainerDays EU ...
 
Monitoring with Prometheus
Monitoring with PrometheusMonitoring with Prometheus
Monitoring with Prometheus
 
Rsyslog vs Systemd Journal Presentation
Rsyslog vs Systemd Journal PresentationRsyslog vs Systemd Journal Presentation
Rsyslog vs Systemd Journal Presentation
 
Google's Dremel
Google's DremelGoogle's Dremel
Google's Dremel
 
Advanced backup methods (Postgres@CERN)
Advanced backup methods (Postgres@CERN)Advanced backup methods (Postgres@CERN)
Advanced backup methods (Postgres@CERN)
 
Hadoop발표자료
Hadoop발표자료Hadoop발표자료
Hadoop발표자료
 
Scylla Summit 2022: The Future of Consensus in ScyllaDB 5.0 and Beyond
Scylla Summit 2022: The Future of Consensus in ScyllaDB 5.0 and BeyondScylla Summit 2022: The Future of Consensus in ScyllaDB 5.0 and Beyond
Scylla Summit 2022: The Future of Consensus in ScyllaDB 5.0 and Beyond
 
Apache Arrow: High Performance Columnar Data Framework
Apache Arrow: High Performance Columnar Data FrameworkApache Arrow: High Performance Columnar Data Framework
Apache Arrow: High Performance Columnar Data Framework
 
A Thorough Comparison of Delta Lake, Iceberg and Hudi
A Thorough Comparison of Delta Lake, Iceberg and HudiA Thorough Comparison of Delta Lake, Iceberg and Hudi
A Thorough Comparison of Delta Lake, Iceberg and Hudi
 
Stream Processing Frameworks
Stream Processing FrameworksStream Processing Frameworks
Stream Processing Frameworks
 
Inside HDFS Append
Inside HDFS AppendInside HDFS Append
Inside HDFS Append
 
Live Demo: Introducing the Spark Connector for MongoDB
Live Demo: Introducing the Spark Connector for MongoDBLive Demo: Introducing the Spark Connector for MongoDB
Live Demo: Introducing the Spark Connector for MongoDB
 
SeaweedFS introduction
SeaweedFS introductionSeaweedFS introduction
SeaweedFS introduction
 
Using S3 Select to Deliver 100X Performance Improvements Versus the Public Cloud
Using S3 Select to Deliver 100X Performance Improvements Versus the Public CloudUsing S3 Select to Deliver 100X Performance Improvements Versus the Public Cloud
Using S3 Select to Deliver 100X Performance Improvements Versus the Public Cloud
 

Destaque

하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기beom kyun choi
 
Hadoop Introduction (1.0)
Hadoop Introduction (1.0)Hadoop Introduction (1.0)
Hadoop Introduction (1.0)Keeyong Han
 
빅데이터실습교육 소비분야 영남대_언론정보_20141117
빅데이터실습교육 소비분야 영남대_언론정보_20141117빅데이터실습교육 소비분야 영남대_언론정보_20141117
빅데이터실습교육 소비분야 영남대_언론정보_20141117Han Woo PARK
 
하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다민철 정민철
 
빅데이터분석실습 농산물중급분야 V0.9
빅데이터분석실습 농산물중급분야 V0.9빅데이터분석실습 농산물중급분야 V0.9
빅데이터분석실습 농산물중급분야 V0.9Han Woo PARK
 
[2A7]Linkedin'sDataScienceWhyIsItScience
[2A7]Linkedin'sDataScienceWhyIsItScience[2A7]Linkedin'sDataScienceWhyIsItScience
[2A7]Linkedin'sDataScienceWhyIsItScienceNAVER D2
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for HadoopSeungYong Baek
 
TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나beom kyun choi
 
Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기SangWoo Kim
 
Apache spark 소개 및 실습
Apache spark 소개 및 실습Apache spark 소개 및 실습
Apache spark 소개 및 실습동현 강
 

Destaque (12)

하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기
 
Hadoop Introduction (1.0)
Hadoop Introduction (1.0)Hadoop Introduction (1.0)
Hadoop Introduction (1.0)
 
HBase 훑어보기
HBase 훑어보기HBase 훑어보기
HBase 훑어보기
 
빅데이터실습교육 소비분야 영남대_언론정보_20141117
빅데이터실습교육 소비분야 영남대_언론정보_20141117빅데이터실습교육 소비분야 영남대_언론정보_20141117
빅데이터실습교육 소비분야 영남대_언론정보_20141117
 
하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다하둡 좋은약이지만 만병통치약은 아니다
하둡 좋은약이지만 만병통치약은 아니다
 
빅데이터분석실습 농산물중급분야 V0.9
빅데이터분석실습 농산물중급분야 V0.9빅데이터분석실습 농산물중급분야 V0.9
빅데이터분석실습 농산물중급분야 V0.9
 
[2A7]Linkedin'sDataScienceWhyIsItScience
[2A7]Linkedin'sDataScienceWhyIsItScience[2A7]Linkedin'sDataScienceWhyIsItScience
[2A7]Linkedin'sDataScienceWhyIsItScience
 
Zookeeper 소개
Zookeeper 소개Zookeeper 소개
Zookeeper 소개
 
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
하둡 알아보기(Learn about Hadoop basic), NetApp FAS NFS Connector for Hadoop
 
TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나
 
Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기Zeppelin(Spark)으로 데이터 분석하기
Zeppelin(Spark)으로 데이터 분석하기
 
Apache spark 소개 및 실습
Apache spark 소개 및 실습Apache spark 소개 및 실습
Apache spark 소개 및 실습
 

Semelhante a 하둡 HDFS 훑어보기

Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3Sung-jae Park
 
Hadoop Overview 2
Hadoop Overview 2Hadoop Overview 2
Hadoop Overview 2Kay Kim
 
Hadoop Overview 1
Hadoop Overview 1Hadoop Overview 1
Hadoop Overview 1Kay Kim
 
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0sprdd
 
Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0sprdd
 
Java 초보자를 위한 hadoop 설정
Java 초보자를 위한 hadoop 설정Java 초보자를 위한 hadoop 설정
Java 초보자를 위한 hadoop 설정HyeonSeok Choi
 
Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0sprdd
 
Glusterfs 구성제안 v1.0
Glusterfs 구성제안 v1.0Glusterfs 구성제안 v1.0
Glusterfs 구성제안 v1.0sprdd
 
Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0sprdd
 
NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템tcaesvk
 
Trace memory leak with gdb (GDB로 메모리 누수 찾기)
Trace memory  leak with gdb (GDB로 메모리 누수 찾기)Trace memory  leak with gdb (GDB로 메모리 누수 찾기)
Trace memory leak with gdb (GDB로 메모리 누수 찾기)Jun Hong Kim
 
Clonezilla se
Clonezilla seClonezilla se
Clonezilla se석 허
 
Object storage의 이해와 활용
Object storage의 이해와 활용Object storage의 이해와 활용
Object storage의 이해와 활용Seoro Kim
 
Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Gruter
 

Semelhante a 하둡 HDFS 훑어보기 (20)

Hdfs
HdfsHdfs
Hdfs
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3
 
Hadoop Overview 2
Hadoop Overview 2Hadoop Overview 2
Hadoop Overview 2
 
Hadoop Overview 1
Hadoop Overview 1Hadoop Overview 1
Hadoop Overview 1
 
Hadoop administration
Hadoop administrationHadoop administration
Hadoop administration
 
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
 
Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0
 
Network researching
Network researchingNetwork researching
Network researching
 
Java 초보자를 위한 hadoop 설정
Java 초보자를 위한 hadoop 설정Java 초보자를 위한 hadoop 설정
Java 초보자를 위한 hadoop 설정
 
System+os study 6
System+os study 6System+os study 6
System+os study 6
 
Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0
 
Glusterfs 구성제안 v1.0
Glusterfs 구성제안 v1.0Glusterfs 구성제안 v1.0
Glusterfs 구성제안 v1.0
 
Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0Glusterfs 구성제안서 v1.0
Glusterfs 구성제안서 v1.0
 
NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템NDC 2015 마비노기 듀얼 패치 시스템
NDC 2015 마비노기 듀얼 패치 시스템
 
하둡관리
하둡관리하둡관리
하둡관리
 
저장장치
저장장치저장장치
저장장치
 
Trace memory leak with gdb (GDB로 메모리 누수 찾기)
Trace memory  leak with gdb (GDB로 메모리 누수 찾기)Trace memory  leak with gdb (GDB로 메모리 누수 찾기)
Trace memory leak with gdb (GDB로 메모리 누수 찾기)
 
Clonezilla se
Clonezilla seClonezilla se
Clonezilla se
 
Object storage의 이해와 활용
Object storage의 이해와 활용Object storage의 이해와 활용
Object storage의 이해와 활용
 
Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013Tajo and SQL-on-Hadoop in Tech Planet 2013
Tajo and SQL-on-Hadoop in Tech Planet 2013
 

Mais de beom kyun choi

옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개beom kyun choi
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기beom kyun choi
 
keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)beom kyun choi
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀beom kyun choi
 
Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugbeom kyun choi
 
파이썬 언어 기초
파이썬 언어 기초파이썬 언어 기초
파이썬 언어 기초beom kyun choi
 
도메인구현 KSUG 20151128
도메인구현 KSUG 20151128도메인구현 KSUG 20151128
도메인구현 KSUG 20151128beom kyun choi
 
Event source 학습 내용 공유
Event source 학습 내용 공유Event source 학습 내용 공유
Event source 학습 내용 공유beom kyun choi
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰beom kyun choi
 
ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료beom kyun choi
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)beom kyun choi
 
리뷰의 기술 소개
리뷰의 기술 소개리뷰의 기술 소개
리뷰의 기술 소개beom kyun choi
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해beom kyun choi
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개beom kyun choi
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개beom kyun choi
 
하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기beom kyun choi
 
차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)beom kyun choi
 

Mais de beom kyun choi (20)

옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
옛날 웹 개발자가 잠깐 맛본 Vue.js 소개
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기
 
keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)
 
DDD 준비 서문래
DDD 준비 서문래DDD 준비 서문래
DDD 준비 서문래
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀
 
Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksug
 
MVP 패턴 소개
MVP 패턴 소개MVP 패턴 소개
MVP 패턴 소개
 
파이썬 언어 기초
파이썬 언어 기초파이썬 언어 기초
파이썬 언어 기초
 
도메인구현 KSUG 20151128
도메인구현 KSUG 20151128도메인구현 KSUG 20151128
도메인구현 KSUG 20151128
 
Event source 학습 내용 공유
Event source 학습 내용 공유Event source 학습 내용 공유
Event source 학습 내용 공유
 
Spring Boot 소개
Spring Boot 소개Spring Boot 소개
Spring Boot 소개
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰
 
ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료
 
Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)Ji 개발 리뷰 (신림프로그래머)
Ji 개발 리뷰 (신림프로그래머)
 
리뷰의 기술 소개
리뷰의 기술 소개리뷰의 기술 소개
리뷰의 기술 소개
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개
 
하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기
 
차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)
 

하둡 HDFS 훑어보기

  • 2. 목적 ● HDFS의 기본 동작 방식 이해 ○ 구조 ○ 데이터 흐름 ○ 장애 상황
  • 3. HDFS ● Hadoop Distributed FileSystem ○ 기본적으로 파일 시스템 ● 주요 특징 ○ ○ ○ ○ 블록 단위 파일 보관 ■ 파일을 블록 단위로 나눠서 보관 (기본설정: 64M) 분산 파일 시스템 ■ 블록을 다중 노드에 분산해서 보관 리플리케이션 ■ 하나의 블록은 여러 노드에 복제 ■ 특정 노드 장애에 무정지 대응 범용 장비 사용
  • 4. HDFS는 파일 시스템 ● 파일 시스템에 접근하기 위한 쉘스크립트(명 령행 인터페이스) 제공 $ hadoop fs -copyFromLocal typesafe-activator-1.0.0.zip hdfs://localhost/typesafe.zip $ hadoop fs -ls hdfs://localhost/ Found 2 items -rw-r--r-- 1 madvirus supergroup 125491 2013-12-02 18:00 /passion.jpg -rw-r--r-- 1 madvirus supergroup 264523514 2013-12-02 18:01 /typesafe.zip $ hadoop fs -copyToLocal hdfs://localhost/img/passion.jpg passion2.jpg ● 클라이언트 ○ 쉘 스크립트, 자바 API, HTTP 등 제공
  • 5. HDFS 블록 ● 블록 ○ HDFS에서의 파일은 블록 크기로 분리되어 저장 ○ 기본 블록 크기는 64MB (128MB로 많이 사용) ○ 파일 분리 예 ■ 256MB 파일은 64M 네 개의 블록으로 분리되어 저장 (즉, 4개의 파일로 분리되어 저장) ■ 블록 크기보다 작은 파일은 단일 블록으로 저장 ● 이 경우, 블록 파일의 크기는 실제 파일 크기임 ○ 단일 디스크보다 더 큰 파일을 보관할 수 있음 ○ 복제 단위 ■ 노드 간 데이터 복사는 블록 단위로 됨
  • 6. HDFS의 구조 네임노드 하둡 클라이언트 RPC Heart Beat, 블록 정보(리스트) 보고 RPC Streaming - 파일 시스템 관리 (디렉토리/파일 정보) - 파일-블록-데이터노드 매핑 정보 - SPOF 파일 읽기/쓰 기 데이터 노드 데이터 노드 데이터 노드 - 블록들을 저장 (즉, 파일의 일부씩 보관) - 하나의 완전한 파일은 여러 노드에 블록으로 분리되어 보관
  • 7. 파일 읽기 1. 파일의 블록들이 보관된 노드 위치 구하기 하둡 클라이언트 네임노드 2. 블록을 보관한 노드 위치 제 공. 4. 파일 읽기 3. 파일 읽기 데이터 노드 데이터 노드 데이터 노드 클라이언트 위치와 데이터 노드 위치를 고려해서 노드 목록 제공 하둡 클라이언트는 데이터 노드로 연 결이 안 되거나 읽은 블록이 깨져 있을 경우, 네임노드에 해당 블록과 데이터 노드를 통지하고, 다른 데이터노드에 서 블록 읽기를 시도
  • 8. 파일 쓰기 1. 파일 생성 정보 전송 (첫 번째 블록 크기 만큼 로컬에 쌓이면) 2. 블록을 보관할 노드 목록 요청 하둡 클라이언트 3. 블록을 보관할 노드 목록 제공 네임노드 6.완료 4.목록 첫 번째 노 드에 쓰기 5. 복제 데이터 노드 5. 복제 데이터 노드 * 모든 블록을 처리할 때 까지 2-5 과정 반복 데이터 노드
  • 9. 블록을 보관할 노드 선택은? ● 한 랙에 동일 블록 복제본이 존재하지 않도록 ○ ○ 첫 번째 replica는 가까운 노드(랙)에 보관 또는 임의 노드 선택 두 번째와 세 번째는 첫 번째와 다른 랙에 보관 ■ 두 번째/세 번째는 동일 랙에 보관 ● 데이터 가용성, 읽기/쓰기 성능 고려 ○ ○ 한 랙이 장애나더라도 서비스 가능 쓰기 과정에서 블록 복제 시, 랙 간 데이터 이동은 1회 랙1 데이터노드1-1 랙2 데이터노드2-1 데이터노드2-2
  • 10. 랙을 아는 방법 ● 마스터 노드 네트워크 위상(topology) 관리 ○ 외부 설정(+스크립트)을 주로 이용 ■ 커스텀 구현도 가능 dnode1 dnode2 dnode3 /dc1/rack1 /dc1/rack1 /dc1/rack2 dc1 ● 트리 구조로 거리 구함 rack1 dnode1 dnode2 rack2 dnode3
  • 11. 네임노드 데이터 ● 메모리 ○ 파일 시스템 메타 데이터 ■ ■ 디렉토리, 파일명, 블록, 블록-데이터노드 매핑 정보 톰 화이트, “경험상 백만 블록 당1,000MB 메모리 사용(보수적)” ● 파일 ○ 두 개의 파일 ■ edits: 변경 내역 ■ fsimage: 특정 시점의 데이터 스냅샷 ● ● 디렉토리, 파일명, 블록, 상태 정보 블록-데이터노드 매핑 정보는 포함하지 않음 ○ 이 정보는 네임노드 구동 시점에, 데이터노드로부터 받음
  • 12. 네임노드 구동 과정 1. 파일로부터 메모리에 데이터 생성 a. fsimage를 메모리에 로딩 b. edits를 읽어와 메모리에 변경 내역 반영 2. 스냅샷 생성 a. 현재의 메모리 상태를 fsimage로 내림 b. 빈 edits 생성 3. 데이터 노드로부터 블록 정보 수신 a. 메모리에 블록-데이터노드 매핑 정보 생성 4. 정상 서비스 시작 안전모드: 1~3 과정, 네임 노드 서비스 안 됨
  • 13. 보조 네임노드 ● edits는 최초 재시작 할 때만 빔(empty) ○ 운영 중 상태에서 edits가 무한정 커지게 됨 ● 보조 네임노드 → edits 크기 정리 네임노드 edits 보조 네임노드 fsimage 1. edits 순환 2. 복사 (HTTP) edits.new edits fsimage 3. 병합 fsimage.ckpt 5. fsimage 반영 edits.new를 edits로 edits fsimage.ckpt 4. 전송 (HTTP) fsimage 출처: 하둡 완벽 가이드
  • 14. HDFS 장애 ● 블록 깨짐 ● 데이터 노드 장애 ● 네임 노드 장애
  • 15. HDFS 장애: 블록 깨짐 ● 체크섬 파일: 블록과 함께 생성 ○ 체크섬 파일은 데이터 노드에 함께 보관 ● 데이터노드: ○ 주기적으로 블록 스캐너 실행 (체크섬 오류 확인) ■ 문제 있는 블록을 네임노드에 통지 ● 클라이언트 ○ 블록을 읽을 때 체크섬도 읽어와 오류 확인 ○ 오류 있을 시, 네임노드에 해당 블록 오류 통지 ● 네임노드 ○ 통지받은 오류 블록에 해당하는 다른 복제본 복사 ○ 오류 블록 소유 데이터 노드에 삭제 지시
  • 16. HDFS 장애 대응: 데이터노드 장애 ● 데이터노드 → 네임노드: heart beat 전송 ○ 주기적으로 전송 ● 네임노드 ○ 데이터노드의 heart beat이 없으면 장애로 판단 ○ 장애 데이터노드를 서비스 대상에서 제외 ○ 장애 데이터노드가 포함한 블록들에 대한 복제 수행 해서 복제본 개수를 맞춤
  • 17. HDFS 장애 대응: 네임노드 ● 하둡1 ○ SPOF ○ 수동 처리 ● 최소 ○ 공유파일 시스템(NFS 같은 것)에 edits와 fsimage 보 관 ○ 노드 장애 발생시, 다른 장비를 네임노드로 사용 ■ 데이터노드로부터 블록 정보 수신 필요 ● 업체 별 지원 ○ CDH4 Auto-Failover, ZooKeeper 저널 ■ Active-Standby로 구성 (하둡2 방식과 동일?)
  • 18. HDFS 장애 대응: 네임노드 ● 하둡2: HA 지원 (Active-Standby), 수동 처리 - 도구를 이용해서 수동으로 네임 노드의 상태를 변경 haadmin 도구 Active 네임노드의 변경 내 역을 Standby 네임노드에 복사 네임노드 Active 네임노드 Standby 저널노드 (Journal) Active 상태의 네임 노드와 통신 클라이언트 (ConfiguredFailover ProxyProvider) - 보조 네임노드 역할 수행 - 양쪽에 heartbeat, 블록 정보 보냄 데이터노드 * 저널노드 대신 NAS같은 NFS를 이용 가능
  • 19. HDFS 장애 대응: 네임노드 ● 하둡2: HA 지원 (Active-Standby), 자동 처리 ZooKeeper Zookeeper/ZKFC가 Active 네임노드 장애시 Standby 네임노드 상태를 Active로 전환 처리 ZKFailover Controller ZKFailover Controller 네임노드 Active 네임노드 Standby 저널노드 (Journal)
  • 20. 기타 ● 밸런서 ○ 사용률이 높은 데이터노드의 블록을 사용률이 낮은 데이터노드로 이동 ○ 하둡 클러스터에서 백그라운드로 동작 ● 하둡 아카이브 ○ 하둡에 보관된 여러 파일을 아카이브(1개 파일)로 묶 음 ○ 아카이브에 포함된 파일을 조회/접근 가능 ○ 작은 파일들을 1개 파일로 전환해서 네임노드의 메모 리 사용량 감소