2017-04-14 9 views
1

저는 네임 노드를 이해하려고 노력하고 있습니다. 온라인 자료를 참조하고 하둡 (Hadoop)이라는 책을 참고했습니다 : 최종 가이드입니다.Namenode는 재시작 후 어떻게 전체 블록 정보를 재구성합니까?

나는 네임 노드는 같은 개념이 이해 : "편집 로그", "fsimage"를, 그리고 내 네임 노드에서 다음 파일을 볼 수 있습니다.

============================================== ==========================가 fsimage가 된 블록의 위치를 ​​저장하지 않는 것을 언급 한 그 책에서

-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 23 22:53 edits_0000000000000000001-0000000000000000001 
-rw-r--r-- 1 root  root  1048576 Nov 23 23:42 edits_0000000000000000002-0000000000000000002 
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 24 00:07 edits_0000000000000000003-0000000000000000003 
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 24 21:03 edits_0000000000000000004-0000000000000000004 
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 24 22:59 edits_0000000000000000005-0000000000000000005 
-rw-r--r-- 1 root  root  1048576 Nov 24 23:00 edits_0000000000000000006-0000000000000000006 
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 25 21:15 edits_0000000000000000007-0000000000000000007 
-rw-rw-r-- 1 vevaan24 vevaan24 1048576 Nov 25 21:34 edits_0000000000000000008-0000000000000000008 
-rw-r--r-- 1 root  root  1048576 Nov 26 02:13 edits_inprogress_0000000000000000009 
-rw-rw-r-- 1 vevaan24 vevaan24  355 Nov 25 21:15 fsimage_0000000000000000006 
-rw-rw-r-- 1 vevaan24 vevaan24  62 Nov 25 21:15 fsimage_0000000000000000006.md5 
-rw-r--r-- 1 root  root   355 Nov 26 00:12 fsimage_0000000000000000008 
-rw-r--r-- 1 root  root   62 Nov 26 00:12 fsimage_0000000000000000008.md5 
-rw-r--r-- 1 root  root   2 Nov 26 00:12 seen_txid 
-rw-rw-r-- 1 vevaan24 vevaan24  201 Nov 26 00:12 VERSION 

에게 그것.

나는 다음 한 질문 :

1)뿐만 아니라 edit logs 저장 블록 위치합니까? (새로운 거래를위한?)

네임 노드와 데이터 노드는 블록 주소를 가져 네임 노드 않는 방법으로 다시 시작됩니다

2)? 내 의심은 NN이 파일 시스템 정보를 재구성하기 위해 fsimage을 읽었지만, fsimage에는 블록 위치 정보가 없으므로이 정보가 재구성되는 방법은 무엇입니까?

3) fsimage블록 ID 만으로 저장되며, 그렇다면 데이터 노드간에 고유 한 BLOCK ID입니까? 블록 ID블록 주소과 동일합니까? 즉

답변

1

블록 위치 블록이 저장되어있는 데이타 노드는 fsimage 파일이나 edit log에 유지되지도 않는다. 네임 노드는이 매핑을 메모리에만 유지합니다.

는 저장되는 블록들의리스트의 정보를 저장하기 위해 각 데이터 노드의 책임이다.

다시 시작하는 동안 네임 노드는 파일을 메모리에로드하고 edit log에서 편집 내용을 적용합니다. 차단 위치 정보가 누락 된 것은 차단 목록으로 체크인 할 때 데이터 노드에서 가져옵니다. 네임 노드는 블록 목록의 정보와 함께 블록의 메모리 위치를 매핑합니다.

fsimage는 블록 ID 이상을 갖는다. 파일 블록, 블록 크기, 복제 요소, 액세스 시간, 수정 시간, 파일 권한과 같은 정보를 보유하지만 블록의 위치는 보유하지 않습니다.

, 블록 ID는 고유합니다. 블록 주소는 블록이 상주하는 데이터 노드의 주소를 나타냅니다.

+0

세부 정보를 제공해 주셔서 감사합니다. 그러나 내가 아직 이해할 수없는 한 가지. 데이터 노드는 블록 형식의 데이터를 가지고 있지만 DN은 주어진 블록이 속한 파일을 어떻게 알 수 있습니까? DN이 NN에 블록 정보를 제공하지만이 방법이 DN의 주어진 파일에 대한 블록 주소를 찾는 데 어떻게 도움이되는지 동의합니다. – CuriousMind

+1

블록은 블록 ID로 식별되며 고유합니다. 데이터 노드는이 정보를 보유합니다. – franklinsijo

+0

이렇게 평균 DN은 블록 ID를 NN으로 보내고 fsimage는 블록 ID 정보를 가지므로 블록 ID를 기반으로 매핑을 수행합니다. 이것이 올바른 경우에는 의미가 있습니다. 그리고이 작업을 위해 id를 모든 hdfs 클러스터에서 고유하게 만들 필요가 있습니다.이 올바른 이해인가? – CuriousMind