SlideShare uma empresa Scribd logo
1 de 37
HDFS Architecture & Process
작성자 : 한정필
작성일 : 2017.08.10
On Hortonworks Data Platform
INDEX
01
02
03
04
05
06
07
08
09
10
HDFS Architecture
HDFS Process
HDFS Locality
HDFS High Availability
HDFS Health Check
HDFS Snapshot
HDFS ACL
HDFS Encryption zone
HDFS Java Heap Size
HDFS Parameter tuning
• HDFS(Hadoop Distributed File System)
– 대용량 데이터를 분산 처리할 수 있는 자바 기반의 오픈소스 프
레임워크 Hadoop 내의 데이터 분산 저장 서비스
• 주요 특징
▪ 블록 단위 파일 보관 : 파일을 블록 단위로 나눠서 보관(3 copy),
client는 나누어진 파일을 하나의 파일로 볼 수 있음
▪ 분산 파일 시스템 : 블록을 여러 노드에 분산해서 보관, 그러므로
단일 디스크보다 더 큰 파일을 저장할 수 있음
▪ Replication : 하나의 블록은 여러 노드에 복제되며, 이로 인하여
특정 노드 장애에 무 정지 대응
3
HDFS(Hadoop Distributed File System)의 기본 동작 방식과 구조에 대해 설명합니다.
1) HDFS란?
1. HDFS Architecture
• 주요 특징
▪ 매우 큰 파일을 효율적으로 저장하도록 고안됨
▪ 한번 쓰고 여러 번 읽는 것을 고려하여 설계
▪ 멀티 노드에 다수의 사본을 유지, 임의의 위치에 저장 불가
▪ 파일의 메타데이터당 메모리 소비하는 구조, 파일의 개수가 늘어
날 수록 메타데이터가 늘어나기 때문에 메모리 사용량 증가
▪ 단점
▪ 작은 파일을 많이 저장하는 데에는 부적합
▪ HDFS는 임의 변경(파일 수정)에 부적합 하여 데이터베이스의 파
일시스템으로 쓰기 부적합
▪ 빠른 응답속도(OLTP 등)를 고려하지 않는 설계
4
HDFS(Hadoop Distributed File System)의 기본 동작 방식과 구조에 대해 설명합니다.
1) HDFS란?
1. HDFS Architecture
5
HDFS(Hadoop Distributed File System)의 기본 동작 방식과 구조에 대해 설명합니다.
1) HDFS란?
1. HDFS Architecture
• Namenode
▪ 파일 시스템 관리
(디렉토리/파일정보)
▪ 파일-블록 매핑 정보 관리
(Metadata)
• Datanode
▪ 블록 Read & Write
▪ 하나의 Block 크기는 128MB
▪ 하나의 파일은 여러 노드에 블록으
로 분리되어 보관(3 copy)
▪ Secondary Namenode
▪ Standby 아님
▪ 항상 메타데이터의 최신본 유지
▪ 장애 발생 시 Secondary 정보로
Namenode 복원
Namenode와 Datanode는 통신을 통하여 지속적으로 Datanode의 상태와
블록의 상태를 Namenode에 업데이트 시킴
6
HDFS(Hadoop Distributed File System)의 기본 동작 방식과 구조에 대해 설명합니다.
1) Namenode 동작 방식
2. HDFS Process
• SNN이 fsimage 와 edits.new 를
일정시간 마다 merge 하고 이를
다시 NN에게 전달
• fsimage 는 NN의 메모리 상태를
가지고 있는 파일
• edits는 변경 사항을 가지고 있는
log 파일
7
HDFS(Hadoop Distributed File System)의 기본 동작 방식과 구조에 대해 설명합니다.
2) Namenode 동작 방식 - Namenode Startup Progress
2. HDFS Process
8
HDFS(Hadoop Distributed File System)의 기본 동작 방식과 구조에 대해 설명합니다.
3) HDFS Replication
2. HDFS Process
Rack 1 Rack 2 Rack 3 Rack 4
블록 복제본은 같은 노드에
존재하지 않도록,
같은 Rack에 존재하지 않
도록 저장하여
1 Node 또는 1 Rack 장애
시에도 HDFS에 대한
Read/Write가 정상적으로
이루어질 수 있음
9
HDFS(Hadoop Distributed File System)의 Read/Write 기본 동작 방식에 대해 설명합니다.
4) HDFS Block Write Operation
2. HDFS Process
Namenode
Datanodes
client
1. 파일 생성 정보 전송,
저장 공간 요청
2. 블록을 보관할 노드
목록 제공
3. 첫번째 노드에 Write
4. 복제 5. 복제
6. 완료 메시지 전송
* 파일의 모든 블록을 처리할 때 까지 반복
10
HDFS(Hadoop Distributed File System)의 Read/Write 기본 동작 방식에 대해 설명합니다.
5) HDFS Block Read/Write Operation
2. HDFS Process
11
HDFS(Hadoop Distributed File System)의 Block Status에 대해 설명합니다.
6) HDFS Block Status – 1
2. HDFS Process
• UNDER_CONSTRUCTION
• 원본 & 복제본 Block이 쓰여지고
있는 상태
• UNDER_RECOVERY
• UNDER_CONSTRUCTION 상태가
지속될 때 (클라이언트 요청 만료
등)
• COMMITTED
• Block이 처리 완료된 상태
• Namenode에서 Replication 개수,
Checksum확인이 완료되면
COMPLETE 상태로 변경됨
• COMPLETE
• Namenode가 모든 Block 프로세스
의 처리가 완료되었음을 확인
http://blog.cloudera.com/blog/2015/02/understanding-hdfs-
recovery-processes-part-1/
http://blog.cloudera.com/blog/2015/03/understanding-hdfs-
recovery-processes-part-2/
12
HDFS(Hadoop Distributed File System)의 Block Status에 대해 설명합니다.
7) HDFS Block Status – 2
2. HDFS Process
• FINALIZED
• 원본 & 복제본 포함 모든 Block의
쓰기가 완료된 상태
• RBW(Replica Being Written)
▪ Block이 쓰여지고 있는 상태
▪ RWR(Replica Waiting to be Recovered)
▪ 명확하지 않은 Block 상태
▪ RUR(Replica Under Recovery)
▪ 복구 중인 Block 상태
▪ TEMPORARY
▪ 임시 Block
• 분산 컴퓨팅의 성능 확보를 위한 핵심 요소
– 네트워크 대역폭
– 디스크 탐색 시간
– CPU 처리 시간
• 데이터 노드 프로세스는 동일 머신 상에 있는 데이터를 저장하고 처
리하기 때문에 노드 간 데이터 이동을 최소화 시킴(네트워크 대역폭
최소 소비)
• 클라우드 환경 또는 NAS를 이용해 Hadoop을 구축한다면 Data
Locality를 구현할 수 없으므로 성능 저하 발생
13
HDFS(Hadoop Distributed File System)의 Block Locality 에 대해 설명합니다.
6) HDFS Block Locality - 1
3. HDFS Locality
멀티테넌트 Hadoop 클러스터 운영 경험기
http://d2.naver.com/helloworld/0475200
• 같은 노드에 있는 데이터 우선 처리(Local)
14
HDFS(Hadoop Distributed File System)의 Block Locality 에 대해 설명합니다.
6) HDFS Block Locality - 2
3. HDFS Locality
• 같은 Rack에 있는 데이터 우선 처리(On-Rack)
15
HDFS(Hadoop Distributed File System)의 Block Locality 에 대해 설명합니다.
6) HDFS Block Locality - 3
3. HDFS Locality
• 다른 Rack에 있는 데이터 우선 처리(Off-Rack)
16
HDFS(Hadoop Distributed File System)의 Block Locality 에 대해 설명합니다.
6) HDFS Block Locality - 4
3. HDFS Locality
17
HDFS(Hadoop Distributed File System)의 Block Locality 에 대해 설명합니다.
6) HDFS Block Locality – Locality on MapReduce Job
3. HDFS Locality
18
HDFS(Hadoop Distributed File System)의 이중화(High Availability)에 대해 설명합니다.
1) HDFS Namenode HA
4. HDFS High Availability
19
HDFS(Hadoop Distributed File System)의 이중화(High Availability)에 대해 설명합니다.
2) HDFS Namenode HA
4. HDFS High Availability
Zookeeper : 네임서비스별 active/standby NameNode의 정보를 저장.
DFSZKFailoverController : NameNode를 모니터링 하고 있다가 active
NameNode가 죽으면, standby NameNode를 active로 전환시키고 죽은 active
NameNode를 클러스터에서 제외하고, Zookeeper에 정보를 갱신.
JournalNode : namespace가 변경될 때 발생하는 edit log를 저장함.
최소 3대 이상 홀수로 실행되어야 하며, (N/2)+1 이상의 JournalNode가 살아있
어야 정상 동작이 보장됨.
• HDFS는 Block에서 대한 Checksum을 저장
• Block 저장, 검증 시 Checksum 저장, 비교
• Namenode에 저장되어 있는 Checksum과 실제 Block의 Checksum
이 다른 경우 Namenode는 깨진 Block을 다시 복제
20
HDFS(Hadoop Distributed File System)의 이중화(High Availability)에 대해 설명합니다.
3) HDFS Corruption
4. HDFS High Availability
• Datanode 장애 시 해당 Datanode를 Cluster 서비스에서
제외시킴
• Namenode는 Decommission된 Datanode에 있는 블록
들을 Replication을 이용해 다른 Datanode에 재생성
• Ambari UI에서 해당 기능 지원
HDFS(Hadoop Distributed File System)의 이중화(High Availability)에 대해 설명합니다.
4) Decommissioning Datanode
4. HDFS High Availability
22
HDFS(Hadoop Distributed File System)의 이중화(High Availability)에 대해 설명합니다.
4) Decommissioning Datanode
4. HDFS High Availability
1. hdfs-site.xml에서 parameter 확인
<property>
<name>dfs.hosts.exclude</name>
<value>/etc/hadoop/conf/dfs.exclude</value>
</property>
2. /etc/hadoop/conf/dfs.exclude 파일에 Decommission시킬 호스트 추가 후
hdfs dfsadmin –refreshNodes 명령어 수행
3. 명령어를 통한 Decommissioning 상태 확인
hdfs dfsadmin -report
......
Name: 192.168.0.16:50010
Decommission Status : Decommission in progress => Decommissioned로 변경됨
Configured Capacity: 237298769920 (221 GB)
DFS Used: 28687 (28.01 KB)
......
상태 내용
Over-replicated blocks
복제본이 과도하게 생성된 경우를 의미.
예) 3개의 복제본이 저장되어야 하는데, 3개를 초과해서 복제본이 저장된 경우.
Under-replicated blocks
부족하게 복제된 블록 개수를 의미.
예) 3개의 복제본이 저장되어야 하는데, 2개 혹은 1개의 복제본만 저장되어 있다면
부족하게 저장된 복제본으로 인식.
주로 네임노드가 다운되기 직전이나 직후에 데이터를 저장할 경우 발생.
Missing replicas Under-replicated blocks 과 함께 발생.
Mis-replicated blocks 복제된 블록이 유실된 상태.
Corrupt blocks 블록에 오류가 발생한 경우.
Default replication factor 기본 설정 복제 개수(hdfs-site.xml 의 dfs.replication 에 설정된 개수)
Number of data-nodes 데이터 노드의 수
Number of racks 서버 랙의 수
23
HDFS(Hadoop Distributed File System)의 fsck 명령어에 대해 설명합니다.
1) HDFS fsck
5. HDFS Health Check
• Linux fsck 명령어와는 다르게 발견된 오류를 정정하지 않음. Namenode가
자동적으로 오류 복구를 수행하기 때문
Usage : hdfs fsck [path]
FSCK started by hadoop from /192.168.1.17 for path / at Sun May 12 11:22:40 KST 2013
....
............Status: HEALTHY
Total size: 12038398409 B
Total dirs: 42
Total files: 50 (Files currently being written: 4)
Total blocks (validated): 216 (avg. block size 55733325 B)
Minimally replicated blocks: 216 (100.0 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 163 (75.46296 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 2
Average block replication: 1.2453704
Corrupt blocks: 0
Missing replicas: 163 (60.594795 %)
Number of data-nodes: 2
Number of racks: 1
FSCK ended at Sun May 12 11:22:41 KST 2013 in 16 milliseconds
// 시스템 상태가 정상
The filesystem under path '/' is HEALTHY
// 시스템 상태에 오류 발생
The filesystem under path '/' is CORRUPT
24
HDFS(Hadoop Distributed File System)의 fsck 명령어에 대해 설명합니다.
1) HDFS fsck
5. HDFS Health Check
• 파일 시스템의 기본 정보 및 통계 출력.
• 모든 Datanode에서 replication, checksum, snapshot 등의 사용 공간까지 계산함으로써 du 명
령어와 결과가 다를 수 있음.
Usage : hdfs dfsadmin –report [-live] [-dead] [-decommissioning]
[hdfs@hdm1 ~]$ hdfs dfsadmin -report
Configured Capacity: 32863620608 (30.61 GB)
Present Capacity: 17310912512 (16.12 GB)
DFS Remaining: 15894532096 (14.80 GB)
DFS Used: 1416380416 (1.32 GB)
DFS Used%: 8.18%
Under replicated blocks: 846
Blocks with corrupt replicas: 0
Missing blocks: 0
Missing blocks (with replication factor 1): 54
……………….
25
HDFS(Hadoop Distributed File System)의 report 명령어에 대해 설명합니다.
2) HDFS dfsadmin report
5. HDFS Health Check
• Snapshot의 목적은 데이터 백업
• 데이터를 복사하는 것이 아님, 소스 데이터 블록의 목록
과 파일 크기만 기록하고 블록의 포인터만 저장
• 즉 Snapshot 생성 시 즉각적으로 생성.
• 파일이 수정/삭제 될 경우 수정된 블록만 저장
• 현재 Read-Only Snapshot만 지원
26
HDFS(Hadoop Distributed File System)의 Snapshot 기능에 대해 설명합니다.
1) HDFS Snapshot 소개
6. HDFS Snapshot
* Snapshot 기능 개발에 대한 JIRA 문서
- https://issues.apache.org/jira/browse/HDFS-2802
27
HDFS(Hadoop Distributed File System)의 Snapshot 기능에 대해 설명합니다.
2) HDFS Snapshot 명령어
6. HDFS Snapshot
#해당 디렉토리를 스냅샷 가능 디렉토리로 만들어 줌
hdfs dfsadmin -allowSnapshot $path
#디렉토리 스냅샷 생성
hdfs dfs -createSnapshot $path $snapshotName
#디렉토리 스냅샷 삭제
hdfs dfs -deleteSnapshot $path $snapshotName
[hdfs@hdm1 ~]$ hdfs dfsadmin -allowSnapshot /apps/hbase-fem/data
Allowing snaphot on /apps/hbase-fem/data succeeded
[hdfs@hdm1 ~]$ hdfs dfs -createSnapshot /apps/hbase-fem/data
Created snapshot /apps/hbase-fem/data/.snapshot/s20170809-101633.834
[hdfs@hdm1 ~]$ hdfs lsSnapshottableDir
drwxr-xr-x 0 hbase hdfs 0 2017-08-09 10:16 1 65536 /apps/hbase-fem/data
28
HDFS(Hadoop Distributed File System)의 Snapshot 기능에 대해 설명합니다.
3) HDFS Snapshot on Namenode UI
6. HDFS Snapshot
http://[NAMENODE_HOST]:50070 /dfshealth.html#tab-snapshot
29
HDFS(Hadoop Distributed File System)의 Snapshot 기능에 대해 설명합니다.
3) HDFS Snapshot on Namenode UI
6. HDFS Snapshot
http://[NAMENODE_HOST]:50070 /dfshealth.html#tab-snapshot
• HDFS ACL은 파일의 소유자 및 그룹 뿐만 아니라 특정 명명 된 사용자 또는
명명 된 그룹에 대해 세밀한 파일 권한을 지정할 수 있는 기능을 제공.
– dfs.namenode.acls.enabled => true 로 설정
hdfs dfs -setfacl [-R] [-b |-k -m |-x <acl_spec> <path>] |[--set <acl_spec> <path>]
-b: Remove all but the base ACL entries. The entries for user, group and others are
retained for compatibility with permission bits.
-k: Remove the default ACL.
-R: Apply operations to all files and directories recursively.
-m: Modify ACL. New entries are added to the ACL, and existing entries are retained.
-x: Remove specified ACL entries. Other ACL entries are retained.
--set: Fully replace the ACL, discarding all existing entries. The acl_spec must include
entries for user, group, and others for compatibility with permission bits.
acl_spec: Comma separated list of ACL entries.
path: File or directory to modify.
30
HDFS(Hadoop Distributed File System)의 ACL(Access Control List)기능에 대해 설명합니다.
4) HDFS ACL
7. HDFS ACL
hdfs dfs -setfacl -m group:execs:r-- /sales-data
hdfs dfs -getfacl /sales-data
# file: /sales-data
# owner: bruce
# group: sales
user::rw-
group::r--
group:execs:r--
mask::r--
other::---
hdfs dfs -setfacl -m default:group:execs:r-x /monthly-sales-data
hdfs dfs -getfacl -R /monthly-sales-data
# file: /monthly-sales-data
# owner: bruce
# group: sales
user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:group:execs:r-x
default:mask::r-x
default:other::---
31
HDFS(Hadoop Distributed File System)의 ACL(Access Control List)기능에 대해 설명합니다.
4) HDFS ACL 예제
7. HDFS ACL
• HDFS는 KMS(Key Management Server)를 이용한 end-to-end 암호
화 지원, 즉 Key를 가진 Client에서만 Encryption Zone에 암호화 된
파일을 읽고 쓸 수 있음.
1. 키 생성
$ sudo -u <key_admin> hadoop key create keytrustee_test
$ sudo -u hdfs hadoop key list
2. Encryption zone 생성
$ sudo -u hdfs hadoop fs -mkdir /encryption_zone
$ sudo -u hdfs hdfs crypto -createZone -keyName <key_name> -path
/encryption_zone
3. Encryption zone 확인
$ sudo -u hdfs hdfs crypto -listZones
32
HDFS(Hadoop Distributed File System)의 KMS(Key Management Server)를 이용한 Encryption zone 기능에 대해
설명합니다.
5) HDFS Encryption zone
8. HDFS Encryption zone
• Namenode Heap Size는 통상적으로 백만 블록 당 1GB 할당
• 12TB Datanode 10개를 사용. Replication factor=3, Block size=128MB일 경우 블록 수
10ea * 12,000,000MB / 128MB * 3 = 312,500
=> Namenode Heap Size : 1GB
• 30TB Datanode 200개를 사용. Replication factor=3, Block size=128MB 일 경우 블록 수
200ea * 30,000,000MB / 128MB * 3 = 15,625,000
=> Namenode Heap Size : 16GB
✓ Cluster 사용량 등 환경에 따라 다를 수 있으니 유의
✓ Java Heap Size를 과도하게 잡을 경우 Full Garbage Collection 등의 문제가 발생할 수 있으므로 적
당한 Heap Size를 할당하는 것은 중요함
✓ Datanode Heap Size는 자신의 Disk Capacity 만으로 계산 - default인 1GB로 사용해도 충분함
33
HDFS(Hadoop Distributed File System)의 Java Heap Size 계산 방법에 대해 설명합니다.
1) HDFS Namenode Java Heap Size
9. HDFS Java Heap Size
• dfs.namenode.handler.count/ dfs.datanode.handler.count : HDFS에서 외부 요청
을 처리하는 데 사용할 Thread의 개수를 정하기 위한 설정, default 100
• dfs.datanode.max.transfer.threads : 하나의 Datanode에서 동시에 서비스 가능한
block 개수 제한, HAWQ의 경우 40960 으로 사용, default 4096
• dfs.replication : Block Replication 개수, 복제 개수가 많을수록 Write 성능은 떨어짐,
default 3
• dfs.datanode.failed.volumes.tolerated : Datanode Falied Volume 허용 개수, 초과
하면 HDFS 서비스 정지, 보통 dfs.replication 개수에 맞춰 설정함, default 1
• ipc.server.tcpnodelay / ipc.client.tcpnodelay : tcpnodelay 설정, true 설정하면
latency를 줄이는데 유리, default false
• dfs.client.read.shortcircuit : 로컬 Datanode로부터 block을 읽어올 때 Datanode를
통하지 않고 Disk로부터 바로 읽어올 수 있게 하는 설정, Cache hit이 낮아 데이터 대
부분을 디스크에서 읽어와야 할 때 효율적
• dfs.block.local-path-access.user : dfs.client.read.shortcircuit를 true로 설정했을 경
우 Disk로부터 Block을 바로 읽어올 수 있게 허용된 유저, 해당 유저가 Datanode를
읽을 수 있도록 dfs.datanode.data.dir.perm 설정 변경 필요
34
HDFS(Hadoop Distributed File System) hdfs-site.xml 파일의 주요 parameter에 대해 설명합니다.
1) HDFS Parameter – hdfs-site.xml
10. HDFS Parameter
• io.file.buffer.size : 시퀀스 파일에 사용할 버퍼
크기. 하드웨어 페이지 크기 (Intel x86의 경우
4096)의 배수여야 하며 읽기 및 쓰기 작업 중에
버퍼되는 데이터의 양을 결정
• file.stream-buffer-size : 파일을 스트리밍 할 버
퍼의 크기. 설정 공식은 io.file.buffer.size와 같음
35
HDFS(Hadoop Distributed File System) core-site.xml 파일의 주요 parameter에 대해 설명합니다.
2) HDFS Parameter – core-site.xml
10. HDFS Parameter
• Garbage Collection
– Java Object들을 메모리에서 제거(Minor, Major GC) 하거
나 지속해서 사용할 Object를 저장함
– 단편화 된 메모리 공간을 조각 모음 하는 작업
– Major GC가 일어나면 JVM은 수초 혹은 수분 동안 멈춘 상
태에서 GC만 수행, STW (Stop The World)
– GC 튜닝은 STW을 줄이는 것이 최종 목표
– 거의 모든 Hadoop JVM은 Concurrent Mark&Sweep GC
사용, N개의 Thread + 계속적인 GC를 통하여 STW이 발생
하지 않도록 최소화 (병렬 + 실시간 GC 처리)
– 만약 Hadoop JVM에서 GC처리를 보고 싶다면, hdfs 로그
디렉토리의 gc.log 파일을 모니터링
36
Java GC(Garbage Collection)
참고 : Java GC(Garbage Collection)
##Namenode JVM 프로세스의 GC관련 옵션
-server -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:NewSize=128m -XX:MaxNewSize=128m -
Xloggc:/var/log/hadoop/hdfs/gc.log-201708090918 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps
-XX:+PrintGCDateStamps -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly
• 멀티테넌트 Hadoop 클러스터 운영 경험기
http://d2.naver.com/helloworld/0475200
• Hadoop Cluster 성능 측정 http://www.michael-
noll.com/blog/2011/04/09/benchmarking-and-stress-testing-an-hadoop-
cluster-with-terasort-testdfsio-nnbench-mrbench/
• Hbase 설정 최적화(OLTP/OLAP 환경에서 HDFS 설정)
http://engineering.vcnc.co.kr/2013/04/hbase-configuration/
• Zookeeper이해 - Zookeeper를 활용한 Redis Cluster 관리
http://d2.naver.com/helloworld/294797
• Java Garbage collection 1 – 간단 소개
http://d2.naver.com/helloworld/1329
• Java Garbage collection 2 – 상세 소개
https://yckwon2nd.blogspot.kr/2014/04/garbage-collection.html
• Hadoop tuning and optimization -
https://www.slideshare.net/ImpetusInfo/ppt-on-advanced-hadoop-tuning-
n-optimisation
37
참고자료
참고 할 만한 자료

Mais conteúdo relacionado

Mais procurados

하둡 맵리듀스 훑어보기
하둡 맵리듀스 훑어보기하둡 맵리듀스 훑어보기
하둡 맵리듀스 훑어보기beom kyun choi
 
HBase HUG Presentation: Avoiding Full GCs with MemStore-Local Allocation Buffers
HBase HUG Presentation: Avoiding Full GCs with MemStore-Local Allocation BuffersHBase HUG Presentation: Avoiding Full GCs with MemStore-Local Allocation Buffers
HBase HUG Presentation: Avoiding Full GCs with MemStore-Local Allocation BuffersCloudera, Inc.
 
Seminar Presentation Hadoop
Seminar Presentation HadoopSeminar Presentation Hadoop
Seminar Presentation HadoopVarun Narang
 
Oracle Latch and Mutex Contention Troubleshooting
Oracle Latch and Mutex Contention TroubleshootingOracle Latch and Mutex Contention Troubleshooting
Oracle Latch and Mutex Contention TroubleshootingTanel Poder
 
HBaseCon 2015: HBase Performance Tuning @ Salesforce
HBaseCon 2015: HBase Performance Tuning @ SalesforceHBaseCon 2015: HBase Performance Tuning @ Salesforce
HBaseCon 2015: HBase Performance Tuning @ SalesforceHBaseCon
 
Apache Sentry for Hadoop security
Apache Sentry for Hadoop securityApache Sentry for Hadoop security
Apache Sentry for Hadoop securitybigdatagurus_meetup
 
Oracle GoldenGate Performance Tuning
Oracle GoldenGate Performance TuningOracle GoldenGate Performance Tuning
Oracle GoldenGate Performance TuningBobby Curtis
 
Advanced RAC troubleshooting: Network
Advanced RAC troubleshooting: NetworkAdvanced RAC troubleshooting: Network
Advanced RAC troubleshooting: NetworkRiyaj Shamsudeen
 
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...Sandesh Rao
 
Building a Streaming Pipeline on Kubernetes Using Kafka Connect, KSQLDB & Apa...
Building a Streaming Pipeline on Kubernetes Using Kafka Connect, KSQLDB & Apa...Building a Streaming Pipeline on Kubernetes Using Kafka Connect, KSQLDB & Apa...
Building a Streaming Pipeline on Kubernetes Using Kafka Connect, KSQLDB & Apa...HostedbyConfluent
 
Troubleshooting Kerberos in Hadoop: Taming the Beast
Troubleshooting Kerberos in Hadoop: Taming the BeastTroubleshooting Kerberos in Hadoop: Taming the Beast
Troubleshooting Kerberos in Hadoop: Taming the BeastDataWorks Summit
 
LLAP: long-lived execution in Hive
LLAP: long-lived execution in HiveLLAP: long-lived execution in Hive
LLAP: long-lived execution in HiveDataWorks Summit
 
HBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBaseHBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBaseenissoz
 
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
 
Making Nested Columns as First Citizen in Apache Spark SQL
Making Nested Columns as First Citizen in Apache Spark SQLMaking Nested Columns as First Citizen in Apache Spark SQL
Making Nested Columns as First Citizen in Apache Spark SQLDatabricks
 
PostgreSQL and Benchmarks
PostgreSQL and BenchmarksPostgreSQL and Benchmarks
PostgreSQL and BenchmarksJignesh Shah
 

Mais procurados (20)

하둡 맵리듀스 훑어보기
하둡 맵리듀스 훑어보기하둡 맵리듀스 훑어보기
하둡 맵리듀스 훑어보기
 
HBase HUG Presentation: Avoiding Full GCs with MemStore-Local Allocation Buffers
HBase HUG Presentation: Avoiding Full GCs with MemStore-Local Allocation BuffersHBase HUG Presentation: Avoiding Full GCs with MemStore-Local Allocation Buffers
HBase HUG Presentation: Avoiding Full GCs with MemStore-Local Allocation Buffers
 
Seminar Presentation Hadoop
Seminar Presentation HadoopSeminar Presentation Hadoop
Seminar Presentation Hadoop
 
Oracle Latch and Mutex Contention Troubleshooting
Oracle Latch and Mutex Contention TroubleshootingOracle Latch and Mutex Contention Troubleshooting
Oracle Latch and Mutex Contention Troubleshooting
 
HBaseCon 2015: HBase Performance Tuning @ Salesforce
HBaseCon 2015: HBase Performance Tuning @ SalesforceHBaseCon 2015: HBase Performance Tuning @ Salesforce
HBaseCon 2015: HBase Performance Tuning @ Salesforce
 
Apache Sentry for Hadoop security
Apache Sentry for Hadoop securityApache Sentry for Hadoop security
Apache Sentry for Hadoop security
 
Apache Flink Deep Dive
Apache Flink Deep DiveApache Flink Deep Dive
Apache Flink Deep Dive
 
Oracle GoldenGate Performance Tuning
Oracle GoldenGate Performance TuningOracle GoldenGate Performance Tuning
Oracle GoldenGate Performance Tuning
 
Advanced RAC troubleshooting: Network
Advanced RAC troubleshooting: NetworkAdvanced RAC troubleshooting: Network
Advanced RAC troubleshooting: Network
 
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...
Oracle Real Application Clusters 19c- Best Practices and Internals- EMEA Tour...
 
Building a Streaming Pipeline on Kubernetes Using Kafka Connect, KSQLDB & Apa...
Building a Streaming Pipeline on Kubernetes Using Kafka Connect, KSQLDB & Apa...Building a Streaming Pipeline on Kubernetes Using Kafka Connect, KSQLDB & Apa...
Building a Streaming Pipeline on Kubernetes Using Kafka Connect, KSQLDB & Apa...
 
What's New in Apache Hive
What's New in Apache HiveWhat's New in Apache Hive
What's New in Apache Hive
 
Oracle ASM Training
Oracle ASM TrainingOracle ASM Training
Oracle ASM Training
 
Troubleshooting Kerberos in Hadoop: Taming the Beast
Troubleshooting Kerberos in Hadoop: Taming the BeastTroubleshooting Kerberos in Hadoop: Taming the Beast
Troubleshooting Kerberos in Hadoop: Taming the Beast
 
LLAP: long-lived execution in Hive
LLAP: long-lived execution in HiveLLAP: long-lived execution in Hive
LLAP: long-lived execution in Hive
 
HBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBaseHBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBase
 
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
 
Making Nested Columns as First Citizen in Apache Spark SQL
Making Nested Columns as First Citizen in Apache Spark SQLMaking Nested Columns as First Citizen in Apache Spark SQL
Making Nested Columns as First Citizen in Apache Spark SQL
 
Druid deep dive
Druid deep diveDruid deep dive
Druid deep dive
 
PostgreSQL and Benchmarks
PostgreSQL and BenchmarksPostgreSQL and Benchmarks
PostgreSQL and Benchmarks
 

Semelhante a HDFS Overview

Hadoop Overview 1
Hadoop Overview 1Hadoop Overview 1
Hadoop Overview 1Kay Kim
 
Hadoop Introduction (1.0)
Hadoop Introduction (1.0)Hadoop Introduction (1.0)
Hadoop Introduction (1.0)Keeyong Han
 
log-monitoring-architecture.pdf
log-monitoring-architecture.pdflog-monitoring-architecture.pdf
log-monitoring-architecture.pdfSungkyun Kim
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3Sung-jae Park
 
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0sprdd
 
Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0sprdd
 
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
 
Apache hbase overview (20160427)
Apache hbase overview (20160427)Apache hbase overview (20160427)
Apache hbase overview (20160427)Steve Min
 
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
 
Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나sprdd
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'sung ki choi
 
하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기beom kyun choi
 
Oracle Unified Storage.pptx
Oracle Unified Storage.pptxOracle Unified Storage.pptx
Oracle Unified Storage.pptxJongMunLee4
 

Semelhante a HDFS Overview (20)

Hdfs
HdfsHdfs
Hdfs
 
Hadoop Overview 1
Hadoop Overview 1Hadoop Overview 1
Hadoop Overview 1
 
Hadoop Introduction (1.0)
Hadoop Introduction (1.0)Hadoop Introduction (1.0)
Hadoop Introduction (1.0)
 
log-monitoring-architecture.pdf
log-monitoring-architecture.pdflog-monitoring-architecture.pdf
log-monitoring-architecture.pdf
 
Hadoop administration
Hadoop administrationHadoop administration
Hadoop administration
 
하둡관리
하둡관리하둡관리
하둡관리
 
Hadoop distributed file system rev3
Hadoop distributed file system rev3Hadoop distributed file system rev3
Hadoop distributed file system rev3
 
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0Glusterfs 파일시스템 구성_및 운영가이드_v2.0
Glusterfs 파일시스템 구성_및 운영가이드_v2.0
 
Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0Glusterfs 구성제안 및_운영가이드_v2.0
Glusterfs 구성제안 및_운영가이드_v2.0
 
저장장치
저장장치저장장치
저장장치
 
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
 
Apache hive
Apache hiveApache hive
Apache hive
 
Apache hbase overview (20160427)
Apache hbase overview (20160427)Apache hbase overview (20160427)
Apache hbase overview (20160427)
 
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
 
Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나Glusterfs 소개 v1.0_난공불락세미나
Glusterfs 소개 v1.0_난공불락세미나
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
 
하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기
 
Oracle Unified Storage.pptx
Oracle Unified Storage.pptxOracle Unified Storage.pptx
Oracle Unified Storage.pptx
 

HDFS Overview

  • 1. HDFS Architecture & Process 작성자 : 한정필 작성일 : 2017.08.10 On Hortonworks Data Platform
  • 2. INDEX 01 02 03 04 05 06 07 08 09 10 HDFS Architecture HDFS Process HDFS Locality HDFS High Availability HDFS Health Check HDFS Snapshot HDFS ACL HDFS Encryption zone HDFS Java Heap Size HDFS Parameter tuning
  • 3. • HDFS(Hadoop Distributed File System) – 대용량 데이터를 분산 처리할 수 있는 자바 기반의 오픈소스 프 레임워크 Hadoop 내의 데이터 분산 저장 서비스 • 주요 특징 ▪ 블록 단위 파일 보관 : 파일을 블록 단위로 나눠서 보관(3 copy), client는 나누어진 파일을 하나의 파일로 볼 수 있음 ▪ 분산 파일 시스템 : 블록을 여러 노드에 분산해서 보관, 그러므로 단일 디스크보다 더 큰 파일을 저장할 수 있음 ▪ Replication : 하나의 블록은 여러 노드에 복제되며, 이로 인하여 특정 노드 장애에 무 정지 대응 3 HDFS(Hadoop Distributed File System)의 기본 동작 방식과 구조에 대해 설명합니다. 1) HDFS란? 1. HDFS Architecture
  • 4. • 주요 특징 ▪ 매우 큰 파일을 효율적으로 저장하도록 고안됨 ▪ 한번 쓰고 여러 번 읽는 것을 고려하여 설계 ▪ 멀티 노드에 다수의 사본을 유지, 임의의 위치에 저장 불가 ▪ 파일의 메타데이터당 메모리 소비하는 구조, 파일의 개수가 늘어 날 수록 메타데이터가 늘어나기 때문에 메모리 사용량 증가 ▪ 단점 ▪ 작은 파일을 많이 저장하는 데에는 부적합 ▪ HDFS는 임의 변경(파일 수정)에 부적합 하여 데이터베이스의 파 일시스템으로 쓰기 부적합 ▪ 빠른 응답속도(OLTP 등)를 고려하지 않는 설계 4 HDFS(Hadoop Distributed File System)의 기본 동작 방식과 구조에 대해 설명합니다. 1) HDFS란? 1. HDFS Architecture
  • 5. 5 HDFS(Hadoop Distributed File System)의 기본 동작 방식과 구조에 대해 설명합니다. 1) HDFS란? 1. HDFS Architecture • Namenode ▪ 파일 시스템 관리 (디렉토리/파일정보) ▪ 파일-블록 매핑 정보 관리 (Metadata) • Datanode ▪ 블록 Read & Write ▪ 하나의 Block 크기는 128MB ▪ 하나의 파일은 여러 노드에 블록으 로 분리되어 보관(3 copy) ▪ Secondary Namenode ▪ Standby 아님 ▪ 항상 메타데이터의 최신본 유지 ▪ 장애 발생 시 Secondary 정보로 Namenode 복원 Namenode와 Datanode는 통신을 통하여 지속적으로 Datanode의 상태와 블록의 상태를 Namenode에 업데이트 시킴
  • 6. 6 HDFS(Hadoop Distributed File System)의 기본 동작 방식과 구조에 대해 설명합니다. 1) Namenode 동작 방식 2. HDFS Process • SNN이 fsimage 와 edits.new 를 일정시간 마다 merge 하고 이를 다시 NN에게 전달 • fsimage 는 NN의 메모리 상태를 가지고 있는 파일 • edits는 변경 사항을 가지고 있는 log 파일
  • 7. 7 HDFS(Hadoop Distributed File System)의 기본 동작 방식과 구조에 대해 설명합니다. 2) Namenode 동작 방식 - Namenode Startup Progress 2. HDFS Process
  • 8. 8 HDFS(Hadoop Distributed File System)의 기본 동작 방식과 구조에 대해 설명합니다. 3) HDFS Replication 2. HDFS Process Rack 1 Rack 2 Rack 3 Rack 4 블록 복제본은 같은 노드에 존재하지 않도록, 같은 Rack에 존재하지 않 도록 저장하여 1 Node 또는 1 Rack 장애 시에도 HDFS에 대한 Read/Write가 정상적으로 이루어질 수 있음
  • 9. 9 HDFS(Hadoop Distributed File System)의 Read/Write 기본 동작 방식에 대해 설명합니다. 4) HDFS Block Write Operation 2. HDFS Process Namenode Datanodes client 1. 파일 생성 정보 전송, 저장 공간 요청 2. 블록을 보관할 노드 목록 제공 3. 첫번째 노드에 Write 4. 복제 5. 복제 6. 완료 메시지 전송 * 파일의 모든 블록을 처리할 때 까지 반복
  • 10. 10 HDFS(Hadoop Distributed File System)의 Read/Write 기본 동작 방식에 대해 설명합니다. 5) HDFS Block Read/Write Operation 2. HDFS Process
  • 11. 11 HDFS(Hadoop Distributed File System)의 Block Status에 대해 설명합니다. 6) HDFS Block Status – 1 2. HDFS Process • UNDER_CONSTRUCTION • 원본 & 복제본 Block이 쓰여지고 있는 상태 • UNDER_RECOVERY • UNDER_CONSTRUCTION 상태가 지속될 때 (클라이언트 요청 만료 등) • COMMITTED • Block이 처리 완료된 상태 • Namenode에서 Replication 개수, Checksum확인이 완료되면 COMPLETE 상태로 변경됨 • COMPLETE • Namenode가 모든 Block 프로세스 의 처리가 완료되었음을 확인 http://blog.cloudera.com/blog/2015/02/understanding-hdfs- recovery-processes-part-1/ http://blog.cloudera.com/blog/2015/03/understanding-hdfs- recovery-processes-part-2/
  • 12. 12 HDFS(Hadoop Distributed File System)의 Block Status에 대해 설명합니다. 7) HDFS Block Status – 2 2. HDFS Process • FINALIZED • 원본 & 복제본 포함 모든 Block의 쓰기가 완료된 상태 • RBW(Replica Being Written) ▪ Block이 쓰여지고 있는 상태 ▪ RWR(Replica Waiting to be Recovered) ▪ 명확하지 않은 Block 상태 ▪ RUR(Replica Under Recovery) ▪ 복구 중인 Block 상태 ▪ TEMPORARY ▪ 임시 Block
  • 13. • 분산 컴퓨팅의 성능 확보를 위한 핵심 요소 – 네트워크 대역폭 – 디스크 탐색 시간 – CPU 처리 시간 • 데이터 노드 프로세스는 동일 머신 상에 있는 데이터를 저장하고 처 리하기 때문에 노드 간 데이터 이동을 최소화 시킴(네트워크 대역폭 최소 소비) • 클라우드 환경 또는 NAS를 이용해 Hadoop을 구축한다면 Data Locality를 구현할 수 없으므로 성능 저하 발생 13 HDFS(Hadoop Distributed File System)의 Block Locality 에 대해 설명합니다. 6) HDFS Block Locality - 1 3. HDFS Locality 멀티테넌트 Hadoop 클러스터 운영 경험기 http://d2.naver.com/helloworld/0475200
  • 14. • 같은 노드에 있는 데이터 우선 처리(Local) 14 HDFS(Hadoop Distributed File System)의 Block Locality 에 대해 설명합니다. 6) HDFS Block Locality - 2 3. HDFS Locality
  • 15. • 같은 Rack에 있는 데이터 우선 처리(On-Rack) 15 HDFS(Hadoop Distributed File System)의 Block Locality 에 대해 설명합니다. 6) HDFS Block Locality - 3 3. HDFS Locality
  • 16. • 다른 Rack에 있는 데이터 우선 처리(Off-Rack) 16 HDFS(Hadoop Distributed File System)의 Block Locality 에 대해 설명합니다. 6) HDFS Block Locality - 4 3. HDFS Locality
  • 17. 17 HDFS(Hadoop Distributed File System)의 Block Locality 에 대해 설명합니다. 6) HDFS Block Locality – Locality on MapReduce Job 3. HDFS Locality
  • 18. 18 HDFS(Hadoop Distributed File System)의 이중화(High Availability)에 대해 설명합니다. 1) HDFS Namenode HA 4. HDFS High Availability
  • 19. 19 HDFS(Hadoop Distributed File System)의 이중화(High Availability)에 대해 설명합니다. 2) HDFS Namenode HA 4. HDFS High Availability Zookeeper : 네임서비스별 active/standby NameNode의 정보를 저장. DFSZKFailoverController : NameNode를 모니터링 하고 있다가 active NameNode가 죽으면, standby NameNode를 active로 전환시키고 죽은 active NameNode를 클러스터에서 제외하고, Zookeeper에 정보를 갱신. JournalNode : namespace가 변경될 때 발생하는 edit log를 저장함. 최소 3대 이상 홀수로 실행되어야 하며, (N/2)+1 이상의 JournalNode가 살아있 어야 정상 동작이 보장됨.
  • 20. • HDFS는 Block에서 대한 Checksum을 저장 • Block 저장, 검증 시 Checksum 저장, 비교 • Namenode에 저장되어 있는 Checksum과 실제 Block의 Checksum 이 다른 경우 Namenode는 깨진 Block을 다시 복제 20 HDFS(Hadoop Distributed File System)의 이중화(High Availability)에 대해 설명합니다. 3) HDFS Corruption 4. HDFS High Availability
  • 21. • Datanode 장애 시 해당 Datanode를 Cluster 서비스에서 제외시킴 • Namenode는 Decommission된 Datanode에 있는 블록 들을 Replication을 이용해 다른 Datanode에 재생성 • Ambari UI에서 해당 기능 지원 HDFS(Hadoop Distributed File System)의 이중화(High Availability)에 대해 설명합니다. 4) Decommissioning Datanode 4. HDFS High Availability
  • 22. 22 HDFS(Hadoop Distributed File System)의 이중화(High Availability)에 대해 설명합니다. 4) Decommissioning Datanode 4. HDFS High Availability 1. hdfs-site.xml에서 parameter 확인 <property> <name>dfs.hosts.exclude</name> <value>/etc/hadoop/conf/dfs.exclude</value> </property> 2. /etc/hadoop/conf/dfs.exclude 파일에 Decommission시킬 호스트 추가 후 hdfs dfsadmin –refreshNodes 명령어 수행 3. 명령어를 통한 Decommissioning 상태 확인 hdfs dfsadmin -report ...... Name: 192.168.0.16:50010 Decommission Status : Decommission in progress => Decommissioned로 변경됨 Configured Capacity: 237298769920 (221 GB) DFS Used: 28687 (28.01 KB) ......
  • 23. 상태 내용 Over-replicated blocks 복제본이 과도하게 생성된 경우를 의미. 예) 3개의 복제본이 저장되어야 하는데, 3개를 초과해서 복제본이 저장된 경우. Under-replicated blocks 부족하게 복제된 블록 개수를 의미. 예) 3개의 복제본이 저장되어야 하는데, 2개 혹은 1개의 복제본만 저장되어 있다면 부족하게 저장된 복제본으로 인식. 주로 네임노드가 다운되기 직전이나 직후에 데이터를 저장할 경우 발생. Missing replicas Under-replicated blocks 과 함께 발생. Mis-replicated blocks 복제된 블록이 유실된 상태. Corrupt blocks 블록에 오류가 발생한 경우. Default replication factor 기본 설정 복제 개수(hdfs-site.xml 의 dfs.replication 에 설정된 개수) Number of data-nodes 데이터 노드의 수 Number of racks 서버 랙의 수 23 HDFS(Hadoop Distributed File System)의 fsck 명령어에 대해 설명합니다. 1) HDFS fsck 5. HDFS Health Check • Linux fsck 명령어와는 다르게 발견된 오류를 정정하지 않음. Namenode가 자동적으로 오류 복구를 수행하기 때문 Usage : hdfs fsck [path]
  • 24. FSCK started by hadoop from /192.168.1.17 for path / at Sun May 12 11:22:40 KST 2013 .... ............Status: HEALTHY Total size: 12038398409 B Total dirs: 42 Total files: 50 (Files currently being written: 4) Total blocks (validated): 216 (avg. block size 55733325 B) Minimally replicated blocks: 216 (100.0 %) Over-replicated blocks: 0 (0.0 %) Under-replicated blocks: 163 (75.46296 %) Mis-replicated blocks: 0 (0.0 %) Default replication factor: 2 Average block replication: 1.2453704 Corrupt blocks: 0 Missing replicas: 163 (60.594795 %) Number of data-nodes: 2 Number of racks: 1 FSCK ended at Sun May 12 11:22:41 KST 2013 in 16 milliseconds // 시스템 상태가 정상 The filesystem under path '/' is HEALTHY // 시스템 상태에 오류 발생 The filesystem under path '/' is CORRUPT 24 HDFS(Hadoop Distributed File System)의 fsck 명령어에 대해 설명합니다. 1) HDFS fsck 5. HDFS Health Check
  • 25. • 파일 시스템의 기본 정보 및 통계 출력. • 모든 Datanode에서 replication, checksum, snapshot 등의 사용 공간까지 계산함으로써 du 명 령어와 결과가 다를 수 있음. Usage : hdfs dfsadmin –report [-live] [-dead] [-decommissioning] [hdfs@hdm1 ~]$ hdfs dfsadmin -report Configured Capacity: 32863620608 (30.61 GB) Present Capacity: 17310912512 (16.12 GB) DFS Remaining: 15894532096 (14.80 GB) DFS Used: 1416380416 (1.32 GB) DFS Used%: 8.18% Under replicated blocks: 846 Blocks with corrupt replicas: 0 Missing blocks: 0 Missing blocks (with replication factor 1): 54 ………………. 25 HDFS(Hadoop Distributed File System)의 report 명령어에 대해 설명합니다. 2) HDFS dfsadmin report 5. HDFS Health Check
  • 26. • Snapshot의 목적은 데이터 백업 • 데이터를 복사하는 것이 아님, 소스 데이터 블록의 목록 과 파일 크기만 기록하고 블록의 포인터만 저장 • 즉 Snapshot 생성 시 즉각적으로 생성. • 파일이 수정/삭제 될 경우 수정된 블록만 저장 • 현재 Read-Only Snapshot만 지원 26 HDFS(Hadoop Distributed File System)의 Snapshot 기능에 대해 설명합니다. 1) HDFS Snapshot 소개 6. HDFS Snapshot * Snapshot 기능 개발에 대한 JIRA 문서 - https://issues.apache.org/jira/browse/HDFS-2802
  • 27. 27 HDFS(Hadoop Distributed File System)의 Snapshot 기능에 대해 설명합니다. 2) HDFS Snapshot 명령어 6. HDFS Snapshot #해당 디렉토리를 스냅샷 가능 디렉토리로 만들어 줌 hdfs dfsadmin -allowSnapshot $path #디렉토리 스냅샷 생성 hdfs dfs -createSnapshot $path $snapshotName #디렉토리 스냅샷 삭제 hdfs dfs -deleteSnapshot $path $snapshotName [hdfs@hdm1 ~]$ hdfs dfsadmin -allowSnapshot /apps/hbase-fem/data Allowing snaphot on /apps/hbase-fem/data succeeded [hdfs@hdm1 ~]$ hdfs dfs -createSnapshot /apps/hbase-fem/data Created snapshot /apps/hbase-fem/data/.snapshot/s20170809-101633.834 [hdfs@hdm1 ~]$ hdfs lsSnapshottableDir drwxr-xr-x 0 hbase hdfs 0 2017-08-09 10:16 1 65536 /apps/hbase-fem/data
  • 28. 28 HDFS(Hadoop Distributed File System)의 Snapshot 기능에 대해 설명합니다. 3) HDFS Snapshot on Namenode UI 6. HDFS Snapshot http://[NAMENODE_HOST]:50070 /dfshealth.html#tab-snapshot
  • 29. 29 HDFS(Hadoop Distributed File System)의 Snapshot 기능에 대해 설명합니다. 3) HDFS Snapshot on Namenode UI 6. HDFS Snapshot http://[NAMENODE_HOST]:50070 /dfshealth.html#tab-snapshot
  • 30. • HDFS ACL은 파일의 소유자 및 그룹 뿐만 아니라 특정 명명 된 사용자 또는 명명 된 그룹에 대해 세밀한 파일 권한을 지정할 수 있는 기능을 제공. – dfs.namenode.acls.enabled => true 로 설정 hdfs dfs -setfacl [-R] [-b |-k -m |-x <acl_spec> <path>] |[--set <acl_spec> <path>] -b: Remove all but the base ACL entries. The entries for user, group and others are retained for compatibility with permission bits. -k: Remove the default ACL. -R: Apply operations to all files and directories recursively. -m: Modify ACL. New entries are added to the ACL, and existing entries are retained. -x: Remove specified ACL entries. Other ACL entries are retained. --set: Fully replace the ACL, discarding all existing entries. The acl_spec must include entries for user, group, and others for compatibility with permission bits. acl_spec: Comma separated list of ACL entries. path: File or directory to modify. 30 HDFS(Hadoop Distributed File System)의 ACL(Access Control List)기능에 대해 설명합니다. 4) HDFS ACL 7. HDFS ACL
  • 31. hdfs dfs -setfacl -m group:execs:r-- /sales-data hdfs dfs -getfacl /sales-data # file: /sales-data # owner: bruce # group: sales user::rw- group::r-- group:execs:r-- mask::r-- other::--- hdfs dfs -setfacl -m default:group:execs:r-x /monthly-sales-data hdfs dfs -getfacl -R /monthly-sales-data # file: /monthly-sales-data # owner: bruce # group: sales user::rwx group::r-x other::--- default:user::rwx default:group::r-x default:group:execs:r-x default:mask::r-x default:other::--- 31 HDFS(Hadoop Distributed File System)의 ACL(Access Control List)기능에 대해 설명합니다. 4) HDFS ACL 예제 7. HDFS ACL
  • 32. • HDFS는 KMS(Key Management Server)를 이용한 end-to-end 암호 화 지원, 즉 Key를 가진 Client에서만 Encryption Zone에 암호화 된 파일을 읽고 쓸 수 있음. 1. 키 생성 $ sudo -u <key_admin> hadoop key create keytrustee_test $ sudo -u hdfs hadoop key list 2. Encryption zone 생성 $ sudo -u hdfs hadoop fs -mkdir /encryption_zone $ sudo -u hdfs hdfs crypto -createZone -keyName <key_name> -path /encryption_zone 3. Encryption zone 확인 $ sudo -u hdfs hdfs crypto -listZones 32 HDFS(Hadoop Distributed File System)의 KMS(Key Management Server)를 이용한 Encryption zone 기능에 대해 설명합니다. 5) HDFS Encryption zone 8. HDFS Encryption zone
  • 33. • Namenode Heap Size는 통상적으로 백만 블록 당 1GB 할당 • 12TB Datanode 10개를 사용. Replication factor=3, Block size=128MB일 경우 블록 수 10ea * 12,000,000MB / 128MB * 3 = 312,500 => Namenode Heap Size : 1GB • 30TB Datanode 200개를 사용. Replication factor=3, Block size=128MB 일 경우 블록 수 200ea * 30,000,000MB / 128MB * 3 = 15,625,000 => Namenode Heap Size : 16GB ✓ Cluster 사용량 등 환경에 따라 다를 수 있으니 유의 ✓ Java Heap Size를 과도하게 잡을 경우 Full Garbage Collection 등의 문제가 발생할 수 있으므로 적 당한 Heap Size를 할당하는 것은 중요함 ✓ Datanode Heap Size는 자신의 Disk Capacity 만으로 계산 - default인 1GB로 사용해도 충분함 33 HDFS(Hadoop Distributed File System)의 Java Heap Size 계산 방법에 대해 설명합니다. 1) HDFS Namenode Java Heap Size 9. HDFS Java Heap Size
  • 34. • dfs.namenode.handler.count/ dfs.datanode.handler.count : HDFS에서 외부 요청 을 처리하는 데 사용할 Thread의 개수를 정하기 위한 설정, default 100 • dfs.datanode.max.transfer.threads : 하나의 Datanode에서 동시에 서비스 가능한 block 개수 제한, HAWQ의 경우 40960 으로 사용, default 4096 • dfs.replication : Block Replication 개수, 복제 개수가 많을수록 Write 성능은 떨어짐, default 3 • dfs.datanode.failed.volumes.tolerated : Datanode Falied Volume 허용 개수, 초과 하면 HDFS 서비스 정지, 보통 dfs.replication 개수에 맞춰 설정함, default 1 • ipc.server.tcpnodelay / ipc.client.tcpnodelay : tcpnodelay 설정, true 설정하면 latency를 줄이는데 유리, default false • dfs.client.read.shortcircuit : 로컬 Datanode로부터 block을 읽어올 때 Datanode를 통하지 않고 Disk로부터 바로 읽어올 수 있게 하는 설정, Cache hit이 낮아 데이터 대 부분을 디스크에서 읽어와야 할 때 효율적 • dfs.block.local-path-access.user : dfs.client.read.shortcircuit를 true로 설정했을 경 우 Disk로부터 Block을 바로 읽어올 수 있게 허용된 유저, 해당 유저가 Datanode를 읽을 수 있도록 dfs.datanode.data.dir.perm 설정 변경 필요 34 HDFS(Hadoop Distributed File System) hdfs-site.xml 파일의 주요 parameter에 대해 설명합니다. 1) HDFS Parameter – hdfs-site.xml 10. HDFS Parameter
  • 35. • io.file.buffer.size : 시퀀스 파일에 사용할 버퍼 크기. 하드웨어 페이지 크기 (Intel x86의 경우 4096)의 배수여야 하며 읽기 및 쓰기 작업 중에 버퍼되는 데이터의 양을 결정 • file.stream-buffer-size : 파일을 스트리밍 할 버 퍼의 크기. 설정 공식은 io.file.buffer.size와 같음 35 HDFS(Hadoop Distributed File System) core-site.xml 파일의 주요 parameter에 대해 설명합니다. 2) HDFS Parameter – core-site.xml 10. HDFS Parameter
  • 36. • Garbage Collection – Java Object들을 메모리에서 제거(Minor, Major GC) 하거 나 지속해서 사용할 Object를 저장함 – 단편화 된 메모리 공간을 조각 모음 하는 작업 – Major GC가 일어나면 JVM은 수초 혹은 수분 동안 멈춘 상 태에서 GC만 수행, STW (Stop The World) – GC 튜닝은 STW을 줄이는 것이 최종 목표 – 거의 모든 Hadoop JVM은 Concurrent Mark&Sweep GC 사용, N개의 Thread + 계속적인 GC를 통하여 STW이 발생 하지 않도록 최소화 (병렬 + 실시간 GC 처리) – 만약 Hadoop JVM에서 GC처리를 보고 싶다면, hdfs 로그 디렉토리의 gc.log 파일을 모니터링 36 Java GC(Garbage Collection) 참고 : Java GC(Garbage Collection) ##Namenode JVM 프로세스의 GC관련 옵션 -server -XX:ParallelGCThreads=8 -XX:+UseConcMarkSweepGC -XX:NewSize=128m -XX:MaxNewSize=128m - Xloggc:/var/log/hadoop/hdfs/gc.log-201708090918 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:CMSInitiatingOccupancyFraction=70 -XX:+UseCMSInitiatingOccupancyOnly
  • 37. • 멀티테넌트 Hadoop 클러스터 운영 경험기 http://d2.naver.com/helloworld/0475200 • Hadoop Cluster 성능 측정 http://www.michael- noll.com/blog/2011/04/09/benchmarking-and-stress-testing-an-hadoop- cluster-with-terasort-testdfsio-nnbench-mrbench/ • Hbase 설정 최적화(OLTP/OLAP 환경에서 HDFS 설정) http://engineering.vcnc.co.kr/2013/04/hbase-configuration/ • Zookeeper이해 - Zookeeper를 활용한 Redis Cluster 관리 http://d2.naver.com/helloworld/294797 • Java Garbage collection 1 – 간단 소개 http://d2.naver.com/helloworld/1329 • Java Garbage collection 2 – 상세 소개 https://yckwon2nd.blogspot.kr/2014/04/garbage-collection.html • Hadoop tuning and optimization - https://www.slideshare.net/ImpetusInfo/ppt-on-advanced-hadoop-tuning- n-optimisation 37 참고자료 참고 할 만한 자료