【发布时间】:2017-04-11 13:19:52
【问题描述】:
我有一些数据每天都必须摄取到 Solr 中,每天的数据大约是 10-12 GB,而且我必须在过去 1 年进行追赶工作,每天大约是 10-12 GB数据。
我正在使用 Java,如果相同的唯一键再次到达,我需要通过部分更新对我的数据进行评分,我将 docValues 与 TextField 一起使用。
https://github.com/grossws/solr-dvtf
最初,我使用了一种耗时的顺序方法(从 S3 读取并以 60k 的批量添加到 Solr)。
我找到了这个仓库:
https://github.com/lucidworks/spark-solr,
但我无法理解实现,因为我需要修改一些评分逻辑的字段数据,所以编写了自定义 Spark 代码。
然后我在 Solr 中创建了 4 个节点(在同一个 IP 上),并使用 Spark 插入数据,最初是因为 Spark 创建的分区远远超过 Solr 节点,并且指定的“执行程序”也不仅仅是节点,所以花了更多的时间。
然后我将 RDD 重新分区为 4 个(Solr 节点数),指定 4 个执行器,然后插入花费的时间更少并且成功,但是当我运行相同的一个月时,一个或多个 Solr 节点不断下降,我在 HD 上有足够的可用空间,而且我的 ram 使用量很少会被填满。
请给我一个解决这个问题的方法,我有 8 核 CPU, 还是应该为 Solr 上的不同节点使用不同的系统?
谢谢!
【问题讨论】:
标签: java apache-spark solr