【问题标题】:Uneven load distribution after data import to DSE Search cluster数据导入 DSE Search 集群后负载分布不均
【发布时间】:2014-01-01 21:32:33
【问题描述】:

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

谢谢, 里昂

【问题讨论】:

  • 你能粘贴到你的“nodetool status yourkeyspace”命令的输出吗?
  • 数据中心:datacenter1 =======================状态=上/下|/状态=正常/离开/加入/移动 - 地址负载拥有(有效)主机ID令牌机架UN 10.30.161.137 66.34 MB 93.3%7E4BAC03-FEB9-42BA-AC9A-BF48BE32B36A -880021947208-AC9A-88002194724236A -8800219472428229728 RACK1 UN 10.157.8.94 52.76 KB 6.7%135BFC01-A3D3-4A2B-A681-7667F1ABC47 - 7564491331177403445 机架1

标签: solr cassandra dataimporthandler datastax


【解决方案1】:

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

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

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

Configuring Cassandra

此处提供代币计算器 Token Generator

【讨论】:

  • 好的,谢谢。我为 2 个节点运行令牌生成器并更新了 .yaml 文件。现在我得到 org.apache.cassandra.exceptions.ConfigurationException: For input string: "85070591730234615865843651857942052864" at org.apache.cassandra.dht.Murmur3Partitioner$1.validate(Murmur3Partitioner.java:182)...
  • Cassandra 的默认分区器现在是 Murmur3 分区器,其范围与之前使用的 RandomPartitioner 不同。 (0->2^127-1 vs -2^63 -> 2^63)我已经在答案中放置了一个链接,用于使用任一分区器生成令牌。
  • 太棒了!这样可行。非常感谢!没有你的帮助,我是不可能做到的。顺便说一句,如果按照文档中其他地方的建议保留 num_tokens = 256,则尝试使用 Solr dataimporter 导入数据只会挂起节点。所有这些都应该记录在 Datastax 文档的某个地方......
  • 我将与 Doc 团队联系,我们一直在努力为新人提供更流畅的体验。
  • 我正在尝试使用 DataImporter 从 PostgreSQL 将 ~4000000 条记录加载到这个新集群中。我的 DataImporter 节点在大约 800000 条记录后挂起。我将尝试使用 SOLR 控制台以 100000 个块加载数据。我不确定这是否可行。
猜你喜欢
  • 2010-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多