知识点
相关文章
更多最近更新
更多solrcloud将索引数据写到hdfs
2019-03-27 01:05|来源: 网路
Running Solrcloud+Hdfs
SolrCloud客户端
Solr启动脚本
SolrCloud+Hdfs模式的solr启动脚本与之前稍有差异,如下:
exec java $JVM_ARGS -Djetty.port=$1 -XX:MaxDirectMemorySize=5g -Dsolr.directoryFactory=HdfsDirectoryFactory -Dsolr.lock.type=hdfs -Dsolr.hdfs.home=/solrcloud/feed -Dsolr.hdfs.confdir=/home/deploy/solr-hdfs-client/hadoop-2.0.6-solr/etc/hadoop -Dbootstrap_conf=true -DnumShards=$SHARDS -DzkHost=$ZK_SERVERS -DzkClientTimeout=$ZK_TIMEOUT -Dsolr.solr.home=$BASE_DIR -jar $BASE_DIR/start.jar |
红色字体为与普通的solrcloud集群的启动脚本差异的地方。
-XX:MaxDirectMemorySize=5g 为了提高写性能,设置的堆外内存。
- -Dsolr.hdfs.home
指的是:solr索引在HDFS上存储的根目录
- Dsolr.hdfs.confdir
指的是:solr操作HDFS集群的hadoop客户端配置文件的目录。下一节将主要介绍Hadoop客户端的配置。
solrconfig.xml
directoryFactory需要调整成HdfsDirectoryFactory,并可以设置缓存等信息。
<directoryFactory name="DirectoryFactory" class="solr.HdfsDirectoryFactory"> <str name="solr.hdfs.home">${solr.hdfs.home:}</str> <str name="solr.hdfs.confdir">${solr.hdfs.confdir:}</str> <bool name="solr.hdfs.blockcache.enabled">true</bool> <int name="solr.hdfs.blockcache.slab.count">1</int> <bool name="solr.hdfs.blockcache.direct.memory.allocation">true</bool> <int name="solr.hdfs.blockcache.blocksperbank">16384</int> <bool name="solr.hdfs.blockcache.read.enabled">true</bool> <bool name="solr.hdfs.blockcache.write.enabled">true</bool> <bool name="solr.hdfs.nrtcachingdirectory.enable">true</bool> <int name="solr.hdfs.nrtcachingdirectory.maxmergesizemb">16</int> <int name="solr.hdfs.nrtcachingdirectory.maxcachedmb">64</int> </directoryFactory> |
Solr服务的Hadoop客户端
我们是将Hadoop服务器集群随便拷贝了一个节点放到/home/deploy/目录下,并新建了一个solr-hdfs-client目录,与其他应用(如:solr服务)的部署目录同级别。
/home/deploy/
-| solr-hdfs-client
- 客户端挂载
Solr的Hadoop客户端需要定义一个挂载文件:mountTable.xml
在etc/hadoop目录下的目的是方便在core-site.xml中引用。
<configuration>
<property> <name>fs.viewfs.mounttable.default.link./user</name> <value>hdfs://ns1/test</value> </property>
</configuration> |
第一个启动的solr服务,挂载必须是/user,因为solr就找这个挂载名,否则会报错,如下:
至于这个挂载链接具体的hdfs系统中是那个目录是随意的,比如我做的测试是test目录,实际项目中还是要起有实际意义的名字,我们的生产环境就是/user,因为solr在往hdfs里面写数据的时候会将solr进程的拥有者作为/user的下级目录,之后才是在“-Dsolr.hdfs.home”指定的目录,如:
另外,我在集群的core-site.xml配置了/user挂载,这样集群在启动的时候就初始化了这个挂载,所以在第一个solr客户端挂载表中不指定/user也没关系,因为solr节点启动的时候就找集群中有没有/user这个挂载,后续solr节点启动过程就找到了,可以任意配置挂载。
我的测试两个分片的数据存储目录:
- 客户端core-site.xml
其余都和其他的节点一样,只需在最上面,将上面说的挂载文件引入进来即可:
<xi:include href="mountTable.xml"/> |
转自:http://www.cnblogs.com/requelqi/p/3740969
相关问答
更多-
MYSQL 数据库中数据的订单越来越多 打开后台订单列表的时候很慢[2023-07-31]
索引 -
请问如何把kafka的消息写到hdfs ,这是一个怎样的流程?[2023-09-16]
camus和gobblin工具 -
solrcloud怎么查看索引[2022-04-11]
调研了一下,发现索引文件的数据结构相当复杂,这个好像是每提交一次建索引,就会将以前已生成的索引重新组织,而且还会生成新文件,所以如果采用在HDFS中追加写索引文件,那工作量将相当大,必须清楚了解索引文件数据结构及索引文件关联,下面... -
solrcloud 怎么重建索引[2023-11-04]
正好在研究Solr 可以直接在Solr中Schema Brower中查看已经建立索引的字段,其实也就是配置的solr的字段映射文件 每次在往Solr中添加、修改数据时,solr都会根据映射配置文件建立索引;所以是先配置schema.xml文件,你修改完后,索引已经建了肯定不会修改,所以需要手动重建索引哦 -
如何通过solr给hdfs的数据增加索引[2023-08-26]
调研了一下,发现索引文件的数据结构相当复杂,这个好像是每提交一次建索引,就会将以前已生成的索引重新组织,而且还会生成新文件,所以如果采用在HDFS中追加写索引文件,那工作量将相当大,必须清楚了解索引文件数据结构及索引文件关联,下面有三篇对lucene索引结构的分析,我是没怎么看懂,有兴趣的可以看一下 -
存储在HDFS上的文件如何构建索引?[2023-10-11]
非常感觉您的回答。solr原理只是说了可以通过MR构建索引,但是如何通过MR批量构建索引(有简单的可以运行的例子吗?)我还是不太清楚,新手刚接触这方面,多多包涵!是只要在solr上配置hdfs路径就可以自己构建索引还是要自己写代码提交MR任务?直接通过MR从hdfs上读取数据构建索引和在hbase构建索引哪种方式好些? -
Solr(主要)用于存储和搜索,Hadoop(主要)用于分布式处理。 他们解决不同的问题。 最常见的是使用Solr和HDFS来存储/加载其索引文件 ,以便使用HDFS集群中的现有功能,或者允许通过Solr搜索已处理的Hadoop结果 。 如果您在Google上进行一些搜索,您会发现很多用例,演示文稿和库,例如LucidWorks的Hadoop集成 , Solr + Hadoop或Hortonworks的索引以及在Apache Solr中搜索数据 。 Solr is (mainly) for storage ...
-
如果有任何机会重新编制索引,只要这样做,这将是最好的(你必须处理两个单独的问题:a)从4.X迁移到6.0,以及b)从独立到SolrCloud ......这将是混乱)。 如果你不能重新索引: 是你所有的字段存储或有docValues =真? 如果是这样,您可以获取文档的原始内容。 阅读并使用solrj或一些脚本将它们编入索引。 如果没有,并且您有版本字段:请尝试手动将索引放入Solrcloud中。 不直接,但可能。 如果您没有版本字段,我认为将索引放在Solrcloud中是不可能的(尽管网络上的某些帖子会让 ...
-
好吧,我终于能够为测试建立一个合适的云环境,简而言之,即使使用RAMDirectory,索引速度也是注定的。 我不知道索引速度是否与云中的关注者数量或集合数量相关,但是具有1个领导者2个跟随者结构和8个集合使索引速度慢4到5倍。 我能够在17分钟内为大约3.5M文档编制索引,而对于云中的每个实例具有相同的配置,我只能在17分钟内索引650K文档...我不确定如何加快SolrCloud索引速度和某种方式惊讶地看到我对云的期望被逐一摧毁,因为我在处理它时不断遇到新的错误和问题。 如果这也发生在任何其他设置上,我 ...
-
我将尝试回答您的部分问题:SolrCloud确实在所有节点上编制索引,因此它会对副本产生性能影响。 这是由于“热复制”模型而不是您习惯的“冷复制”而完成的。 它解决了数据完整性问题以及群集上的实时搜索。 作为性能影响的代价,您可以获得一致的数据和更快的数据可用性。 实际上,您始终可以将数据拆分为分片(以额外硬件的价格),并具有相当的性能。 在任何一种情况下,由您决定SolrCloud是否适合您的需求。 您可以在没有云模型的情况下使用Solr 4,并像以前一样自行管理。 I'll try to answer ...