前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >0658-5.16.1-如何使用CM设置HDFS目录配额

0658-5.16.1-如何使用CM设置HDFS目录配额

作者头像
Fayson
发布2019-06-28 11:03:04
1.5K0
发布2019-06-28 11:03:04
举报
文章被收录于专栏:Hadoop实操Hadoop实操

温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

Fayson的github: https://github.com/fayson/cdhproject

提示:代码块部分可以左右滑动查看噢

1

文档编写目的

对于多租户共同使用的Hadoop平台,HDFS配额设置非常重要。如果没有配额管理,很容易将所有空间用完导致其他租户无法正常存取数据,严重的可能导致HDFS集群宕掉。HDFS的配额是针对目录而不是租户(用户),所以在管理上最好能让租户只能操作某一类目录,然后对这一类目录进行配额设置。接下来Fayson主要介绍如何在Cloudera Manager上对指定HDFS目录设置配额。

  • 测试环境:

1.RedHat7.2

2.CDH5.16.1

2

Hadoop配额说明

Hadoop提供两种配额模式Name Quotas和Space Quotas。Name Quotas和Space Quotas是相互独立的(即可以同时设置两种配额也可以只设置其中一个,互不冲突)。

Name Quotas说明:

主要限制指定HDFS路径下文件和目录数目(含父目录),但不会对该目录下文件大小做限制。

Space Quotas说明:

主要是下限值指定HDFS路径下文件大小,但不会目录下的文件数量做限制,每个Block的副本都会计入配额。

设置目录Name Quotas命令如下:

代码语言:javascript
复制
hdfs dfsadmin -setQuota <N> <directory>...<directory>

清除目录Name Quotas命令如下:

代码语言:javascript
复制
hdfs dfsadmin -clrQuota <directory>...<directory>

设置目录Space Quotas命令如下:

代码语言:javascript
复制
hdfs dfsadmin -setSpaceQuota <N> <directory>...<directory>

清除目录Space Quotas命令如下:

代码语言:javascript
复制
hdfs dfsadmin -clrSpaceQuota <directory>...<directory>

查看指定目录配额使用情况,命令如下:

代码语言:javascript
复制
hadoop fs -count -q [-h] [-v] <directory>...<directory>

显示Name和Space配额,如果未设置的配额的类型则返回结果显示none和inf。

3

HDFS目录配额测试

1.使用hadoop命令创建一个测试目录/testquota

代码语言:javascript
复制
[root@node1 ~]# hadoop fs -mkdir /testquota
[root@node1 ~]# hadoop fs -ls /

注意:在命令行创建测试目录后,在CM上的文件浏览器里面未看到测试目录有相应的“编辑配额”菜单,因为Report Manager服务必须先为该目录或文件索引(默认刷新频率为1小时),然后才可以为其设置配额。

2.登录CM进入HDFS服务的“文件浏览器”设置目录配额,如下图所示

3.点击“编辑配额”为testquota目录配置Name Quotas为2,在命令行进行测试

代码语言:javascript
复制
[root@node1 ~]# hadoop fs -put test.txt /testquota
[root@node1 ~]# hadoop fs -put user.ldif /testquota
[root@node1 ~]# hadoop fs -ls -R /testquota

如上截图连续向/testquota目录下put文件,发现在put到第二个文件时失败提示该目录已达到配额限制,说明Name Quotas的配额是计算了父目录。

代码语言:javascript
复制
[root@node1 ~]# hadoop fs -mkdir /testquota/test

在/testquota目录下创建test目录也同样提示达到配额限制,说明目录也是在Name Quotas计算内的。

如下为CM上的配额显示:

4.继续点击“编辑配额”为/testquota目录设置Space Quotas

配置成功后CM上显示如下:

5.在命令行进行测试

代码语言:javascript
复制
[root@node1 hadoop-hdfs]# hadoop fs -put hadoop-cmf-hdfs-NAMENODE-node1.log.out.1 /testquota
[root@node1 hadoop-hdfs]# hadoop fs -put hadoop-cmf-hdfs-NAMENODE-node1.log.out.2 /testquota
[root@node1 hadoop-hdfs]# hadoop fs -ls /testquota

准备了3个201MB的测试文件,通过测试可以看到,向/testquota目录put到第二文件时已经报错,提示配额空间已超过1GB无法写入。说明Space Quotas配额计算方式包含了Block的副本大小,因此导致put第二个文件时超出1GB的配额失败。

4

总结

1.Name Quotas是针对文件和目录数量进行配额,计算方式为指定目录及目录下的文件和目录数量总和,如果目录配额设置为1则该目录禁止任何写入。

2.Space Quotas主要是对目录下空间大小进行限制,每个Block副本大小均会被计算在内。

3.指定的HDFS路径可以同时指定Name Quotas和Space Quotas,如果达到其中任何一个配额限制则会操作失败。

4.新建的HDFS目录不能及时的通过CM的“文件浏览器”界面为期设置配额,主要是由于Report Manager服务需要先为目录或文件建立索引,然后才能设置配额,可以通过如下缩短建立索引周期

提示:代码块部分可以左右滑动查看噢

为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Hadoop实操 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档