2013-12-13 20 views
1

我正在試驗DataStax Enterprise Search。我有一個雙節點集羣,我使用Solr控制檯Dataimport功能導入數據。根據「配置Solr」doc(http://www.datastax.com/docs/datastax_enterprise3.2/solutions/dse_search_schema#configuring-solr),我禁用了虛擬節點(num_tokens = 1,位於cassandra.yaml中)。我的簡化架構如下:將數據導入DSE搜索羣集後負載分佈不均勻

<schema name="spatial" version="1.1"> 

<types> 
    <fieldType name="string" class="solr.StrField" omitNorms="true"/> 
    <fieldType name="boolean" class="solr.BoolField" omitNorms="true"/> 
    <fieldType name="sint" class="solr.SortableIntField" sortMissingLast="true" omitNorms="true"/> 
    <fieldType name="tint" class="solr.TrieIntField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/> 
    <fieldType name="tfloat" class="solr.TrieFloatField" omitNorms="true"/> 
    <fieldType name="tdouble" class="solr.TrieDoubleField" precisionStep="8" omitNorms="true" positionIncrementGap="0"/> 
    <fieldType name="tdate" class="solr.TrieDateField" omitNorms="true"/> 
    <fieldType name="binary" class="solr.BinaryField"/> 

    <!-- A specialized field for geospatial search. If indexed, this fieldType must not be multivalued. --> 
    <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/> 
</types> 

    <fields> 
     <field name="id" type="string" indexed="true" stored="true"/> 
     <field name="objectid" type="tint" indexed="true" stored="true" required="true" multiValued="false" /> 
     <field name="guwi" type="string" indexed="true" stored="true" required="false" multiValued="false" /> 
     <field name="country" type="string" indexed="true" stored="true" required="false" multiValued="false" /> 
     <field name="region" type="string" indexed="true" stored="true" required="false" multiValued="false" /> 
     <field name="latlong" type="location" indexed="true" stored="false"/> 
    </fields> 
    <defaultSearchField>objectid</defaultSearchField> 
    <uniqueKey>id</uniqueKey> 
</schema> 

數據導入成功。但是,當我運行「nodetool status」時,我可以看到負載不是均勻分佈在我的兩個節點上,而是全部集中在用來執行數據導入的節點上。 我試圖將uniqueKey修改爲一個組合鍵,如(id,latlong)或甚至只是latlong,但它似乎並沒有改變負載分佈。我錯過了什麼嗎?

感謝, 萊昂

+2

您可以從 'nodetool狀態yourkeyspace' 命令粘貼到輸出? – RussS

+0

數據中心:數據中心1 ======================= 狀態=上/下 |/State = Normal/Leaving/Joining/Moving - 地址負載旗下擁有(有效)主機ID令牌機架 聯合國10.30.161.137 66.34 MB 93.3%7e4bac03-feb9-42e8-AC9A-bf48be32b36a -8800219472428229728 RACK1 聯合國10.157.8.94 52.76 KB 6.7%135bfc01-a3d3-4a2b-a681-7667f1eabc47 -7564491331177403445 rack1 – Leon

回答

1

你的問題,因爲在nodetool輸出看到的,是兩個節點有靠得太近令牌。因此,節點(10.30.161.137)負責令牌範圍的94%。

這很可能是因爲當您設置num_token = 1時,您沒有設置初始標記值。當初始令牌未設置時,可能會分配不需要的值。

initial_token(缺省:禁用)用在單節點每令牌 架構,其中一個節點擁有該 環空間恰好一個連續範圍。如果您尚未指定num_tokens或將其設置爲 默認值1,則應始終在 首次設置生產羣集時以及在添加 容量時指定此參數。有關更多信息,請參閱Cassandra 1.1節點和羣集配置文檔中的此參數。

Configuring Cassandra

令牌計算器可以在這裏 Token Generator

+0

好的,謝謝。我爲2個節點運行令牌生成器並更新.yaml文件。現在我越來越org.apache.cassandra.exceptions.ConfigurationException:對於輸入字符串: 「85070591730234615865843651857942052864」 \t \t在org.apache.cassandra.dht.Murmur3Partitioner $ 1.validate(Murmur3Partitioner.java:182)... – Leon

+0

默認Cassandra的分區程序現在是Murmur3分區程序,它具有與以前使用的RandomPartitioner不同的範圍。 (0-> 2^127-1 vs -2^63 - > 2^63)我在用分區器生成標記的答案中放了一個鏈接。 – RussS

+0

太棒了!這樣可行。非常感謝!沒有你的幫助,我無法做到這一點。順便說一句,如果一個人保持num_tokens = 256在文檔中建議的其他地方,試圖導入數據使用Solr dataimporter只是掛起節點。所有這些應該記錄在Datastax文檔的某處... – Leon