将 Solr HDFS 数据复制到另一个集群

Copy Solr HDFS Data to another Cluster

我有一个位于 Cloudera (CDH 5.4.2) HDFS 之上的 solr cloud (v 4.10) 安装,具有 3 个 solr 实例,每个实例托管每个核心的一个碎片。 我正在寻找一种将 solr 数据从我们的生产集群增量复制到我们的开发集群的方法。有 3 个核心,但我只对复制其中一个感兴趣。

我曾尝试使用 Solr 复制 - 备份和恢复,但它似乎没有将任何内容加载到开发集群中。

http://host:8983/solr/core/replication?command=backup&location=/solr_transfer&name=core-name
http://host:8983/solr/core/replication?command=restore&location=/solr_transfer&name=core-name

我还尝试对 hdfs prod 集群中的 /solr 目录进行快照并使用 hadoop disctp 复制文件,但 solr 索引器删除了一些文件,因此 distcp 作业失败。

hadoop distcp hftp://prod:50070/solr/* hdfs://dev:8020/solr/

有人可以帮我吗?

经过大量尝试,这是我们制定的解决方案。 - 在第二个环境中以与主环境相同的方式使用所有集合初始化 solr。 - 对 HDFS 进行快照 - 使用 hadoop hdfs -cp 将数据复制到检查点 在第一个 运行 之后,复制作业会很快,因为您只复制增量。

请按照以下步骤创建 solr_hdfs 文件夹的快照并将其移动到另一个集群

1.Allow快照

sudo -u hdfs hadoop dfsadmin -allowSnapshot /user/solr/SolrCollectionName

2.Create 具有特定名称的快照

sudo -u hdfs hadoop dfs -createSnapshot /user/solr/SolrCollectionName/ snapshotName

3。列出快照目录

hdfs dfs -ls /user/solr/solrcollectionName/.snapshot

4。要复制,请执行以下命令

 sudo -u solr hadoop distcp hdfs://NNIP1:8020/user/solr/collectionName/.snapshot/SanpshotName  hdfs://NNIP2:8020/user/solr

5。恢复快照

sudo -u solr hadoop fs -cp /user/solr/SanpshotName/* /user/solr/SolrcollectionName/