Also, as a note related to EC2, choose whether you want to be in multiple availability zones. The highest performance possible is to be in a single AZ, as all those machines will have *very* high speed interconnects. But, individual AZs also can suffer outages. You can distribute your instances across, say, 2 AZs, and then use a RackAwareStrategy to force replication to put at least 1 copy of the data into the other AZ.
Also, it's easiest to stay within a single Region (in EC2-speak). This allows you to use the internal IP addresses for Gossip and Thrift connections - which means you do not pay inbound-outbound fees for the data xfer. HTH, Dave Viner On Thu, Oct 7, 2010 at 10:26 AM, B. Todd Burruss <bburr...@real.com> wrote: > if you are updating columns quite rapidly, you will scatter the columns > over many sstables as you update them over time. this means that a read of > a specific column will require looking at more sstables to find the data. > performing a compaction (using nodetool) will merge the sstables into one > making your reads more performant. of course the more columns, the more > scattering around, the more I/O. > > to your point about "sharing the data around". adding more machines is > always a good thing to spread the load - you add RAM, CPU, and persistent > storage to the cluster. there probably is some point where enough machines > creates a lot of network traffic, but 10 or 20 machines shouldn't be an > issue. don't worry about trying to hit a node that has the data unless your > machines are connected across slow network links. > > > On 10/07/2010 12:48 AM, Dave Gardner wrote: > >> Hi all >> >> We're rolling out a Cassandra cluster on EC2 and I've got a couple if >> questions about settings. I'm interested to hear what other people >> have experienced with different values and generally seek advice. >> >> *gcgraceseconds* >> >> Currently we configure one setting for all CFs. We experimented with >> this a bit during testing, including changing from the default (10 >> days) to 3 hours. Our use case involves lots of rewriting the columns >> for any given keys. We probably rewrite around 5 million per day. >> >> We are thinking of setting this to around 3 days for production so >> that we don't have old copies of data hanging round. Is there anything >> obviously wrong with this? Out of curiosity, would there be any >> performance issues if we had this set to 30 days? My understanding is >> that it would only affect the amount of disk space used. >> >> However Ben Black suggests here that the cleanup will actually only >> impact data deleted through the API: >> >> http://comments.gmane.org/gmane.comp.db.cassandra.user/4437 >> >> In this case, I guess that we need not worry too much about the >> setting since we are actually updating, never deleting. Is this the >> case? >> >> >> *Replication factor* >> >> Our use case is many more writes than reads, but when we do have reads >> they're random (we're not currently using hadoop to read entire CFs). >> I'm wondering what sort of level of RF to have for a cluster. We >> currently have 12 nodes and RF=4. >> >> To improve read performance I'm thinking of upping the number of nodes >> and keeping RF at 4. My understanding is that this means we're sharing >> the data around more. However it also means a client read to a random >> node has less chance of actually connecting to one of the nodes with >> the data on. I'm assuming this is fine. What sort of RFs do others >> use? With a huge cluster like the recently mentioned 400 node US govt >> cluster, what sort of RF is sane? >> >> On a similar note (read perf), I'm guessing that reading at weak >> consistency level will bring gains. Gleamed from this slide amongst >> other places: >> >> >> http://www.slideshare.net/mobile/benjaminblack/introduction-to-cassandra-replication-and-consistency#13 >> >> Is this true, or will read repair still hammer disks in all the >> machines with the data on? Again I guess it's better to have low RF so >> there are less copied of the data to inspect when doing read repair. >> Will this result in better read performance? >> >> Thanks >> >> dave >> >> >> >> >