HDFS配置设置

在多人共用HDFS的环境下,配置设置非常重要。特别是在Hadoop处理大量资料的环境,如果没有配额管理,很容易把所有的空间用完造成别人无法存取。Hdfs的配额设定是针对目标而不是针对账号,所有在管理上最好让每个账号仅操作某一个目录,然后对目录设置配置。

        设定方法有两种:

    • Name Quotas:设置某一个目录下文件总数
    • Space Quotas:设置某一个目录下可使用空间大小

        默认情况下Hdfs没有任何配置限制,可以使用  hadoop fs -count 来查看配置情况

               hadoop fs -count -q /user/seamon

        以下是结果,none和inf表示没有设置配额

QUOTA   REMAINING_QUOTA   SPACE_QUOTA    REMAINING_SPACE_QUOTA     DIR_COUNT FILE_COUNT   CONTENT_SIZE FILE_NAME
none       inf                                none                     inf                                             6                                        15

 

1. Name Quotas

       计算公式:QUOTA – (DIR_COUNT + FILE_COUNT) = REMAINING_QUOTA

       这里的 10000 是指 DIR_COUNT + FILE_COUNT = 10000,最大值為 Long.Max_Value       

       启用设定:hadoop dfsadmin -setQuota 10000 /user/seamon

       清除設定: hadoop dfsadmin -clrQuota /user/seamon

2. Space Quotas

       计算公式:SPACE_QUOTA – CONTENT_SIZE = REMAINING_SPACE_QUOTA

       可以使用 m, g, t 代表 MB, GB, TB

       启用设定: hadoop dfsadmin -setSpaceQuota 1g /user/seamon/

       清除設定: hadoop dfsadmin -clrSpaceQuota /user/seamon

       这里需要特别注意的是“Space Quota”的设置所看的不是Hdfs的文件大小,而是写入Hdfs所有block块的大小,假设一个文件被切分为2个blocks,在core-site.xml里面设置 dfs.block.size=64MB,dfs.replication=3,那么该文件所需要的存储空间为:2 * 64M * 3 =  384MB

       如果一个小文件(例如,1k大小的文件)被上传到hdfs,该文件并不能占满一整个blok,但是按照hdfs配置规则也需要按照一个blok计算,即存储空间为:1 x 64MB x 3 = 192MB

3. 其它事项

       hdfs的配额管理是跟着目录走,如果目录被重命名,配额依然有效。

       麻烦的是,在设置完配额以后,如果超过限制,虽然文件不会写入到hdfs,但是文件名依然会存在,只是文件size为0。当加大配额设置后,还需要将之前的空文件删除才能进一步写入。

       如果新设置的quota值,小于该目录现有的Name Quotas 及 Space Quotas,系统并不会给出错误提示,但是该目录的配置会变成最新设置的quota

posted @ 2013-01-09 11:20  季石磊  阅读(1624)  评论(0编辑  收藏  举报