Kis*_*lle 6 java performance cassandra nosql hector
我是NoSQL和Cassandra的新手.我正在尝试设置来实现内存缓存唯一的解决方案.我正在通过从100000行文件中逐行读取并使用Hector插入到Cassandra进行处理.我注意到每秒约6000个插入的吞吐量非常低.整个写操作大约20.5秒,这对我们的应用来说是不可接受的.我们需要每秒100000次插入.我正在使用4GB RAM的Windows 7计算机上进行测试.
我正在进行仅插入测试.
请告诉我哪里出错了.请建议我如何每秒提高插入量.
Keyspace: Keyspace1
Read Count: 0
Read Latency: NaN ms.
Write Count: 177042
Write Latency: 0.003106884242157228 ms.
Pending Tasks: 0
Column Family: user
SSTable count: 3
Space used (live): 17691
Space used (total): 17691
Number of Keys (estimate): 384
Memtable Columns Count: 100000
Memtable Data Size: 96082090
Memtable Switch Count: 1
Read Count: 0
Read Latency: NaN ms.
Write Count: 177042
Write Latency: NaN ms.
Pending Tasks: 0
Key cache capacity: 150000
Key cache size: 0
Key cache hit rate: NaN
Row cache capacity: 150000
Row cache size: 0
Row cache hit rate: NaN
Compacted row minimum size: 73
Compacted row maximum size: 924
Compacted row mean size: 784
Run Code Online (Sandbox Code Playgroud)
我尝试了几种设置行缓存和密钥缓存的方法:
通过Cassandra CLI
通过NodeCmd:java org.apache.cassandra.tools.NodeCmd -p 7199 setcachecapacity Keyspace1 user 150000 150000
我不会将每秒6000次写入描述为"慢" - 但Cassandra可以做得更好.但请注意,Cassandra专为持久写入而设计,因此可能比仅限内存的缓存解决方案具有更低的性能.
正如sbridges所说,使用单个客户端无法从Cassandra中获得完整的性能.尝试使用多个客户端线程,进程或计算机.
我认为你不会在一个节点上每秒获得100,000次写入.我在适度的硬件上每秒只获得了大约20,000-25,000次写入(尽管Cassandra自从我进行基准测试以来已经明显加快了).对于单个客户对单个商品节点来说,每秒6000似乎是正确的.
使用一组节点,您每秒肯定可以获得100,000个(请参阅http://techblog.netflix.com/2011/11/benchmarking-cassandra-scalability-on.html,了解最近每秒1,000,000次写入的基准测试!)
行缓存和密钥缓存有助于读取性能,而不是写入性能.
此外,请确保您正在批处理写入(如果适用) - 这将减少网络开销.
| 归档时间: |
|
| 查看次数: |
8370 次 |
| 最近记录: |