在java

时间:2017-01-31 21:55:52

标签: java linux hadoop hdfs

我正在尝试使用Hadoop Java API为HDFS设置空间配额,但是,我只能在ContentSummary类中找到getSpaceQuota方法。基本上我希望代码实现与sudo -u hdfs hdfs dfsadmin -setSpaceQuota 1k /quotasdir命令相同的功能。有没有设置空间配额方法的API?或者更好的主意?提前谢谢。

1 个答案:

答案 0 :(得分:2)

在Apache Hadoop代码库中,hdfs dfsadmin -setSpaceQuota命令的代码位于DFSAdmin类中。如果您仔细阅读该代码,则会看到它最终委托给DistributedFileSystem#setQuota方法。该方法实现了对NameNode的RPC以修改配额。

如果您想在自己的Java程序中重新实现此功能,那么您可能需要获取FileSystem的实例,将其向下转换为DistributedFileSystem,然后调用{{1 }}

请注意,Apache Hadoop不为DistributedFileSystem#setQuota类提供强大的向后兼容性保证。这意味着在升级到新的Hadoop版本后,您的代码可能会中断。该类注释为DistributedFileSystemLimitedPrivateApache Hadoop Compatibility文档详细描述了这些注释的含义。目前无法保证公开,稳定的API可以更改自定义程序的配额。