On 5/27/2020 11:31 AM, Adrian Schüpbach wrote:
> Dear all
>
> Crail supports dynamically adding new datanodes, while the Crail cluster
> is running.
>
> To build an elastic storage service, it would be nice to have
> mechanisms and protocol extensions, which allow a datanode
> to gracefully leave the cluster.
>
> Especially in serverless environments, it would be great
> if the Crail cluster could also dynamically grow and shrink
> according to current storage capacity needs.
>
I agree.

> Since a while I am experimenting with an older version,
> which is being used in Pocket. I changed and extended it
> and gained some more experience, what I believe would be
> good to have. I also believe that adding such functionality
> natively to Apache Crail (instead of "around" Crail as in Pocket)
> would help making Crail a storage service choice in serverless
> environments. Furthermore, having this mechanisms natively
> in Crail does not harm running Crail the classical way.
>
> More concretely, I suggest to add the following:
> - Add mechanisms to gracefully leave datanodes
>   (with the namenode's help)
> - Mechanism 1: Datanode leaves when no more blocks are allocated
>   (as in Pocket)
> - Mechanism 2: Namenode helps to move blocks from the leaving
>   datanode to a remaining datanode. "helps" does not mean,
>   that the namenode has to perform the actual data copying,
>   but only to find new blocks and update the file block lists.
...but that data copying would have to be done somehow.
So the data node shall execute that? That would add
client code to the data node..?

Would probably good if in a first step the simple
mechanism (empty data node leaves) becomes available?

> - Allow datanodes to express the wish to leave
>   (ask namenode to initiate the process), by sending a message to
>   the namenode.
Another way around would be to let the namenode tell
the data node to go off. I think you have good reasons
to do it the way you are proposing.

>
> I would also volunteer to add this functionality.
>
great!

>
>
> I would like to emphasize that I would like to add
> the mechanisms in a way that they do not get invoked
> automatically and that performance and current functionality
> will no be affected in any way, when Crail is used the usual way.
> Instead, adding the mechanisms allows building a dynamically
> scaling system based on policy code, which can also run outside
> of the namenode and datanodes.
>
> Thanks
> Adrian
>

Reply via email to