|
@@ -19,8 +19,10 @@ package org.apache.hadoop.hdfs.tools;
|
|
|
|
|
|
import org.apache.hadoop.conf.Configuration;
|
|
|
import org.apache.hadoop.conf.Configured;
|
|
|
+import org.apache.hadoop.fs.FileSystem;
|
|
|
+import org.apache.hadoop.fs.BlockStoragePolicySpi;
|
|
|
+import org.apache.hadoop.fs.FileStatus;
|
|
|
import org.apache.hadoop.fs.Path;
|
|
|
-import org.apache.hadoop.hdfs.DistributedFileSystem;
|
|
|
import org.apache.hadoop.hdfs.protocol.BlockStoragePolicy;
|
|
|
import org.apache.hadoop.hdfs.protocol.HdfsConstants;
|
|
|
import org.apache.hadoop.hdfs.protocol.HdfsFileStatus;
|
|
@@ -29,6 +31,7 @@ import org.apache.hadoop.util.StringUtils;
|
|
|
import org.apache.hadoop.util.Tool;
|
|
|
import org.apache.hadoop.util.ToolRunner;
|
|
|
|
|
|
+import java.io.FileNotFoundException;
|
|
|
import java.io.IOException;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.Collection;
|
|
@@ -100,11 +103,12 @@ public class StoragePolicyAdmin extends Configured implements Tool {
|
|
|
|
|
|
@Override
|
|
|
public int run(Configuration conf, List<String> args) throws IOException {
|
|
|
- final DistributedFileSystem dfs = AdminHelper.getDFS(conf);
|
|
|
+ final FileSystem fs = FileSystem.get(conf);
|
|
|
try {
|
|
|
- Collection<BlockStoragePolicy> policies = dfs.getAllStoragePolicies();
|
|
|
+ Collection<? extends BlockStoragePolicySpi> policies =
|
|
|
+ fs.getAllStoragePolicies();
|
|
|
System.out.println("Block Storage Policies:");
|
|
|
- for (BlockStoragePolicy policy : policies) {
|
|
|
+ for (BlockStoragePolicySpi policy : policies) {
|
|
|
if (policy != null) {
|
|
|
System.out.println("\t" + policy);
|
|
|
}
|
|
@@ -149,32 +153,43 @@ public class StoragePolicyAdmin extends Configured implements Tool {
|
|
|
}
|
|
|
|
|
|
Path p = new Path(path);
|
|
|
- final DistributedFileSystem dfs = AdminHelper.getDFS(p.toUri(), conf);
|
|
|
+ final FileSystem fs = FileSystem.get(conf);
|
|
|
try {
|
|
|
- HdfsFileStatus status = dfs.getClient().getFileInfo(
|
|
|
- Path.getPathWithoutSchemeAndAuthority(p).toString());
|
|
|
- if (status == null) {
|
|
|
+ FileStatus status;
|
|
|
+ try {
|
|
|
+ status = fs.getFileStatus(p);
|
|
|
+ } catch (FileNotFoundException e) {
|
|
|
System.err.println("File/Directory does not exist: " + path);
|
|
|
return 2;
|
|
|
}
|
|
|
- byte storagePolicyId = status.getStoragePolicy();
|
|
|
- if (storagePolicyId == HdfsConstants.BLOCK_STORAGE_POLICY_ID_UNSPECIFIED) {
|
|
|
- System.out.println("The storage policy of " + path + " is unspecified");
|
|
|
- return 0;
|
|
|
- }
|
|
|
- Collection<BlockStoragePolicy> policies = dfs.getAllStoragePolicies();
|
|
|
- for (BlockStoragePolicy policy : policies) {
|
|
|
- if (policy.getId() == storagePolicyId) {
|
|
|
- System.out.println("The storage policy of " + path + ":\n" + policy);
|
|
|
+
|
|
|
+ if (status instanceof HdfsFileStatus) {
|
|
|
+ byte storagePolicyId = ((HdfsFileStatus)status).getStoragePolicy();
|
|
|
+ if (storagePolicyId ==
|
|
|
+ HdfsConstants.BLOCK_STORAGE_POLICY_ID_UNSPECIFIED) {
|
|
|
+ System.out.println("The storage policy of " + path
|
|
|
+ + " is unspecified");
|
|
|
return 0;
|
|
|
}
|
|
|
+ Collection<? extends BlockStoragePolicySpi> policies =
|
|
|
+ fs.getAllStoragePolicies();
|
|
|
+ for (BlockStoragePolicySpi policy : policies) {
|
|
|
+ if (policy instanceof BlockStoragePolicy) {
|
|
|
+ if (((BlockStoragePolicy)policy).getId() == storagePolicyId) {
|
|
|
+ System.out.println("The storage policy of " + path
|
|
|
+ + ":\n" + policy);
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
+ System.err.println(getName() + " is not supported for filesystem "
|
|
|
+ + fs.getScheme() + " on path " + path);
|
|
|
+ return 2;
|
|
|
} catch (Exception e) {
|
|
|
System.err.println(AdminHelper.prettifyException(e));
|
|
|
return 2;
|
|
|
}
|
|
|
- System.err.println("Cannot identify the storage policy for " + path);
|
|
|
- return 2;
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -218,9 +233,9 @@ public class StoragePolicyAdmin extends Configured implements Tool {
|
|
|
return 1;
|
|
|
}
|
|
|
Path p = new Path(path);
|
|
|
- final DistributedFileSystem dfs = AdminHelper.getDFS(p.toUri(), conf);
|
|
|
+ final FileSystem fs = FileSystem.get(conf);
|
|
|
try {
|
|
|
- dfs.setStoragePolicy(p, policyName);
|
|
|
+ fs.setStoragePolicy(p, policyName);
|
|
|
System.out.println("Set storage policy " + policyName + " on " + path);
|
|
|
} catch (Exception e) {
|
|
|
System.err.println(AdminHelper.prettifyException(e));
|
|
@@ -264,9 +279,9 @@ public class StoragePolicyAdmin extends Configured implements Tool {
|
|
|
}
|
|
|
|
|
|
Path p = new Path(path);
|
|
|
- final DistributedFileSystem dfs = AdminHelper.getDFS(p.toUri(), conf);
|
|
|
+ final FileSystem fs = FileSystem.get(conf);
|
|
|
try {
|
|
|
- dfs.unsetStoragePolicy(p);
|
|
|
+ fs.unsetStoragePolicy(p);
|
|
|
System.out.println("Unset storage policy from " + path);
|
|
|
} catch (Exception e) {
|
|
|
System.err.println(AdminHelper.prettifyException(e));
|