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

3
我有一个基于Cloudera(CDH 5.4.2)HDFS的Solr Cloud(v 4.10)安装,其中有3个Solr实例,每个实例托管每个核心的碎片。 我正在寻找一种将生产集群中的Solr数据逐步复制到开发集群的方法。 有3个核心,但我只对其中一个进行复制感兴趣。
我已经尝试使用Solr复制-备份和还原,但似乎没有加载任何内容到dev集群中。
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生产集群中的/solr目录,并使用hadoop distcp复制文件,但是solr索引器会删除一些文件,导致distcp作业失败。

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

有人可以在这里帮我吗?


你有没有成功得到这个问题的答案? - Viraj
不使用理想的方法,但目前我正在执行以下步骤来完成开发集群的转移:(1)停止开发集群;(2)使用rsync复制Unix文件;(3)重新启动集群。 - Josh
备份和恢复在Solr 4.10中无法正常工作。你最终是如何解决的? - kartik
2个回答

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

1. 允许快照

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

2. 使用特定名称创建快照

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/

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接