|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.hadoop.dfs.NameNode
public class NameNode
NameNode serves as both directory namespace manager and "inode table" for the Hadoop DFS. There is a single NameNode running in any DFS deployment. (Well, except when there is a second backup/failover NameNode.) The NameNode controls two critical tables: 1) filename->blocksequence (namespace) 2) block->machinelist ("inodes") The first table is stored on disk and is very precious. The second table is rebuilt every time the NameNode comes up. 'NameNode' refers to both this class as well as the 'NameNode server'. The 'FSNamesystem' class actually performs most of the filesystem management. The majority of the 'NameNode' class itself is concerned with exposing the IPC interface to the outside world, plus some configuration management. NameNode implements the ClientProtocol interface, which allows clients to ask for DFS services. ClientProtocol is not designed for direct use by authors of DFS client code. End-users should instead use the org.apache.nutch.hadoop.fs.FileSystem class. NameNode also implements the DatanodeProtocol interface, used by DataNode programs that actually store DFS data blocks. These methods are invoked repeatedly and automatically by all the DataNodes in a DFS deployment.
Nested Class Summary | |
---|---|
static class |
DatanodeProtocol.DataNodeAction
Determines actions that data node should perform when receiving a block command. |
Nested classes/interfaces inherited from interface org.apache.hadoop.dfs.FSConstants |
---|
FSConstants.NodeType, FSConstants.SafeModeAction, FSConstants.StartupOption |
Field Summary | |
---|---|
static int |
DISK_ERROR
|
static int |
INVALID_BLOCK
|
static org.apache.commons.logging.Log |
LOG
|
static int |
NOTIFY
|
static org.apache.commons.logging.Log |
stateChangeLog
|
static long |
versionID
|
static long |
versionID
|
Constructor Summary | |
---|---|
NameNode(Configuration conf)
Start NameNode. |
|
NameNode(String bindAddress,
int port,
Configuration conf)
Create a NameNode at the specified location and start it. |
Method Summary | |
---|---|
void |
abandonBlock(org.apache.hadoop.dfs.Block b,
String src)
The client needs to give up on the block. |
void |
abandonFileInProgress(String src,
String holder)
A client that wants to abandon writing to the current file should call abandonFileInProgress(). |
org.apache.hadoop.dfs.LocatedBlock |
addBlock(String src,
String clientName)
A client that wants to write an additional block to the indicated filename (which must currently be open for writing) should call addBlock(). |
void |
blockReceived(org.apache.hadoop.dfs.DatanodeRegistration nodeReg,
org.apache.hadoop.dfs.Block[] blocks)
blockReceived() allows the DataNode to tell the NameNode about recently-received block data. |
org.apache.hadoop.dfs.DatanodeCommand |
blockReport(org.apache.hadoop.dfs.DatanodeRegistration nodeReg,
org.apache.hadoop.dfs.Block[] blocks)
blockReport() tells the NameNode about all the locally-stored blocks. |
boolean |
complete(String src,
String clientName)
The client is done writing data to the given filename, and would like to complete it. |
org.apache.hadoop.dfs.LocatedBlock |
create(String src,
String clientName,
boolean overwrite,
short replication,
long blockSize)
Create a new file. |
boolean |
delete(String src)
Remove the given filename from the filesystem |
void |
errorReport(org.apache.hadoop.dfs.DatanodeRegistration nodeReg,
int errorCode,
String msg)
errorReport() tells the NameNode about something that has gone awry. |
boolean |
exists(String src)
Check whether the given file exists |
void |
finalizeUpgrade()
Finalize previous upgrade. |
static void |
format(Configuration conf)
Format a new filesystem. |
long |
getBlockSize(String filename)
Get the block size for the given file. |
DatanodeInfo[] |
getDatanodeReport()
Get a full report on the system's current datanodes. |
long |
getEditLogSize()
Returns the size of the current edit log. |
File |
getFsEditName()
Returns the name of the edits file |
File |
getFsImageName()
Returns the name of the fsImage file |
File[] |
getFsImageNameCheckpoint()
Returns the name of the fsImage file uploaded by periodic checkpointing |
String[][] |
getHints(String src,
long start,
long len)
getHints() returns a list of hostnames that store data for a specific file region. |
org.apache.hadoop.dfs.DFSFileInfo[] |
getListing(String src)
Get a listing of the indicated directory |
InetSocketAddress |
getNameNodeAddress()
Returns the address on which the NameNodes is listening to. |
long |
getProtocolVersion(String protocol,
long clientVersion)
Return protocol version corresponding to protocol interface. |
long[] |
getStats()
Get a set of statistics about the filesystem. |
boolean |
isDir(String src)
Check whether the given filename is a directory or not. |
void |
join()
Wait for service to finish. |
static void |
main(String[] argv)
|
void |
metaSave(String filename)
Dumps namenode state into specified file |
boolean |
mkdirs(String src)
Create a directory (or hierarchy of directories) with the given name. |
boolean |
obtainLock(String src,
String clientName,
boolean exclusive)
Deprecated. |
org.apache.hadoop.dfs.LocatedBlock[] |
open(String src)
Open an existing file, at the given name. |
void |
refreshNodes()
Tells the namenode to reread the hosts and exclude files. |
org.apache.hadoop.dfs.DatanodeRegistration |
register(org.apache.hadoop.dfs.DatanodeRegistration nodeReg,
String networkLocation)
Register Datanode. |
boolean |
releaseLock(String src,
String clientName)
Deprecated. |
boolean |
rename(String src,
String dst)
Rename an item in the fs namespace |
void |
renewLease(String clientName)
Client programs can cause stateful changes in the NameNode that affect other clients. |
void |
reportBadBlocks(org.apache.hadoop.dfs.LocatedBlock[] blocks)
The client has detected an error on the specified located blocks and is reporting them to the server. |
void |
rollEditLog()
Roll the edit log. |
void |
rollFsImage()
Roll the image |
org.apache.hadoop.dfs.DatanodeCommand |
sendHeartbeat(org.apache.hadoop.dfs.DatanodeRegistration nodeReg,
long capacity,
long remaining,
int xmitsInProgress,
int xceiverCount)
Data node notify the name node that it is alive Return a block-oriented command for the datanode to execute. |
boolean |
setReplication(String src,
short replication)
Set replication for an existing file. |
boolean |
setSafeMode(FSConstants.SafeModeAction action)
Enter, leave or get safe mode. |
void |
stop()
Stop all NameNode threads and wait for all to finish. |
void |
verifyRequest(org.apache.hadoop.dfs.DatanodeRegistration nodeReg)
Verify request. |
void |
verifyVersion(int version)
Verify version. |
org.apache.hadoop.dfs.NamespaceInfo |
versionRequest()
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final org.apache.commons.logging.Log LOG
public static final org.apache.commons.logging.Log stateChangeLog
public static final long versionID
public static final long versionID
public static final int NOTIFY
public static final int DISK_ERROR
public static final int INVALID_BLOCK
Constructor Detail |
---|
public NameNode(Configuration conf) throws IOException
The name-node can be started with one of the following startup options:
REGULAR
- normal startupFORMAT
- format name nodeUPGRADE
- start the cluster
upgrade and create a snapshot of the current file system stateROLLBACK
- roll the
cluster back to the previous statezero
in the conf.
conf
- confirguration
IOException
public NameNode(String bindAddress, int port, Configuration conf) throws IOException
zero
.
IOException
Method Detail |
---|
public long getProtocolVersion(String protocol, long clientVersion) throws IOException
VersionedProtocol
protocol
- The classname of the protocol interfaceclientVersion
- The version of the protocol that the client speaks
IOException
public static void format(Configuration conf) throws IOException
IOException
public void join()
public void stop()
public org.apache.hadoop.dfs.LocatedBlock[] open(String src) throws IOException
IOException
public org.apache.hadoop.dfs.LocatedBlock create(String src, String clientName, boolean overwrite, short replication, long blockSize) throws IOException
IOException
public boolean setReplication(String src, short replication) throws IOException
src
- file namereplication
- new replication
IOException
public org.apache.hadoop.dfs.LocatedBlock addBlock(String src, String clientName) throws IOException
IOException
public void abandonBlock(org.apache.hadoop.dfs.Block b, String src) throws IOException
IOException
public void abandonFileInProgress(String src, String holder) throws IOException
src
- The filenameholder
- The datanode holding the lease
IOException
public boolean complete(String src, String clientName) throws IOException
IOException
public void reportBadBlocks(org.apache.hadoop.dfs.LocatedBlock[] blocks) throws IOException
blocks
- Array of located blocks to report
IOException
public String[][] getHints(String src, long start, long len) throws IOException
IOException
public long getBlockSize(String filename) throws IOException
filename
- The name of the file
IOException
public boolean rename(String src, String dst) throws IOException
IOException
public boolean delete(String src) throws IOException
IOException
public boolean exists(String src) throws IOException
IOException
public boolean isDir(String src) throws IOException
IOException
public boolean mkdirs(String src) throws IOException
IOException
@Deprecated public boolean obtainLock(String src, String clientName, boolean exclusive) throws IOException
IOException
@Deprecated public boolean releaseLock(String src, String clientName) throws IOException
IOException
public void renewLease(String clientName) throws IOException
IOException
public org.apache.hadoop.dfs.DFSFileInfo[] getListing(String src) throws IOException
IOException
public long[] getStats() throws IOException
IOException
public DatanodeInfo[] getDatanodeReport() throws IOException
IOException
public boolean setSafeMode(FSConstants.SafeModeAction action) throws IOException
Safe mode is a name node state when it
Safe mode is entered automatically at name node startup.
Safe mode can also be entered manually using
setSafeMode(SafeModeAction.SAFEMODE_GET)
.
At startup the name node accepts data node reports collecting information about block locations. In order to leave safe mode it needs to collect a configurable percentage called threshold of blocks, which satisfy the minimal replication condition. The minimal replication condition is that each block must have at least dfs.replication.min replicas. When the threshold is reached the name node extends safe mode for a configurable amount of time to let the remaining data nodes to check in before it will start replicating missing blocks. Then the name node leaves safe mode.
If safe mode is turned on manually using
setSafeMode(SafeModeAction.SAFEMODE_ENTER)
then the name node stays in safe mode until it is manually turned off
using setSafeMode(SafeModeAction.SAFEMODE_LEAVE)
.
Current state of the name node can be verified using
setSafeMode(SafeModeAction.SAFEMODE_GET)
action
- IOException
public void refreshNodes() throws IOException
IOException
public long getEditLogSize() throws IOException
IOException
public void rollEditLog() throws IOException
IOException
public void rollFsImage() throws IOException
IOException
public void finalizeUpgrade() throws IOException
IOException
public void metaSave(String filename) throws IOException
IOException
public org.apache.hadoop.dfs.DatanodeRegistration register(org.apache.hadoop.dfs.DatanodeRegistration nodeReg, String networkLocation) throws IOException
DatanodeRegistration
, which contains
new storageID if the datanode did not have one and
registration ID for further communication.
IOException
DataNode.register()
,
FSNamesystem.registerDatanode(DatanodeRegistration, String)
public org.apache.hadoop.dfs.DatanodeCommand sendHeartbeat(org.apache.hadoop.dfs.DatanodeRegistration nodeReg, long capacity, long remaining, int xmitsInProgress, int xceiverCount) throws IOException
IOException
public org.apache.hadoop.dfs.DatanodeCommand blockReport(org.apache.hadoop.dfs.DatanodeRegistration nodeReg, org.apache.hadoop.dfs.Block[] blocks) throws IOException
IOException
public void blockReceived(org.apache.hadoop.dfs.DatanodeRegistration nodeReg, org.apache.hadoop.dfs.Block[] blocks) throws IOException
IOException
public void errorReport(org.apache.hadoop.dfs.DatanodeRegistration nodeReg, int errorCode, String msg) throws IOException
IOException
public org.apache.hadoop.dfs.NamespaceInfo versionRequest() throws IOException
IOException
public void verifyRequest(org.apache.hadoop.dfs.DatanodeRegistration nodeReg) throws IOException
nodeReg
- data node registration
IOException
public void verifyVersion(int version) throws IOException
version
-
IOException
public File getFsImageName() throws IOException
IOException
public File[] getFsImageNameCheckpoint() throws IOException
IOException
public File getFsEditName() throws IOException
IOException
public InetSocketAddress getNameNodeAddress()
public static void main(String[] argv) throws Exception
Exception
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |