|
From: Yonik S. <yo...@ap...> - 2008-02-28 23:34:16
|
On Thu, Feb 28, 2008 at 6:00 PM, Doug Cutting <cu...@ap...> wrote: > Yonik Seeley wrote: > > Now if we addded 100 nodes (virtual nodes) per host in order to even > > key distribution, only a single host will have all of the keys for a > > node (defined as all of it's virtual nodes). > > > > HostA: indexA, big mix, big mix > > HostB: indexB, big mix, big mix > > HostC: indexC, big mix, big mix > > HostD: indexD, big mix, big mix > > I'm assuming a 1:1 mapping between index and node. So if a host has 100 > nodes on it, then it would have 100 indexes. I'm also imagining more > like 4 nodes/indexes per host, not 100. Does that address your concern? Then the issue then would be that there are not enough nodes per host to evenly partition the keys. That's why I suggested separate key partitioning. AFAIK, they ended up separating out key partitioning in Dynamo too (but for different reasons). I'm still missing what we gain by having them coupled. > A related issue is that we don't want to place nodes with overlapping > ranges on the same host, since that would defeat the purpose of > replication. The master must assign new nodes to the ring with this > restriction. It should generally split the largest interval that's also > distant from other intervals assigned to that host. On a tiny cluster > it might refuse to add ranges if that would result in overlapping ranges > on the same host, however this still might occur if hosts fail. This isn't consistent hashing, in my understanding of it though, since placement of some nodes depends on others. With just a list of nodes, it doesn't seem like a different host would be able to reconstruct the ring. -Yonik |