[
https://issues.apache.org/jira/browse/HDFS-14547?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Erik Krogen updated HDFS-14547:
-------------------------------
Fix Version/s: 3.1.3
3.2.1
3.3.0
3.0.4
> DirectoryWithQuotaFeature.quota costs additional memory even the storage type
> quota is not set.
> -----------------------------------------------------------------------------------------------
>
> Key: HDFS-14547
> URL: https://issues.apache.org/jira/browse/HDFS-14547
> Project: Hadoop HDFS
> Issue Type: Improvement
> Affects Versions: 3.1.0
> Reporter: Jinglun
> Assignee: Jinglun
> Priority: Major
> Fix For: 3.0.4, 3.3.0, 3.2.1, 3.1.3
>
> Attachments: HDFS-14547-design, HDFS-14547-patch003-Test Report.pdf,
> HDFS-14547.001.patch, HDFS-14547.002.patch, HDFS-14547.003.patch,
> HDFS-14547.004.patch, HDFS-14547.005.patch, HDFS-14547.006.patch,
> HDFS-14547.007.patch
>
>
> Our XiaoMi HDFS is considering upgrading from 2.6 to 3.1. We notice the
> storage type quota 'tsCounts' is instantiated to
> EnumCounters<StorageType>(StorageType.class), so it will cost a long[5] even
> if we don't have any storage type quota on this inode(only space quota or
> name quota).
> In our cluster we have many dirs with quota and the NameNode's memory is in
> tension, so the additional cost will be a problem.
> See DirectoryWithQuotaFeature.Builder().
>
> {code:java}
> class DirectoryWithQuotaFeature$Builder {
> public Builder() {
> this.quota = new QuotaCounts.Builder().nameSpace(DEFAULT_NAMESPACE_QUOTA).
> storageSpace(DEFAULT_STORAGE_SPACE_QUOTA).
> typeSpaces(DEFAULT_STORAGE_SPACE_QUOTA).build();// set default value -1.
> this.usage = new QuotaCounts.Builder().nameSpace(1).build();
> }
> public Builder typeSpaces(long val) {// set default value.
> this.tsCounts.reset(val);
> return this;
> }
> }
> class QuotaCounts$Builder {
> public Builder() {
> this.nsSsCounts = new EnumCounters<Quota>(Quota.class);
> this.tsCounts = new EnumCounters<StorageType>(StorageType.class);
> }
> }
> class EnumCounters {
> public EnumCounters(final Class<E> enumClass) {
> final E[] enumConstants = enumClass.getEnumConstants();
> Preconditions.checkNotNull(enumConstants);
> this.enumClass = enumClass;
> this.counters = new long[enumConstants.length];// new a long array here.
> }
> }
> {code}
> Related to HDFS-14542.
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]