1

我正在试验 DataStax 企业搜索。我有一个两节点集群,我正在使用 Solr 控制台数据导入功能导入数据。根据“配置 Solr”文档( http://www.datastax.com/docs/datastax_enterprise3.2/solutions/dse_search_schema#configuring-solr ) ,我禁用了我的虚拟节点(cassandra.yaml 中的 num_tokens = 1 )。我的简化架构如下:

<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,但它似乎并没有改变负载分布。我错过了什么吗?

谢谢,莱昂

4

1 回答 1

1

从 nodetool 输出中可以看出,您的问题是两个节点的标记靠得太近。因此,节点 (10.30.161.137) 负责 94% 的令牌范围。

这很可能是因为当您设置 num_token=1 时,您没有设置初始令牌值。如果未设置初始令牌,则可能会分配不需要的值。

initial_token (默认值:禁用)用于单节点-per-token 架构,其中节点在环空间中恰好拥有一个连续范围。如果您未指定 num_tokens 或将其设置为默认值 1,则在首次设置生产集群和增加容量时应始终指定此参数。有关更多信息,请参阅 Cassandra 1.1 节点和集群配置文档中的此参数。

配置 Cassandra

此处提供代币计算器 代币生成器

于 2013-12-16T21:20:18.183 回答