[ 
https://issues.apache.org/jira/browse/HDFS-12506?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16177811#comment-16177811
 ] 

Weiwei Yang commented on HDFS-12506:
------------------------------------

Thanks [~linyiqun] for the review, I have uploaded v5 patch that added test 
case to creating volume/bucket with prefix "#". Regarding to your first 
comment, about {{KeyType.UNKNOWN}}, I don't think that is necessary. We have 
desired format of KSM DB keys, if the key is something else and it is treated 
as key and then handed by

{code}
BucketInfo bucketInfo = BucketInfo.parseFrom(value);
{code}

protobuf will throw an exception that parse failed because format not match. 
Even we added logic to get a type for unknown, here it still fails but just 
with a different error message "Unknown key from ksm.db". That's why I think we 
don't need to calculate number of "/"s. A simple protobuf message is 
informative enough. Let me know if you disagree. Thanks.

> Ozone: ListBucket is too slow
> -----------------------------
>
>                 Key: HDFS-12506
>                 URL: https://issues.apache.org/jira/browse/HDFS-12506
>             Project: Hadoop HDFS
>          Issue Type: Sub-task
>          Components: ozone
>            Reporter: Weiwei Yang
>            Assignee: Weiwei Yang
>            Priority: Blocker
>              Labels: ozoneMerge, performance
>         Attachments: HDFS-12506-HDFS-7240.001.patch, 
> HDFS-12506-HDFS-7240.002.patch, HDFS-12506-HDFS-7240.003.patch, 
> HDFS-12506-HDFS-7240.004.patch, HDFS-12506-HDFS-7240.005.patch
>
>
> Generated 3 million keys in ozone, and run {{listBucket}} command to get a 
> list of buckets under a volume,
> {code}
> bin/hdfs oz -listBucket http://15oz1.fyre.ibm.com:9864/vol-0-15143 -user wwei
> {code}
> this call spent over *15 seconds* to finish. The problem was caused by the 
> inflexible structure of KSM DB. Right now {{ksm.db}} stores keys like 
> following
> {code}
> /v1/b1
> /v1/b1/k1
> /v1/b1/k2
> /v1/b1/k3
> /v1/b2
> /v1/b2/k1
> /v1/b2/k2
> /v1/b2/k3
> /v1/b3
> /v1/b4
> {code}
> keys are sorted in nature order so when we do list buckets under a volume e.g 
> /v1, we need to seek to /v1 point and start to iterate and filter keys, this 
> ends up with scanning all keys under volume /v1. The problem with this design 
> is we don't have an efficient approach to locate all buckets without scanning 
> the keys.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: hdfs-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-h...@hadoop.apache.org

Reply via email to