Hadoop FSImage 파일 초기 구조

5469 단어
    Namenode 를 포맷 하면 FSImage 파일 이 생 성 됩 니 다. dfs. name. dir 매개 변수 가 지정 한 디 렉 터 리 에 있 는 current 디 렉 터 리 에 최초의 파일 시스템 메타 데이터 정 보 를 기록 합 니 다. 시스템 이 실 행 됨 에 따라 시스템 파일 이 점점 많아 집 니 다. 만약 에 HDFS 파일 수 를 통계 하려 면 셸 이나 API 를 통 해 옮 겨 다 니 는 것 이 귀 찮 습 니 다. HDFS 는 오프라인 데이터 처 리 를 자주 합 니 다.시간 을 끌 어 받 아들 일 수 있다 면 FSIMAGE 를 직접 분석 하 는 방법 으로 관련 정 보 를 통계 할 수 있 습 니 다. 이때 통 계 된 정 보 는 지난번 checkpoint 이후 에 나 온 것 입 니 다. 다음은 소스 코드 를 통 해 기 록 된 FSIMAGE 파일 내용 입 니 다. 그 자체 가 바 이 너 리 파일 이 므 로 일반 텍스트 편집기 로 열 수 없습니다. hadop 소스 버 전 1.0.4.
포맷 할 때 format 매개 변 수 를 namenode 에 전달 합 니 다. 매개 변 수 를 분석 한 후에 해당 하 는 format 함 수 를 실행 합 니 다. 호출 절차 가 간단 합 니 다. 다음은 포맷 된 로그 입 니 다.
13/08/17 15:42:17 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host =ts08/192.168.0.43
STARTUP_MSG:   args =[-format]
STARTUP_MSG:   version =1.0.4
STARTUP_MSG:   build =https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.0 -r 1393290;compiled by 'hortonfo' on Wed Oct  305:13:58 UTC 2012
************************************************************/
Re-format filesystem in C:\hadoop\hname ? (Y or N) Y
13/08/17 15:42:21 INFO util.GSet: VM type       = 32-bit
13/08/17 15:42:21 INFO util.GSet: 2% max memory = 1.27125 MB
13/08/17 15:42:21 INFO util.GSet: capacity      = 2^18 = 262144 entries
13/08/17 15:42:21 INFO util.GSet: recommended=262144,actual=262144
13/08/17 15:42:21 INFO namenode.FSNamesystem:fsOwner=Administrator
13/08/17 15:42:21 INFO namenode.FSNamesystem:supergroup=supergroup
13/08/17 15:42:21 INFO namenode.FSNamesystem:isPermissionEnabled=true
13/08/17 15:42:21 INFO namenode.FSNamesystem:dfs.block.invalidate.limit=100
13/08/17 15:42:21 INFO namenode.FSNamesystem:isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s),accessTokenLifetime=0 min(s)
13/08/17 15:42:21 INFO namenode.NameNode: Caching file namesoccuring more than 10 times
13/08/17 15:42:21 INFO common.Storage: Image file ofsize 119 saved in 0 seconds.
13/08/17 15:42:21 INFO common.Storage: Storage directoryC:\hadoop\hname has been successfully formatted.
13/08/17 15:42:21 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at ts08/192.168.0.43
************************************************************/

FSImage 파일 에 119 바이트 가 기 록 된 것 을 볼 수 있 습 니 다. 추적 을 통 해 이 파일 의 구 조 를 알 수 있 습 니 다. 위의 그림:
                                                                                                                                         FSImage 초기 구조
오프셋
길이
원소명
데이터 형식
값.
원본 파일 이름
소스 코드 위치
코드
0
4
LAYOUT_VERSION
int
-32
FSImage.java
1048
out.writeInt(FSConstants.LAYOUT_VERSION);
4
4
namespaceID
int
1114775793
FSImage.java
1049
out.writeInt(namespaceID);
8
8
INodeDirectoryWithQuota nsCount
long
1
FSImage.java
1050
out.writeLong(fsDir.rootDir.numItemsInTree());
16
8
timestamp
long
xxxxxxxx
FSImage.java
1051
out.writeLong(fsNamesys.getGenerationStamp());
 
 
 
Inode
 
 
 
 
24
2
nameLen
short
0
FSImage.java
1350
out.writeShort(nameLen);
26
2
replication
short
0
FSImage.java
1367
out.writeShort(0); //replication
28
8
ModificationTime
long
xxxxxxxx
FSImage.java
1368
out.writeLong(node.getModificationTime());
36
8
access time
long
0
FSImage.java
1369
out.writeLong(0);  //access time
44
8
preferred block size
long
0
FSImage.java
1370
out.writeLong(0);  //preferred block size
52
4
# of blocks
int
0
FSImage.java
1371
 out.writeInt(-1);   //# of blocks
56
8
NameSpace quota
long
-1
FSImage.java
1372
out.writeLong(node.getNsQuota());
64
8
disk space quota
long
-1
FSImage.java
1373
out.writeLong(node.getDsQuota());
72
1
username length
byte
13
Text.java
411
WritableUtils.writeVInt(out, length);
73
13
username
array[]
administrator
Text.java
412
out.write(bytes.array(), 0, length);
86
1
groupname length
byte
10
Text.java
411
WritableUtils.writeVInt(out, length);
87
10
groupname 
array[]
supergroup
Text.java
412
out.write(bytes.array(), 0, length);
97
2
permission
short
493
PermissionStatus.java
111
permission.write(out);
99
4
paths in lease
int
0
FSNameSystem.java
5443
out.writeInt(leaseManager.countPath());
103
4
currentId
int
0
DelegationTokenSecretManager.java
120
    out.writeInt(currentId);
107
4
allKeys
int
0
DelegationTokenSecretManager.java
244
    out.writeInt(allKeys.size());
111
4
delegationTokenSequenceNumber
int
0
DelegationTokenSecretManager.java
122
    out.writeInt(delegationTokenSequenceNumber);
115
4
CurrentTokens
int
0
DelegationTokenSecretManager.java
123
saveCurrentTokens(out);
 
 
 
 
 
 
 
 

좋은 웹페이지 즐겨찾기