我们正在运行Cassandra 2.2.3。
使用DateTieredCompactionStrategy建立一个列族,如下所示,
CREATE TABLE test (
num_id text,
position_time timestamp,
acc int,
coordinate text,
device_no text,
PRIMARY KEY (num_id, position_time, coordinate)
) WITH CLUSTERING ORDER BY (position_time DESC, coordinate ASC)
AND bloom_filter_fp_chance = 0.01
AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}'
AND comment = 'table for gps points from car gps source.'
AND compaction = {'timestamp_resolution': 'MILLISECONDS', 'max_sstable_age_days': '8', 'base_time_seconds': '3600', 'class': 'org.apache.cassandra.db.compaction.DateTieredCompactionStrategy'}
AND compression = {'chunk_length_kb': '64', 'crc_check_chance': '1.0', 'sstable_compression': 'org.apache.cassandra.io.compress.SnappyCompressor'}
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 86400
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99.0PERCENTILE';
我们确实有一些流量,它会一直插入表格。
Cassandra产生了许多SStables,总共约2,000个。 例如,
-rw-r--r-- 1 cassandra cassandra 86M Jan 20 02:59 la-11110-big-Data.db
-rw-r--r-- 1 cassandra cassandra 111M Jan 20 03:11 la-11124-big-Data.db
-rw-r--r-- 1 cassandra cassandra 176M Jan 20 03:12 la-11125-big-Data.db
-rw-r--r-- 1 cassandra cassandra 104M Jan 20 03:14 la-11130-big-Data.db
-rw-r--r-- 1 cassandra cassandra 102M Jan 20 03:26 la-11144-big-Data.db
-rw-r--r-- 1 cassandra cassandra 172M Jan 20 03:26 la-11145-big-Data.db
-rw-r--r-- 1 cassandra cassandra 107M Jan 20 03:30 la-11149-big-Data.db
-rw-r--r-- 1 cassandra cassandra 96M Jan 20 03:41 la-11163-big-Data.db
-rw-r--r-- 1 cassandra cassandra 176M Jan 20 03:41 la-11164-big-Data.db
-rw-r--r-- 1 cassandra cassandra 97M Jan 20 03:45 la-11169-big-Data.db
-rw-r--r-- 1 cassandra cassandra 82M Jan 20 03:57 la-11183-big-Data.db
-rw-r--r-- 1 cassandra cassandra 194M Jan 20 03:58 la-11184-big-Data.db
-rw-r--r-- 1 cassandra cassandra 28M Jan 20 03:59 la-11187-big-Data.db
-rw-r--r-- 1 cassandra cassandra 90M Jan 20 04:00 la-11188-big-Data.db
我的问题是,拥有如此多的SStables(2000)是否正常?
另一件事是我们遇到了readtimeout
选择查询的异常。
选择查询使用主键num_id
和群集键timestamp
。
readtimeout
设置为10秒。
那么,另一个问题是readtimeout
异常是由许多SStables还是宽行造成的?如何解决这个例外?
答案 0 :(得分:2)
我的问题是,拥有如此多的SStables(2000)是否正常?
不,这不正常。我认为在你的情况下,压缩速度不够快,无法跟上摄取率。您对Cassandra服务器有什么样的硬盘驱动器?旋转盘? SSD?共享存储?
那么,另一个问题是readtimeout异常是由很多SStables还是宽行引起的?
它可以是两者,但在您的情况下,我非常确定它与大量的SSTable相关
如何解决这个例外?
检查您的磁盘I / O是否可以跟上。使用 dstat 和 iostat Linux工具来监控I / O
答案 1 :(得分:2)
问题是“'timestamp_resolution':'MILLISECONDS'”我已提交https://issues.apache.org/jira/browse/CASSANDRA-11041来改进有关此参数的文档