본문 바로가기

Total220

HDFS에 파일을 저장할 때, 데이터 노드 장애로 Replication을 모두 저장하지 못한 경우 Replication=3로 설정된 HDFS에서 파일을 저장할 때, 특정 데이터 노드에서 장애가 발생한다면 어떻게 될까? 데이터노드 1, 2, 3에 쓴다고 가정하자. 만약 데이터노드2가 장애로 작성에 실패한다면 HDFS 클라이언트 요청은 데이터노드 1, 3에만 저장하고 정상 종료된다. Replication=3으로 설정되어 있음에도 복제본 2개만 가지고 종료된다. 단 네임노드에 불완전 복제 블록으로 알려준다. 질문: 그렇다면 Replication=3이므로 3번째 복제본은 누가 작성하는 것일까? 답변: 결론부터 이야기하면 네임노드가 데이터노드에 복제요청을 한다. 복제 블록의 상태에는 여러 가지가 있다.(CDH 공식문서) 각 상태마다 네임노드가 처리하는 방식에 차이가 있는 듯 하다. 다음에 HDFS 복구 플랜에.. 2017. 4. 24.
HDFS 네임노드에서 metadata size 한계는 어떻게 될까? HDFS에서 각 파일들은 블록(128MB) 단위로 나눠져 여러 데이터노드에 저장된다.(복제본 포함) 이 때 네임노드는 각 블록들의 위치 정보(metadata)를 메모리에 저장하게 되고 클라이언트가 특정 파일을 읽을 때, 블록들의 위치 정보를 알려주게 되어 있다. FsImage와 EditLog 네임노드에서 FsImage나 EditLog에 기록을 파일로 남기고 있으나, 메모리에 유지한 정보만 서비스한다. FsImage: 파일들의 metadata를 저장하고 있는 파일. 파일 메타 정보의 Snapshot이라고 할 수 있다. EditLog: 오라클의 Transaction Log 같은 기능을 담당하고 있다. 네임노드가 관리하는 파일 메타 정보에 변경이 있는 경우 한 줄씩 등록된다. 이 정보는 추후 Secondary.. 2017. 4. 24.
상속 구조의 모델 객체에서 Lombok의 @Builder, @Delegate 사용기 아래 글은 Lombok 1.16.16 기반에서 작성되었다. Lombok에서 @Builder를 사용하다 보니 상속 구조에서 불필요한 코드를 작성해야 하는 경우가 있었다. 예를 들어 아래와 같이 두 모델 객체가 있다고 하자. @Data @AllArgsConstructor public class User { protected String id; protected String name; } @Data public class AdminUser extends User { private String roleId; private String roleName; @Builder public AdminUser(String id, String name, String roleId, String roleName) { super(.. 2017. 4. 21.
[하둡완벽가이드] 3장 HDFS Hadoop이란?MapReduce + HDFS + (YARN) HDFS 데이터 블록 크기 = 128MB HDFS 구성요소Namenode: 데이터 블록의 위치를 저장Secondary Namenode: HDFS 파일시스템 이미지 및 Edit Log 병합DataNode: 데이터 블록 저장 데이터 읽기 데이터 쓰기 첨부 2017. 4. 19.