[
https://issues.apache.org/jira/browse/HDFS-7339?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14286473#comment-14286473
]
Zhe Zhang commented on HDFS-7339:
---------------------------------
Thanks for review [~vinayrpet], it was very helpful. The updated patch
addresses most of the comments. Please find some additional notes below:
bq. I believe numBytes will be set at client side and later committed to NN
That's right; {{numBytes}} will be updated when the client patch (HDFS-7545)
comes in.
bq. But genstamp should be generated initially at the namenode side itself.
Thanks for pointing it out. The new patch uses {{genStamp}} from
{{BlockIdManager}} instead of creating a new {{GenerationStamp}} pool for block
groups. Thoughts?
bq. BlockGroupManager#chooseNewGroupTargets rejects the allocation if min
number of nodes selected is less than groupSize. Is there anyway to continue
with less number of nodes?
That's a very good point. This is the main change in this new patch; basically
it uses a {{minStripeSize}} variable to mimic {{BlockManager#minReplication}}
bq. Where the below mentioned method of identifying blockGroup from blockId
will be used?
It will be used to locate the block group when a block report comes in. I
created HDFS-7652 as a place holder to implement this logic (after the client
patch is in).
> Allocating and persisting block groups in NameNode
> --------------------------------------------------
>
> Key: HDFS-7339
> URL: https://issues.apache.org/jira/browse/HDFS-7339
> Project: Hadoop HDFS
> Issue Type: Sub-task
> Reporter: Zhe Zhang
> Assignee: Zhe Zhang
> Attachments: HDFS-7339-001.patch, HDFS-7339-002.patch,
> HDFS-7339-003.patch, HDFS-7339-004.patch, HDFS-7339-005.patch,
> HDFS-7339-006.patch, Meta-striping.jpg, NN-stripping.jpg
>
>
> All erasure codec operations center around the concept of _block group_; they
> are formed in initial encoding and looked up in recoveries and conversions. A
> lightweight class {{BlockGroup}} is created to record the original and parity
> blocks in a coding group, as well as a pointer to the codec schema (pluggable
> codec schemas will be supported in HDFS-7337). With the striping layout, the
> HDFS client needs to operate on all blocks in a {{BlockGroup}} concurrently.
> Therefore we propose to extend a file’s inode to switch between _contiguous_
> and _striping_ modes, with the current mode recorded in a binary flag. An
> array of BlockGroups (or BlockGroup IDs) is added, which remains empty for
> “traditional” HDFS files with contiguous block layout.
> The NameNode creates and maintains {{BlockGroup}} instances through the new
> {{ECManager}} component; the attached figure has an illustration of the
> architecture. As a simple example, when a {_Striping+EC_} file is created and
> written to, it will serve requests from the client to allocate new
> {{BlockGroups}} and store them under the {{INodeFile}}. In the current phase,
> {{BlockGroups}} are allocated both in initial online encoding and in the
> conversion from replication to EC. {{ECManager}} also facilitates the lookup
> of {{BlockGroup}} information for block recovery work.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)