HDFS目录数及大小设置
前言
由于时间紧急,本人稍微调研了下,HDFS配置中是有目录文件夹数量限额的,但没有存储空间资源限额。
需求
1.需要在集群管理上开发项目使用的HDFS目录下的文件数量限额。比如一个HDFS目录下最多运行10个文件。
2.需要在集群管理上开发项目使用的存储资源限额。比如:一个目录不能超过100G。
调研
针对这两个小需求,去官网找了下hdfs-site.xml的所有属性配置。得到的结论是:
可以设置HDFS目录下文件数量,但不能设置文件的存储大小。
<!--这个属性是设置HDFS目录下的文件数量的,范围是1-6400000 -->
<property>
<name>dfs.namenode.fs-limits.max-directory-items</name>
<value>1048576</value>
</property>
这就有点难度了,既然这样,我们这两个小需求怎么实现呢?
这个时候稍微百度了下,但结果各说纷纭。没办法。还是去官网继续找。
https://hadoop.apache.org/docs/r3.1.1/hadoop-project-dist/hadoop-hdfs/HDFSCommands.html#dfsadmin
可以看到,这是hdfs中管理的命令。这些命令怎么用?官网也给了说明。
但是,写的还是太含糊了。毕竟是第一次接触。
这个时候,不妨来实操一把。
输入命令,查看帮助手册:
找到对应的命令说明,如下:
哦,这么看就清晰多了。于是,依葫芦画瓢。得到以下两个命令,可以设置HDFS目录树及目录大小。
#设置目录下的文件个数限制
hdfs dfsadmin -setQuota 1 /test/fileNumber/
#清除
hdfs dfsadmin -clsQuota /test/fileNumber/
#设置目录下的文件大小限制
hdfs dfsadmin -setSpaceQuota 1m /test/fileNumber/
#清除
hdfs dfsadmin -clsSpaceQuota /test/fileNumber/
#查看设置的参数信息
hadoop fs -count -q -v /test/fileNumber
查看设置的参数信息,也是正确的:
到此,调研完成。是可以实现的。
实现
调研是OK了,代码里怎么写呢?
这个时候得益于百度,有一个HDFSAdmin的类。new这个类的实例,刚刚那些命令的参数,都可以在这个类中找到对应的方法。
搞定!收工!