我正在尝试使用Hadoop Java API为HDFS设置空间配额,但是,我只能在ContentSummary类中找到getSpaceQuota方法。基本上我希望代码实现与sudo -u hdfs hdfs dfsadmin -setSpaceQuota 1k /quotasdir
命令相同的功能。有没有设置空间配额方法的API?或者更好的主意?提前谢谢。
答案 0 :(得分:2)
在Apache Hadoop代码库中,hdfs dfsadmin -setSpaceQuota
命令的代码位于DFSAdmin
类中。如果您仔细阅读该代码,则会看到它最终委托给DistributedFileSystem#setQuota
方法。该方法实现了对NameNode的RPC以修改配额。
如果您想在自己的Java程序中重新实现此功能,那么您可能需要获取FileSystem
的实例,将其向下转换为DistributedFileSystem
,然后调用{{1 }}
请注意,Apache Hadoop不为DistributedFileSystem#setQuota
类提供强大的向后兼容性保证。这意味着在升级到新的Hadoop版本后,您的代码可能会中断。该类注释为DistributedFileSystem
和LimitedPrivate
。 Apache Hadoop Compatibility文档详细描述了这些注释的含义。目前无法保证公开,稳定的API可以更改自定义程序的配额。