2016-06-11 74 views
1

我的群集大小为6个机器。我的数据量非常小,只有30.000。但我经常读取,写入,删除和更新操作,尽管数据量很低,但操作可能会很昂贵。由于数据量非常低,我不明白为什么会出现此错误消息。任何答案真的很感激。无法达到一致性级别LOCAL_ONE info = {required_replicas 1 alive_replicas:0,一致性:LOCAL_ONE}

当我的卡桑德拉集群正忙,我经常收到此错误信息:

WARNING code=1000 [Unavailable exception] message="Cannot achieve consistency level LOCAL_ONE" info={'required_replicas': 1, 'alive_replicas': 0, 'consistency': 'LOCAL_ONE'} 

这是卡桑德拉Python代码我读:

cluster = Cluster(['localhost']); session = cluster.connect('keyspaace') 
kafka = KafkaClient('localhost'); producer = SimpleProducer(kafka) 
channels = session.execute("select id from channels;") 
channel_ids = [channel.id for channel in channels] 
sleep_time = 10*60/(len(channel_ids)+0.0) 
for channel in channel_ids: 
url = 'http://toutiao.com/m%s/?%s' % (channel, urllib.urlencode({'_': datetime.utcnow().replace(tzinfo=pytz.UTC).isoformat()})) 
producer.send_messages('toutiao.incoming_urls', json.dumps({'appid': 'articles', 'crawlid': 'channel-%s' % (channel), 'spiderid': 'toutiao', 'url': url, 'useragent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36', 'attrs': {'id': channel, '_': datetime.utcnow().replace(tzinfo=pytz.UTC).isoformat()}})) 
print url 
#   log.info(url) 
time.sleep(sleep_time) 

我附加了一些额外的信息,如密钥空间,nodetool状态等等。如果你能帮我解决这个问题,那会很好。

(1)EDIT卡桑德拉簇nodetool状态:

Datacenter: Analytics 
===================== 
Status=Up/Down 
|/ State=Normal/Leaving/Joining/Moving 
-- Address  Load  Tokens Owns (effective) Host ID        Rack 
UN 192.168.183.30 34.22 GB 1  76.7%    29ab1909-087c-447b-afaa-0e7db664f06d rack1 
UN 192.168.183.109 22.57 GB 1  54.1%    c4bde944-6b94-44dd-9d09-c3934c3568c6 rack1 
UN 192.168.183.106 27.81 GB 1  65.9%    7c95ca0c-9727-4e5b-9736-368493bc87ab rack1 
UN 192.168.183.121 24.61 GB 1  60.0%    85537680-70fc-494d-8e1f-48da35e9c33b rack1 
UN 192.168.183.20 20.76 GB 1  43.3%    4572c3f5-a946-453d-89bc-5815361fced9 rack1 
Datacenter: Solr 
================ 
Status=Up/Down 
|/ State=Normal/Leaving/Joining/Moving 
-- Address  Load  Tokens Owns (effective) Host ID        Rack 
UN 192.168.182.142 25.77 GB 1  100.0%   34d5797f-7b84-4e16-8f4d-80aa574408d2 rack1 

(2)信道模式

CREATE TABLE toutiao.channels (
    id text PRIMARY KEY, 
    avatar text, 
    category text, 
    created_at timestamp, 
    last_crawled timestamp, 
    last_modified timestamp, 
    name text, 
    scheduled_for timestamp, 
    source text, 
    status text, 
    url text 
) WITH bloom_filter_fp_chance = 0.01 
    AND caching = '{"keys":"ALL", "rows_per_partition":"NONE"}' 
    AND comment = '' 
    AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy'} 
    AND compression = {'sstable_compression': 'org.apache.cassandra.io.compress.LZ4Compressor'} 
    AND dclocal_read_repair_chance = 0.1 
    AND default_time_to_live = 0 
    AND gc_grace_seconds = 864000 
    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'; 

(3)EDIT密钥空间

CREATE KEYSPACE mykeyspace WITH replication = {'class': 'NetworkTopologyStrategy', 'Analytics': '3', 'Solr': '1'} AND durable_writes = true; 
+1

你正在使用哪一个Snitch? –

+0

我使用endpoint_snitch:com.datastax.bdp.snitch.DseSimpleSnitch。任何想法发生了什么?我真的不明白。谢谢 – peter

+0

@PhilippBlum我在mykeyspace以及我编辑的nodetool状态中出错。如果你能再看一次谢谢,会很棒。 – peter

回答

2

你必须一个错误的复制con成形。您的数据中心分析中复制因子为6,但该数据中心不存在。将其更改为Ana并添加您的solr群集。或者你可以在你的snitch配置中改变它。并且不要使用6的复制因子。请改用3或4。您的Ana集群中只有5个节点。太高的复制因素可能会极大地降低群集速度。一般来说,如果某些内容与您的snitch或复制配置不一致,则会出现此错误。