예를 들어 hadoop0.21를 가져가 라.
Namenode.java: 주요 유지 보수 system 네임 스페이스 파일 및 메타 데이터 파일, 다음 코드에 대 한 설명입니다.
/ * * * & http://www.aliyun.com/zixun/aggregation/37954. HTML > nbsp;
* Namenode 두 디렉터리 네임 스페이스 관리자 역할 및
* Hadoop DFS에 대 한 Inode 테이블입니다. 싱글 namenode는
* 모든 DFS 배포에서 실행. (확인 때를 제외 하 고 거기
* 두 번째 백업/장애 조치 namenode는.)
*
*는 Namenode 제어 두 중요 한 테이블:
* 1) 파일 이름-> blocksequence (네임 스페이스)
* 2) 블록-> machinelist ("Inode")
*
*에 저장 된 디스크는 매우 귀중 한.
*는 두 번째 표는 Namenode 온다 때마다 다시
* 최대입니다.
*
* ' Namenode' 'Namenode 서버'로이 두 클래스를 가리킵니다.
* 'Fsnamesystem' 클래스는 실제로 파일 시스템의 대부분을 수행
* 관리입니다. 대부분 'Namenode' 클래스 자체의 우려
* IPC 인터페이스와 HTTP 서버 외부 세계에 노출 된
* 플러스 일부 구성 관리입니다.
*
* Namenode는 ClientProtocol 인터페이스를 구현 수 있는
* DFS 서비스에 대 한 클라이언트입니다. ClientProtocol 아니다.
* DFS 클라이언트 코드의 작성자와 직접 위해 설계 되었습니다. 최종 사용자
* Org.apache.nutch.hadoop.fs.FileSystem 클래스를 사용 하 여 대신 한다.
*
* Namenode는 또한에서 사용 하는 Datanodeprotocol 인터페이스를 구현
* Datanode 실제로 DFS 데이터 블록을 저장 하는 프로그램. 이러한
* 메서드가 반복적으로 자동으로 호출 되는
* DFS 배포에서 Datanodes입니다.
*
* Namenode는 또한에서 사용 하는 Namenodeprotocol 인터페이스를 구현
* 보조 namenodes 또는 부분을 재조정 프로세스의
* 주, 예를 들어 blocksmap 등입니다.
**********************************************************/
Fsnamesystem.java: 여러 테이블의 정보에의 주요 유지 보수: 파일 이름 및 차단 목록의 유지 관리 heatbeat 노드 LRU 업데이트 유효한 블록 세트, 블록 및 노드 목록 매핑 관계, 노드 및 차단 목록 매핑 관계; 관계 매핑 캐시
/***************************************************
* Fsnamesystem에 대 한 실제 부 기 작업을 수행 합니다
* Datanode입니다.
*
* 그것은 몇 가지 중요 한 테이블을 추적합니다.
*
* 1) 유효한 FSName-> 차단 목록 (디스크, 기록에 보관)
* 2) 집합이 모든 유효한 블록 (거꾸로 #1)
* 3) 블록-> machinelist (메모리, 동적으로 보고서에서 재건에 보관)
* 4) 기계-> 차단 목록 (거꾸로 #2)
* 업데이트-하트 비트 기계의 5) LRU 캐시
***************************************************/
INode.java:HDFS 파일 및 파일 디렉토리 Inode에 추상화합니다.
/**
* 우리는 메모리 내 표현을 파일/블록 계층의 유지.
* 이것은 기본 INode 클래스 파일에 대 한 공통 필드를 포함 하 고
* 디렉토리 inode입니다.
*/
Fsimage.java: inode 정보 디스크 fsimage 유지 될 필요가 있다.
/**
* Fsimage 검사점 및 로깅 네임 스페이스 편집 처리합니다.
*
*/
Fseditlog.java: 쓰기 파일 편집
/**
* Fseditlog의 네임 스페이스 수정 로그를 유지 관리합니다.
*
*/
BlockInfo.java:INode 주로 파일 및 디렉터리 정보 이며이 블록에 의해 설명 파일의 내용에 대 한. 파일의 길이 순서로, 고정 크기, 파일 크기, 다음 시작 파일의 0 오프셋, 그리고 다음 분할 및 수는 고 각 청크를 블록으로 분할 가정 합니다.
/**
* 내부 클래스 메타 데이터 블록입니다.
*/
Datanodedescriptor.java: 특정 저장소 개체를 나타냅니다.
/**************************************************
* 주어진된 datanode에 Datanodedescriptor 트랙 통계
* 사용 가능한 스토리지 용량와 같은 최근 업데이트, 등.,
*는 datanode에 저장 된 블록의 집합을 유지 관리 하 고.
*
*이 데이터 구조는 데이터 구조는 내부
*에 Namenode. 그것은 * 하지 * 클라이언트를 통해 실시간 전송
* 나는 datnodes입니다. 그것은에 지속적으로 저장 되는
* Fsimage입니다.
**************************************************/
Fsdirectory.java: 나타냅니다 HDFs에 모든 디렉터리 및 구조 속성을
/*************************************************
* Fsdirectory 저장 파일 시스템 디렉터리 상태 합니다.
* 디스크, 및 로깅 글/로드 값 처리
우리가 서을 변경.
*
* 파일 이름 유지 blockset 매핑 항상 전류->
* 그리고 디스크에 기록.
*
*************************************************/
Editlogoutputstream.java: 모든 로깅 콘크리트 인스턴스화에 Editlogoutputstream 출력은 여러 개의 editlogfileoutputstream 및는 Editlogbackupoutputstream Editlogoutputstream의이 그룹 포함
/**
* 편집의 저널링을 지원 하기 위해 일반 추상 클래스에 로그인
*는 영구 저장소.
*/
Editlogfileoutputstream.java: 편집 또는 edits.new 로그 레코드를 씁니다.
/**
* 추상 클래스 {Editlogoutputstream @link} 구현 하
* 편집 로컬 파일에 저장합니다.
*/
Editlogbackupoutputstream.java: 네트워크는 Backupnode 로그를 보냅니다.
/**
* 추상 클래스 {Editlogoutputstream @link} 구현
* 어떤 백업 노드로 수정을 스트리밍합니다.
*
* @see org.apache.hadoop.hdfs.server.protocol.namenodeprotocol#journal
* (Org.apache.hadoop.hdfs.server.protocol.NamenodeRegistration,
* int, int, byte[])
*/
BackupNode.java:name 노드의 백업: 업그레이드 단계: 보조 이름 노드 검사점 노드 (정기적으로 메타 데이터, 정기적 검사점) 저장-"백업 노드" ( 거울은 정확 하 게 같은 이름 노드를 메모리에 유지 하 고 변경, 자체 Namenode 대기 노드 (뜨거운 대기)에서 다운로드 하지 않고 검사점을 미러링을 사용 하는 메타 데이터를 업데이트
/**
* Backupnode입니다.
* < p >
* 백업 노드는 두 가지 역할을 재생할 수 있습니다.
* < ol >
* < 리 > {@link Namenoderole #checkpoint} 노드는 정기적으로 검사점을 만듭니다.
*의 다운로드 이미지와 활성 노드에서 편집 병합, 그리고
* 활성을 다시 새 이미지를 업로드합니다. < /li >
* < 리 > {@link Namenoderole #backup} 노드 동기화에 네임 스페이스를 유지 합니다
* 활성 노드를 단순히 저장 하 여 정기적으로 검사점을 만듭니다는
* 로컬 디스크 (s) Namespace 이미지. < /li >
* < /ol >
*/
Backupstorage.java: 백업 노드 디렉토리에는 Jspool를 생성 하 고 출력 스트림에 Edits.new를 가리키도록 edits.new를 만들
/**
* 검사점에서에서 로드할 경우에만 로컬 파일 메모리는 ' 비어. < br >
* 새로운 검사점 이름 노드에서 받은 시간을 설정 합니다. < br >
< 코드 > lastcheckpoint.tmp를 이동 < / 코드 > < 코드 > previous.checkpoint에 < / 코드 >.
* @throws IOException
*/
Transferfsimage.java: 이름 노드에서 파일에 대 한 책임.
/**
*이 클래스는 Namenode에서 지정된 된 파일을 페치를 제공 합니다.
*/
Getimageservlet.java: doget 요청을 처리 하는 httpservlet 서브 클래스가입니다.
/**
*이 클래스는 파일을 검색 하려면 Namesystem의 부두에 사용 되었다.
* 일반적으로 보조 namenode에서 이미지 검색을 사용 하 고
* 정기적 검사점에 대 한 파일을 편집 합니다.
*/