HDFS 사용자 가이드
HDFS 사용자 가이드 (Users Guide)
HDFS를 사용자·관리자 관점에서 다루는 시작 문서예요. 웹 인터페이스, 셸 명령, Secondary NameNode·Checkpoint Node·Backup Node, Balancer, Safemode, fsck, fetchdt, Recovery Mode, 업그레이드·롤백, 핫 스왑 드라이브, 권한·보안, 확장성 등을 다룹니다.
출처: 문서
본문
목적 (Purpose)
이 문서는 Hadoop 클러스터의 일부로, 또는 독립형 범용 분산 파일 시스템으로 HDFS를 사용하는 사용자를 위한 출발점입니다. HDFS는 많은 환경에서 "그냥 동작"하도록 설계됐지만, HDFS에 대한 실용 지식은 특정 클러스터의 구성 개선과 진단에 큰 도움이 됩니다.
개요 (Overview)
HDFS는 Hadoop 애플리케이션이 사용하는 주 분산 저장소입니다. HDFS 클러스터는 파일 시스템 메타데이터를 관리하는 NameNode와 실제 데이터를 저장하는 DataNode로 주로 구성됩니다. HDFS 아키텍처 가이드가 HDFS를 자세히 설명합니다. 이 사용자 가이드는 주로 사용자와 관리자가 HDFS 클러스터와 상호작용하는 방법을 다룹니다. HDFS 아키텍처 다이어그램은 NameNode, DataNode, 클라이언트 사이의 기본 상호작용을 보여줍니다. 클라이언트는 파일 메타데이터나 파일 수정을 위해 NameNode에 접촉하고, 실제 파일 I/O는 DataNode와 직접 수행합니다.
많은 사용자에게 유용한 두드러진 특징은 다음과 같습니다.
- Hadoop(와 HDFS)은 상용 하드웨어를 사용한 분산 저장과 분산 처리에 잘 맞습니다. 고장 허용적이고 확장 가능하며 확장이 매우 간단해요. 단순성과 대규모 분산 애플리케이션 적용성으로 유명한 MapReduce는 Hadoop의 핵심 부분입니다.
- HDFS는 기본 구성이 많은 설치에 잘 맞도록 매우 구성 가능합니다. 대부분의 경우 구성은 매우 큰 클러스터에서만 튜닝하면 됩니다.
- Hadoop은 Java로 작성되어 모든 주요 플랫폼을 지원합니다.
- Hadoop은 HDFS와 직접 상호작용하는 셸류 명령을 지원합니다.
- NameNode와 DataNode에는 클러스터의 현재 상태를 쉽게 확인할 수 있는 내장 웹 서버가 있습니다.
- 새 기능과 개선은 HDFS에 정기적으로 구현됩니다. 다음은 HDFS의 유용한 기능 중 일부입니다.
- 파일 권한과 인증.
- 랙 인지(Rack awareness): 작업 스케줄링과 저장소 할당 시 노드의 물리적 위치 고려.
- Safemode: 유지보수를 위한 관리 모드.
fsck: 파일 시스템 건강을 진단하고 누락 파일·블록을 찾는 유틸리티.fetchdt: DelegationToken을 가져와 로컬 시스템 파일에 저장하는 유틸리티.- Balancer: 데이터가 DataNode 사이에 고르지 않게 분포될 때 클러스터를 균형 잡는 도구.
- 업그레이드와 롤백: 소프트웨어 업그레이드 후 예상치 못한 문제가 생기면 업그레이드 전 HDFS 상태로 롤백 가능.
- Secondary NameNode: 네임스페이스의 주기적 체크포인트를 수행하고 NameNode에서 HDFS 수정 로그 파일 크기를 일정 한도 내로 유지.
- Checkpoint node: 네임스페이스의 주기적 체크포인트를 수행하고 NameNode에 저장된 HDFS 변경 로그 크기를 최소화. 이전에 Secondary NameNode가 채우던 역할을 대체하지만 아직 실전 검증되지는 않음. NameNode는 등록된 Backup node가 없으면 여러 Checkpoint node를 동시에 허용.
- Backup node: Checkpoint node의 확장. 체크포인트 외에도 NameNode에서 편집 스트림을 받아 항상 active NameNode 네임스페이스 상태와 동기화되는 자체 인메모리 네임스페이스 복사본을 유지. 한 번에 하나의 Backup node만 NameNode에 등록 가능.
사전 요구사항 (Prerequisites)
다음 문서는 Hadoop 클러스터 설치·설정 방법을 설명합니다.
- Single Node Setup — 처음 사용자용.
- Cluster Setup — 대규모 분산 클러스터용.
이 문서의 나머지는 사용자가 최소 하나의 DataNode로 HDFS를 설정·실행할 수 있다고 가정합니다. 이 문서의 목적상 NameNode와 DataNode가 같은 물리 머신에서 실행될 수 있어요.
웹 인터페이스 (Web Interface)
NameNode와 DataNode는 각각 클러스터의 현재 상태에 대한 기본 정보를 표시하는 내부 웹 서버를 실행합니다. 기본 구성에서 NameNode 프론트 페이지는 http://namenode-name:9870/입니다. 클러스터의 DataNode 목록과 기본 통계를 나열해요. 웹 인터페이스는 파일 시스템을 탐색하는 데도 사용할 수 있습니다(NameNode 프론트 페이지의 "Browse the file system" 링크 사용).
셸 명령 (Shell Commands)
Hadoop은 HDFS 및 Hadoop이 지원하는 다른 파일 시스템과 직접 상호작용하는 다양한 셸류 명령을 포함합니다. bin/hdfs dfs -help 명령은 Hadoop 셸이 지원하는 명령을 나열하고, bin/hdfs dfs -help command-name은 명령에 대한 더 자세한 도움말을 표시합니다. 이 명령들은 파일 복사, 파일 권한 변경 등 대부분의 일반 파일 시스템 연산을 지원하며, 파일 복제 변경 같은 몇 가지 HDFS 특정 연산도 지원합니다. 자세한 내용은 File System Shell Guide를 참고하세요.
DFSAdmin 명령
bin/hdfs dfsadmin 명령은 몇 가지 HDFS 관리 관련 연산을 지원합니다. bin/hdfs dfsadmin -help 명령이 현재 지원하는 모든 명령을 나열해요. 예:
-report: HDFS의 기본 통계를 보고. 이 정보 중 일부는 NameNode 프론트 페이지에서도 확인 가능.-safemode: 보통 필요 없지만, 관리자가 수동으로 Safemode를 진입·해제할 수 있음.-finalizeUpgrade: 마지막 업그레이드 중 만든 클러스터의 이전 백업을 제거.-refreshNodes: 네임노드에 연결이 허용된 데이터노드 집합으로 네임노드를 갱신. 기본적으로 네임노드는dfs.hosts,dfs.hosts.exclude가 정의한 파일에서 데이터노드 호스트명을 다시 읽음.dfs.hosts에 정의된 호스트가 클러스터에 속한 데이터노드.dfs.hosts에 항목이 있으면 그 호스트만 네임노드에 등록이 허용됨.dfs.hosts.exclude의 항목은 decommission해야 할 데이터노드. 대안으로dfs.namenode.hosts.provider.classname이org.apache.hadoop.hdfs.server.blockmanagement.CombinedHostFileManager로 설정되면 include·exclude 호스트가 모두dfs.hosts가 정의한 JSON 파일에 지정됨. 데이터노드는 그 데이터노드의 모든 복제본이 다른 데이터노드에 복제될 때 decommission을 완료함. decommission된 노드는 자동 종료되지 않고 새 복제본 쓰기에 선택되지 않음.-printTopology: 클러스터의 토폴로지를 출력. NameNode가 보는 대로 랙과 랙에 연결된 데이터노드의 트리를 표시.
명령 사용법은 dfsadmin을 참고하세요.
Secondary NameNode
NameNode는 파일 시스템에 대한 수정을 네이티브 파일 시스템 파일인 edits에 로그로 추가해 저장합니다. NameNode가 시작되면 이미지 파일 fsimage에서 HDFS 상태를 읽고, edits 로그 파일에서 편집을 적용합니다. 그다음 새 HDFS 상태를 fsimage에 쓰고 빈 edits 파일로 정상 동작을 시작해요. NameNode는 fsimage와 edits 파일을 시작할 때만 병합하므로, 바쁜 클러스터에서는 edits 로그 파일이 시간이 지나면서 매우 커질 수 있습니다. edits 파일이 커지면 다음 NameNode 재시작이 더 오래 걸리는 부작용도 있습니다.
Secondary NameNode는 fsimage와 edits 로그 파일을 주기적으로 병합해 edits 로그 크기를 한도 내로 유지합니다. 메모리 요구사항이 주 NameNode와 같은 수준이므로 보통 주 NameNode와 다른 머신에서 실행합니다.
Secondary NameNode의 체크포인트 프로세스 시작은 두 구성 파라미터가 제어합니다.
dfs.namenode.checkpoint.period— 기본 1시간. 연속 두 체크포인트 사이의 최대 지연을 지정.dfs.namenode.checkpoint.txns— 기본 100만. 체크포인트 주기가 도달하지 않았어도 긴급 체크포인트를 강제하는 NameNode의 미체크포인트 트랜잭션 수를 정의.
Secondary NameNode는 최신 체크포인트를 주 NameNode의 디렉터리와 같은 구조의 디렉터리에 저장합니다. 그래서 체크포인트된 이미지가 필요할 때 주 NameNode가 항상 읽을 수 있게 준비됩니다.
명령 사용법은 secondarynamenode를 참고하세요.
Checkpoint Node
NameNode는 두 파일로 네임스페이스를 영속화합니다. fsimage(네임스페이스의 최신 체크포인트)와 edits(체크포인트 이후 네임스페이스 변경의 저널/로그)입니다. NameNode가 시작하면 fsimage와 edits 저널을 병합해 파일 시스템 메타데이터의 최신 보기를 제공하고, 새 HDFS 상태로 fsimage를 덮어쓴 뒤 새 edits 저널을 시작합니다.
Checkpoint node는 주기적으로 네임스페이스의 체크포인트를 만듭니다. active NameNode에서 fsimage와 edits를 다운로드해 로컬에서 병합하고, 새 이미지를 active NameNode에 다시 업로드합니다. Checkpoint node는 메모리 요구사항이 NameNode와 같은 수준이므로 보통 NameNode와 다른 머신에서 실행해요. Checkpoint node는 구성 파일에 지정된 노드에서 bin/hdfs namenode -checkpoint로 시작합니다.
Checkpoint(또는 Backup) node와 그 웹 인터페이스의 위치는 dfs.namenode.backup.address와 dfs.namenode.backup.http-address 구성 변수로 설정합니다.
Checkpoint node의 체크포인트 프로세스 시작은 두 구성 파라미터가 제어합니다.
dfs.namenode.checkpoint.period— 기본 1시간. 연속 두 체크포인트 사이의 최대 지연 지정.dfs.namenode.checkpoint.txns— 기본 100만. 체크포인트 주기가 도달하지 않아도 긴급 체크포인트를 강제하는 미체크포인트 트랜잭션 수 정의.
Checkpoint node는 최신 체크포인트를 NameNode의 디렉터리와 같은 구조의 디렉터리에 저장합니다. 이로써 체크포인트된 이미지가 필요할 때 NameNode가 항상 읽을 수 있게 됩니다. Import checkpoint를 참고하세요.
클러스터 구성 파일에 여러 checkpoint node를 지정할 수 있습니다.
명령 사용법은 namenode를 참고하세요.
Backup Node
Backup node는 Checkpoint node와 같은 체크포인트 기능을 제공하며, 항상 active NameNode 상태와 동기화되는 파일 시스템 네임스페이스의 인메모리 최신 복사본도 유지합니다. NameNode에서 파일 시스템 편집의 저널 스트림을 받아 디스크에 영속화하는 동시에, 그 편집을 자신의 인메모리 네임스페이스 복사본에 적용해 네임스페이스의 백업을 만듭니다.
Backup node는 이미 메모리에 네임스페이스의 최신 상태를 갖고 있으므로, Checkpoint node나 Secondary NameNode처럼 체크포인트를 만들기 위해 active NameNode에서 fsimage와 edits 파일을 다운로드할 필요가 없어요. Backup node 체크포인트 프로세스는 네임스페이스를 로컬 fsimage 파일에 저장하고 edits를 리셋하기만 하면 되므로 더 효율적입니다.
Backup node는 네임스페이스의 복사본을 메모리에 유지하므로 RAM 요구사항이 NameNode와 같습니다.
NameNode는 한 번에 하나의 Backup node를 지원합니다. Backup node가 사용 중이면 Checkpoint node를 등록할 수 없어요. 여러 Backup node를 동시에 사용하는 것은 미래에 지원될 예정입니다.
Backup node는 Checkpoint node와 같은 방식으로 구성합니다. bin/hdfs namenode -backup으로 시작합니다.
Backup(또는 Checkpoint) node와 그 웹 인터페이스의 위치는 dfs.namenode.backup.address와 dfs.namenode.backup.http-address 구성 변수로 설정합니다.
Backup node를 사용하면 NameNode를 영속 저장소 없이 실행하고, 네임스페이스 상태 영속화 책임을 모두 Backup node에 위임하는 옵션이 생깁니다. 이렇게 하려면 -importCheckpoint 옵션으로 NameNode를 시작하고, NameNode 구성에 dfs.namenode.edits.dir 유형의 영속 저장소 디렉터리를 지정하지 않으면 됩니다.
Backup node와 Checkpoint node 생성 동기의 전체 논의는 HADOOP-4539를 참고하세요. 명령 사용법은 namenode를 참고하세요.
Import Checkpoint
이미지와 edits 파일의 다른 모든 복사본이 유실됐다면 최신 체크포인트를 NameNode로 가져올 수 있습니다. 그러려면:
dfs.namenode.name.dir구성 변수가 지정하는 빈 디렉터리를 만듭니다.dfs.namenode.checkpoint.dir구성 변수에 체크포인트 디렉터리 위치를 지정합니다.-importCheckpoint옵션으로 NameNode를 시작합니다.
NameNode는 dfs.namenode.checkpoint.dir 디렉터리에서 체크포인트를 업로드한 뒤 dfs.namenode.name.dir에 설정된 NameNode 디렉터리(들)에 저장합니다. dfs.namenode.name.dir에 유효한 이미지가 있으면 NameNode는 실패합니다. NameNode는 dfs.namenode.checkpoint.dir의 이미지가 일관적인지 검증하지만 어떤 방식으로도 그것을 수정하지 않아요.
명령 사용법은 namenode를 참고하세요.
Balancer
HDFS 데이터가 항상 DataNode에 고르게 배치되지는 않을 수 있습니다. 흔한 이유는 기존 클러스터에 새 DataNode가 추가되기 때문입니다. 새 블록(파일 데이터는 블록 시리즈로 저장됨)을 배치할 때 NameNode는 이 블록을 받을 DataNode를 고르기 전에 다양한 파라미터를 고려합니다. 고려 사항 중 일부는 다음과 같습니다.
- 블록을 쓰는 노드와 같은 노드에 블록의 복제본 하나를 유지하는 정책.
- 블록의 서로 다른 복제본을 랙에 퍼뜨려 클러스터가 랙 전체 손실에도 살아남도록 하는 필요성.
- 보통 파일에 쓰는 노드와 같은 랙에 복제본 하나를 배치해 크로스랙 네트워크 I/O를 줄임.
- HDFS 데이터를 클러스터의 DataNode에 고르게 분산.
여러 경쟁하는 고려사항 때문에 데이터가 DataNode에 고르게 배치되지 않을 수 있어요. HDFS는 관리자를 위해 블록 배치를 분석하고 DataNode에 걸쳐 데이터를 리밸런싱하는 도구를 제공합니다. balancer에 대한 간략한 관리자 가이드는 HADOOP-1652에 있습니다.
Balancer는 두 가지 모드를 지원합니다: 도구로 실행하거나 장기 실행 서비스로 실행.
- 도구 모드: 클러스터 균형을 최선으로 맞추려 하고 다음 조건에서 종료합니다.
- 모든 클러스터가 균형 잡힘.
- 너무 많은 반복 동안 바이트가 이동하지 않음(기본 5).
- 이동할 블록이 없음.
- 클러스터 업그레이드 진행 중.
- 기타 오류.
- 서비스 모드: balancer는 장기 실행 데몬 서비스로 동작합니다. 다음과 같이 동작합니다.
- 각 라운드마다 성공하거나 오류로 반환될 때까지 클러스터 균형을 맞추려 함.
- 각 라운드 사이 간격을 구성할 수 있으며, 간격은
dfs.balancer.service.interval로 설정. - 예상치 못한 예외를 만나면 서비스를 멈추기 전에 몇 번 시도하며,
dfs.balancer.service.retries.on.exception으로 설정.
명령 사용법은 balancer를 참고하세요.
랙 인지 (Rack Awareness)
HDFS 클러스터는 각 노드가 놓인 랙의 토폴로지를 인식할 수 있습니다. 데이터 용량과 사용을 최적화하려면 이 토폴로지를 구성하는 것이 중요해요. 자세한 내용은 common 문서의 rack awareness를 확인하세요.
Safemode
시작 중 NameNode는 fsimage와 edits 로그 파일에서 파일 시스템 상태를 로드합니다. 그다음 클러스터에 이미 충분한 복제본이 있어도 블록 복제를 성급히 시작하지 않도록 DataNode가 블록을 보고하기를 기다립니다. 이 시간 동안 NameNode는 Safemode에 머뭅니다. NameNode의 Safemode는 본질적으로 HDFS 클러스터의 읽기 전용 모드로, 파일 시스템이나 블록에 대한 어떤 수정도 허용하지 않아요. 일반적으로 DataNode가 대부분의 파일 시스템 블록이 사용 가능하다고 보고한 뒤 NameNode는 자동으로 Safemode를 벗어납니다. 필요하면 bin/hdfs dfsadmin -safemode 명령으로 HDFS를 명시적으로 Safemode에 둘 수 있습니다. NameNode 프론트 페이지는 Safemode가 켜져 있는지 보여줍니다. 더 자세한 설명과 구성은 setSafeMode()의 JavaDoc으로 유지됩니다.
fsck
HDFS는 다양한 불일치를 검사하는 fsck 명령을 지원합니다. 다양한 파일의 문제(예: 파일의 누락 블록이나 과소 복제 블록)를 보고하도록 설계되었어요. 네이티브 파일 시스템의 전통적인 fsck 유틸리티와 달리 이 명령은 감지한 오류를 수정하지 않습니다. 보통 NameNode가 복구 가능한 대부분의 실패를 자동으로 수정합니다. 기본적으로 fsck는 열린 파일을 무시하지만 보고 중 모든 파일을 선택하는 옵션을 제공합니다. HDFS fsck 명령은 Hadoop 셸 명령이 아니며 bin/hdfs fsck로 실행합니다. 명령 사용법은 fsck를 참고하세요. fsck는 전체 파일 시스템이나 파일의 부분집합에 대해 실행할 수 있어요.
fetchdt
HDFS는 Delegation Token을 가져와 로컬 시스템의 파일에 저장하는 fetchdt 명령을 지원합니다. 이 토큰은 나중에 비보안 클라이언트에서 보안 서버(예: NameNode)에 접근하는 데 사용할 수 있어요. 유틸리티는 토큰을 얻기 위해 RPC 또는 HTTPS(Kerberos 위)를 사용하므로, 실행 전에 kerberos 티켓이 있어야 합니다(kinit로 티켓 획득). HDFS fetchdt 명령은 Hadoop 셸 명령이 아니며 bin/hdfs fetchdt DTfile로 실행합니다. 토큰을 얻은 뒤에는 HADOOP_TOKEN_FILE_LOCATION 환경 변수를 위임 토큰 파일로 지정해 kerberos 티켓 없이 HDFS 명령을 실행할 수 있어요. 명령 사용법은 fetchdt를 참고하세요.
복구 모드 (Recovery Mode)
보통 여러 메타데이터 저장 위치를 구성합니다. 그러면 하나의 저장 위치가 손상돼도 다른 저장 위치에서 메타데이터를 읽을 수 있어요.
하지만 사용 가능한 저장 위치가 모두 손상된 경우는 어떻게 할까요? 이 경우 Recovery mode라는 특별한 NameNode 시작 모드가 있어 대부분의 데이터를 복구할 수 있게 해 줍니다.
NameNode를 복구 모드로 시작할 수 있습니다: namenode -recover
복구 모드일 때 NameNode는 명령줄에서 데이터를 복구하기 위한 가능한 조치에 대해 대화형으로 물어봅니다.
프롬프트를 원하지 않으면 -force 옵션을 줄 수 있어요. 이 옵션은 복구 모드가 항상 첫 번째 선택지를 고르도록 강제합니다. 보통 그것이 가장 합리적인 선택입니다.
복구 모드는 데이터를 잃을 수 있으므로, 사용 전에 항상 편집 로그와 fsimage를 백업해야 합니다.
업그레이드와 롤백 (Upgrade and Rollback)
기존 클러스터에 Hadoop을 업그레이드할 때, 다른 소프트웨어 업그레이드와 마찬가지로 기존 애플리케이션에 영향을 주는 새 버그나 비호환 변경이 이전에 발견되지 않았을 수 있습니다. 어떤 비자명한 HDFS 설치에서도 데이터를 잃는 것은 선택지가 아니며, HDFS를 처음부터 다시 시작하는 것도 마찬가지입니다. HDFS는 관리자가 이전 버전의 Hadoop으로 돌아가 클러스터를 업그레이드 전 상태로 롤백할 수 있게 해 줍니다. HDFS 업그레이드는 Hadoop Upgrade Wiki 페이지에 더 자세히 설명되어 있어요. HDFS는 한 번에 하나의 백업만 가질 수 있습니다. 업그레이드 전에 관리자는 bin/hadoop dfsadmin -finalizeUpgrade 명령으로 기존 백업을 제거해야 합니다. 다음은 일반적인 업그레이드 절차를 간략히 설명합니다.
- Hadoop 소프트웨어를 업그레이드하기 전에 기존 백업이 있으면 finalize합니다.
- 클러스터를 멈추고 새 버전의 Hadoop을 배포합니다.
-upgrade옵션으로 새 버전을 실행합니다(sbin/start-dfs.sh -upgrade).- 대부분의 경우 클러스터는 잘 동작합니다. 새 HDFS가 잘 동작한다고 판단되면(며칠 운영 후일 수 있음) 업그레이드를 finalize합니다. 클러스터가 finalize될 때까지 업그레이드 전에 존재했던 파일을 삭제해도 DataNode의 실제 디스크 공간이 해제되지 않는다는 점을 주의하세요.
- 옛 버전으로 돌아가야 한다면,
- 클러스터를 멈추고 이전 버전의 Hadoop을 배포합니다.
- 네임노드에서 롤백 명령을 실행합니다(
bin/hdfs namenode -rollback). - 롤백 옵션으로 클러스터를 시작합니다(
sbin/start-dfs.sh -rollback).
새 버전의 HDFS로 업그레이드할 때는 새 HDFS 버전에서 예약된 경로를 이름을 바꾸거나 삭제해야 해요. 업그레이드 중 NameNode가 예약 경로를 만나면 다음과 같은 오류를 출력합니다.
/.reserved is a reserved path and .snapshot is a reserved path component in this version of HDFS. Please rollback and delete or rename this path, or upgrade with the -renameReserved [key-value pairs] option to automatically rename these paths during upgrade.
-upgrade -renameReserved [선택 key-value 쌍]을 지정하면 NameNode가 시작 중 발견한 예약 경로를 자동으로 이름을 바꿉니다. 예를 들어 .snapshot 이름의 모든 경로를 .my-snapshot으로, .reserved를 .my-reserved로 바꾸려면 -upgrade -renameReserved .snapshot=.my-snapshot,.reserved=.my-reserved를 지정합니다.
-renameReserved에 key-value 쌍을 지정하지 않으면 NameNode는 예약 경로에 .<LAYOUT-VERSION>.UPGRADE_RENAMED를 접미사로 붙입니다. 예: .snapshot.-51.UPGRADE_RENAMED.
이 이름 바꾸기 과정에는 몇 가지 주의사항이 있습니다. 가능하면 업그레이드 전에 먼저 hdfs dfsadmin -saveNamespace를 하는 것이 권장됩니다. 편집 로그 연산이 자동으로 이름이 바뀐 파일의 대상을 가리키면 데이터 불일치가 생길 수 있기 때문이에요.
DataNode 핫 스왑 드라이브 (DataNode Hot Swap Drive)
Datanode는 핫 스왑 가능한 드라이브를 지원합니다. 사용자는 DataNode를 종료하지 않고 HDFS 데이터 볼륨을 추가하거나 교체할 수 있어요. 일반적인 핫 스왑 드라이브 절차는 다음과 같습니다.
- 새 저장 디렉터리가 있으면 적절히 포맷하고 마운트합니다.
- 사용자는 DataNode 구성
dfs.datanode.data.dir을 갱신해 실제로 사용할 데이터 볼륨 디렉터리를 반영합니다. - 사용자는
dfsadmin -reconfig datanode HOST:PORT start를 실행해 재구성 프로세스를 시작합니다.dfsadmin -reconfig datanode HOST:PORT status로 재구성 작업의 실행 상태를 조회할 수 있습니다.livenodes를 지정하면 모든 살아있는 데이터노드에서 재구성을 시작·조회하고,decomnodes는 decommission 중인 데이터노드를 대상으로 합니다. HOST:PORT를 지정하면 그 특정 데이터노드에서만 재구성을 시작·조회할 수 있어요.livenodes조회 예는dfsadmin -reconfig datanode livenodes start와dfsadmin -reconfig datanode livenodes status입니다.decomnodes의 명령은dfsadmin -reconfig datanode decomnodes start와dfsadmin -reconfig datanode decomnodes status입니다. - 재구성 작업이 완료되면 사용자는 제거된 데이터 볼륨 디렉터리를 안전하게
umount하고 디스크를 물리적으로 제거할 수 있습니다.
파일 권한과 보안 (File Permissions and Security)
파일 권한은 Linux 같은 익숙한 플랫폼의 파일 권한과 비슷하게 설계됐습니다. 현재 보안은 단순 파일 권한으로 제한됩니다. NameNode를 시작한 사용자가 HDFS의 슈퍼유저로 취급됩니다. 미래 HDFS 버전은 사용자 인증을 위한 Kerberos 같은 네트워크 인증 프로토콜과 데이터 전송 암호화를 지원할 예정입니다. 자세한 내용은 Permissions Guide에서 다룹니다.
확장성 (Scalability)
Hadoop은 현재 수천 개 노드의 클러스터에서 실행됩니다. PoweredBy Wiki 페이지는 대규모 클러스터에 Hadoop을 배포하는 일부 조직을 나열합니다. HDFS는 클러스터마다 NameNode 하나를 가집니다. 현재 NameNode에서 사용 가능한 총 메모리가 주 확장성 제한입니다. 매우 큰 클러스터에서는 HDFS에 저장되는 파일의 평균 크기를 늘리면 NameNode의 메모리 요구사항을 늘리지 않고 클러스터 크기를 키울 수 있어요. 기본 구성은 매우 큰 클러스터에 적합하지 않을 수 있습니다. FAQ Wiki 페이지는 대규모 Hadoop 클러스터를 위한 권장 구성 개선을 나열합니다.
관련 문서 (Related Documentation)
이 사용자 가이드는 HDFS 작업의 좋은 출발점입니다. 사용자 가이드가 계속 개선되는 동안에도 Hadoop과 HDFS에 대한 방대한 문서가 있습니다. 다음 목록은 더 탐구하기 위한 출발점입니다.
- Hadoop Site: Apache Hadoop 사이트 홈페이지.
- Hadoop Wiki: Hadoop Wiki 홈페이지(FrontPage). Hadoop 소스 트리의 일부인 릴리스 문서와 달리 Hadoop Wiki는 Hadoop 커뮤니티가 정기적으로 편집합니다.
- FAQ: FAQ Wiki 페이지.
- Hadoop JavaDoc API.
- Hadoop User 메일링 리스트: user[at]hadoop.apache.org.
- hdfs-default.xml 탐색. 사용 가능한 대부분의 구성 변수에 대한 간략한 설명이 포함됨.
- HDFS Commands Guide: HDFS 명령 사용법.
더 알아보기 (Learn more)
- 원문: 문서