[Hadoop] HDFS의 입출력 (1편)
HDFS의 입출력은 NameNode 으로부터 시작된다.
1. 파일 읽기
2.파일 쓰기
3. 블록을 보관할 노드 선택
4. 랙을 하는 방법
1. 파일 읽기
- 하둡 클라이언트가 파일의 블록들이 보관된 노드 위치를 네임노드를 통해 제공 받는다. (클러스터의 네트워크 위상에 따라 클라이언트와 가까운 순으로 데이터 노드가 정렬됨)
- 보관된 노드의 위치 찾아 파일을 읽는다.
- 하둡 클라이언트는 데이터 노드로 연결이 안 되거나 읽은 블록이 깨져 있는 경우, 네임노드에 해당 블록과 데이터 노드를 통지하고, 다른 데이터노드에서 블록 읽기를 시도함.
2.파일 쓰기
- 하둡 클라이언트가 네임노드에 파일 생성 정보 전송 ( 첫 번째 블록 크기 만큼 로컬에 쌓이면 ) 하둡 클라이언드가 블록을 보관할 노드 목록을 네임노드에 요청한다.
- 하둡 클라이언트가 목록 첫 번째 데이터 노드에 쓴다.
- 이후 데이터 노드가 다른 데이터 노드들에 복제 한다.
- 반복 작업
3. 블록을 보관할 노드 선택
- 한 랙에 동일 블록 복제본이 존재하지 않도록 한다.
- 첫 번째 replica는 가까운 노드(랙)에 보관 또는 의 노드 선택
- 두 번째와 세 번째는 첫 번째와 다른 랙에 보관
- 두 번째/ 세 번째는 동일 랙에 보관
- 데이터 가용성, 읽기/쓰기 성능 고려
- 한 랙이 장애나더라도 서비스 가능
- 쓰기 과정에서 블록 복제시, 랙 간 데이터 이동은 1회
4. 랙을 하는 방법
- 마스터 노드 네트워크 위상 관리
- 외부 설정(+ 스크립트)을 주로 이용(커스텀도 가능함)
- 트리 구조로 거리 구함
댓글
댓글 쓰기