在一个hadoop集群里面,我们经常会涉及到多个用户在操作整个集群,因为对于用户之间,我们经常会把这些用户分开,不允许a用户操作b用户的文件,同时像linux一样,每一个非root用户只能在自己的目录里面存放文件。但是我们还需要做一个限制就是不能无节制的让用户放文件,不然磁盘很容易就满了,这时候A用户上传太多,把磁盘占满了,B用户就无法操作磁盘了。所以基于上面的原因我们习惯性的给每一个用户设置下限制,这样可以尽量的让大家上传并且保存文件。下面直接上教程
数量配额配置
1)创建一个张三的用户目录
./hadoop fs -mkdir -p /user/zhangsan/
2)查看当前目录的限额情况
./hadoop fs -count -q -h /user/zhangsan/
从上图的none可以看出,当前的文件夹是没有限额的,可以允许任意数量的上传。
3)限制这个目录只能上传2个文件
./hdfs dfsadmin -setQuota 2 /user/zhangsan/
备注:
1、这里的话不能使用hadoop fs命令了,因为这个命令就过时了,需要使用hdfs dfsadmin这个命令去进行设置
4)查看最新的限额情况
./hadoop fs -count -q -h /user/zhangsan/
可以看到限额是2,也就是不能超过2个文件。
5)测试上传
./hadoop fs -put aaa.txt /user/zhangsan/ ./hadoop fs -put users.txt /user/zhangsan/
可以看到只能上传1个文件,不能再上传了,上传超了就会报错。
6)清楚数量的限额配置
./hdfs dfsadmin -clrQuota /user/zhangsan
可以看到限制被取消掉了。
备注:
1、数量限额只是仅限于限制数量,空间总大小是不固定的,也就是上传20个1G的文件和上传20个100G的文件都可以。
2、我们设置的限制是小于关系,也就是限制数量是100的话,只能上传99个文件。
空间大小限额
空间大小限额主要指的是数量是不固定的,但是总空间大小是一样的,例如限制为100G,那么可以上传100个文件,也可以上传10000个文件,只要总大小不超过100G即可。同时设置空间大小的话,设置的空间大小至少为block_size * 3
1)给张三这个目录设置总空间大小为100KB
./hdfs dfsadmin -setSpaceQuota 100k /user/zhangsan/
2)查看当前目录的空间限额
./hadoop fs -count -q -h /user/zhangsan/
这里假设我们上传一个超过100K的文件,这里我们准备一个aaa.txt的文件
上传看看
可以看到上传报错了,上传不上去。
3)清除某个目录的空间限额配置
./hdfs dfsadmin -clrSpaceQuota /user/zhangsan
备注:
1、从运维的角度来看,这里的配置限制是非常重要的,因为在hdfs上我们会存储大量的数据,如果没有配额管理,那么很容易把所有空间给占完,导致别人无法对数据进行存取。
2、hdfs的配置限制是争对目录的,而不是争对账号,在生产上,我们可以让每一个账号技能操作某一个目录,然后对这个目录进行限额配置。
还没有评论,来说两句吧...