/** | |
* Licensed to the Apache Software Foundation (ASF) under one | |
* or more contributor license agreements. See the NOTICE file | |
* distributed with this work for additional information | |
* regarding copyright ownership. The ASF licenses this file | |
* to you under the Apache License, Version 2.0 (the | |
* "License"); you may not use this file except in compliance | |
* with the License. You may obtain a copy of the License at | |
* | |
* http://www.apache.org/licenses/LICENSE-2.0 | |
* | |
* Unless required by applicable law or agreed to in writing, software | |
* distributed under the License is distributed on an "AS IS" BASIS, | |
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
* See the License for the specific language governing permissions and | |
* limitations under the License. | |
*/ | |
package org.apache.hadoop.dfs; | |
import java.io.*; | |
import java.net.*; | |
import org.apache.hadoop.fs.*; | |
import org.apache.hadoop.dfs.FSConstants.UpgradeAction; | |
import org.apache.hadoop.conf.Configuration; | |
/** | |
* An implementation of ChecksumFileSystem over DistributedFileSystem. | |
* Note that as of now (May 07), DistributedFileSystem natively checksums | |
* all of its data. Using this class is not be necessary in most cases. | |
* Currently provided mainly for backward compatibility and testing. | |
*/ | |
public class ChecksumDistributedFileSystem extends ChecksumFileSystem { | |
public ChecksumDistributedFileSystem() { | |
super( new DistributedFileSystem() ); | |
} | |
/** @deprecated */ | |
public ChecksumDistributedFileSystem(InetSocketAddress namenode, | |
Configuration conf) throws IOException { | |
super( new DistributedFileSystem(namenode, conf) ); | |
} | |
/** Any extra interface that DistributeFileSystem provides can be | |
* accessed with this.*/ | |
DistributedFileSystem getDFS() { | |
return (DistributedFileSystem)fs; | |
} | |
/** Return the total raw capacity of the filesystem, disregarding | |
* replication .*/ | |
public long getRawCapacity() throws IOException{ | |
return getDFS().getRawCapacity(); | |
} | |
/** Return the total raw used space in the filesystem, disregarding | |
* replication .*/ | |
public long getRawUsed() throws IOException{ | |
return getDFS().getRawUsed(); | |
} | |
/** Return statistics for each datanode. */ | |
public DatanodeInfo[] getDataNodeStats() throws IOException { | |
return getDFS().getDataNodeStats(); | |
} | |
/** | |
* Enter, leave or get safe mode. | |
* | |
* @see org.apache.hadoop.dfs.ClientProtocol#setSafeMode(FSConstants.SafeModeAction) | |
*/ | |
public boolean setSafeMode(FSConstants.SafeModeAction action) | |
throws IOException { | |
return getDFS().setSafeMode(action); | |
} | |
/* | |
* Refreshes the list of hosts and excluded hosts from the configured | |
* files. | |
*/ | |
public void refreshNodes() throws IOException { | |
getDFS().refreshNodes(); | |
} | |
/** | |
* Finalize previously upgraded files system state. | |
*/ | |
public void finalizeUpgrade() throws IOException { | |
getDFS().finalizeUpgrade(); | |
} | |
public UpgradeStatusReport distributedUpgradeProgress(UpgradeAction action | |
) throws IOException { | |
return getDFS().distributedUpgradeProgress(action); | |
} | |
/* | |
* Dumps dfs data structures into specified file. | |
*/ | |
public void metaSave(String pathname) throws IOException { | |
getDFS().metaSave(pathname); | |
} | |
/** | |
* We need to find the blocks that didn't match. Likely only one | |
* is corrupt but we will report both to the namenode. In the future, | |
* we can consider figuring out exactly which block is corrupt. | |
*/ | |
public boolean reportChecksumFailure(Path f, | |
FSDataInputStream in, long inPos, | |
FSDataInputStream sums, long sumsPos) { | |
return getDFS().reportChecksumFailure(f, in, inPos, sums, sumsPos); | |
} | |
/** | |
* Returns the stat information about the file. | |
*/ | |
@Override | |
public FileStatus getFileStatus(Path f) throws IOException { | |
return getDFS().getFileStatus(f); | |
} | |
} |