stone Solr多少shard合适 巨魔刷新吗

启动成功后你可以通过浏览器8983看到solr的Web页面。

  • 你可以在web界面选定一个Core然后查询。solr有查询语法文档

  • 如果要想把数据写到HDFS

    可以增加如下参数设定直接内存大小,优化Hdfs读写速度

    • Solr的建索引数据是要在提交时写入磁盘的,这是硬提交确保即便是停电也不会丢失数据;为了提供更实时的检索能力,Solr设定了一种軟提交方式

      软提交(soft commit):仅把数据提交到内存,index可见此时没有写入到磁盘索引文件中。

      一个通常的用法是:每1-10分钟自动触发硬提交烸秒钟自动触发软提交。

    • 允许通过唯一键查找任何文档的最新版本数据并且不需要重新打开searcher。这个主要用于把Solr作为NoSQL数据存储服务而不僅仅是搜索引擎。

      Realtime Get当前依赖事务日志默认是开启的。另外即便是Soft Commit或者commitwithin,get也能得到真实数据 注:commitwithin是一种数据提交特性,不是立刻而昰要求在一定时间内提交数据

}

SolrCloud 是基于 Solr 和 Zookeeper 的分布式搜索方案是囸在开发中的 Solr4.0 的核心组件之一,它的主要思想是使用 Zookeeper 作为集群的配置信息中心

它有几个特色功能:①集中式的配置信息 ②自动容错 ③近實时搜索 ④查询时自动负载均衡。

下面看看 wiki 的文档:

SolrCloud 是指 Solr 中一套新的潜在的分发能力这种能力能够通过参数让你建立起一个高可用、
容錯的 Solr 服务集群。当你需要大规模容错,分布式索引和检索能力时使用 SolrCloud(solr 云)

看看下面“启动”部分内容,快速的学会怎样启动一个集群後面有 3 个快速简单的例子,它们展现怎样启动一个逐步越来越复杂的集群检出例子之后,需要翻阅后面的部分了解更加细节的信息

对於单独运行的 Solr 实例,它有个东西叫 SolrCore(Solr.xml 中配置的),它是本质上独立的索引块如果你打算多个索引块,你就创建多个 SolrCores当同时部署SolrCloud 的时,独立的索引块可以跨越多个 Solr 实例这意味着一个单独的索引块能由不同服务器设备上多个 SolrCore 的索引块组成。我们把组成一个逻辑索引块的所有 SolrCores 叫做┅个独立索引块儿(collection)一个独立索引块是本质上一个独立的跨越多个 SolrCore 索引块的索引块,同时索引块尽可能随着多余的设备进行缩放如果你想把你的两个 SolrCore Solr 建立成 SolrCloud,你将有 2 个独立索引块,每个有多个独立里的 SolrCores 组成

如果你还没了解,通过简单的 Solr 指南让自己熟悉 Solr注意:在通过指南叻解云特点前,重设所有的配置和移除指南的文档.复制带有预先存在的 Solr 索引的例子目录将导致文档计数关闭Solr 内嵌使用了Zookeeper 作为集群配置和协調运作的仓储协调考虑作为一个包含所有 Solr 服务信息的分布式文件系统。

这个例子简单的创建了一个代表一个独立索引块的两个不同的 Solr多尐shard合适s 的两个 solr 服务组成的集群从我们将需要两个 solr 服务器,简单的复制例子目录副本作为第二个服务器时要确保没有任何索引存在。

下媔的命令启动了一个 solr 服务同时引导了一个新的 solr 集群

现在我们想要启动我们的第二个服务器;因为我们没明确设置碎片 id它将自动被设置成 Solr多尐shard合适2,启动第二个服务器指向集群

接下来,索引一些文档如果你想要快速完成一些,像 java 你能够使用 CloudSolrServer solrj 的实现和简单的用 Zookeeper 地址初始化它僦可以了.或者也可以随便选择某个 solr 实例添加文档这些文档自动的被导向属于他们的地方。

现在发起一个获得覆盖整个集合的分布式搜索服务搜索到的任何一个服务的结果的请求:

如果在任一个点你希望重新加载或尝试不同的配置,你能通过关闭服务器后简单的删除solr/zoo_data 目录方式删除所有 zookeeper 的云状态。

例 B:简单的支持副本的两个碎片集群

有先前的例子这个例子通过再创建 Solr多少shard合适1 和 Solr多少shard合适2 副本很容易创建起来。额外的 Solr多少shard合适 副本用于高可用性和容错性或用于提高集群的检索能能力。

首先通过前一个例子, 我们已经有两个碎片和一些文档索引在里面了然后简单的复制那两个服务:

然后在不同的端口下启动这两个新的服务,每个都在各自的视窗下执行

刷新 zookeeper 浏览页面核实 4 个 solr 節点已经启动,并且每个 Solr多少shard合适 有两个副本因为我们已经告诉 Solr 我们想要 2 个逻辑碎片,启动的实例 3 和 4 自动的被负值为两个 Solr多少shard合适s 的副

現在向任何一个服务器发送请求来查询这个集群

多次发送这个请求,来研究 solr 服务的日志你应该能够发现 Solr 实现跨副本的负载均衡请求,鼡不同的服务满足每一个请求 浏览器发送请求的服务器里有一个顶层请求的日志描述,也会有被合并起来生成完成响应的子请求的日志描述

为了证明故障切换的可用性,在任何一个服务器(除了运行 Zookeeper 的服务器)运行窗口下按下CTRL-C一旦那个服务实例停止运行,就向剩余运荇的服务器的任何一个发送另一个查询请求你应该仍然看到完整的结果。

SolrCloud 能够持续提供完整查询服务直到最后一个维护每一个碎片的服務器当机.你能通过明确地关闭各个实例和查询结果来证明这种高可用性如果你关掉维护某一个碎片的所有服务器,请求其他服务器时将會返回 503 错误结果要想从依然运行的碎片服务中返回可用的正确文档,需要添加Solr多少shard合适s.tolerant=true 查询参数

SolrCloud 用多主服务+监控者服务实现。这意味著某写节点或副本扮演一种特殊角色你不需要担忧你关掉的是主服务或是集群监控,如果你关掉它们中的一个故障切换功能将自动选絀新的主服务或新的监控服务,新的服务将无缝接管各自的工作任何 Solr 实例都能被升级为这些角色中的某个角色。

例 C:支持副本和完整 zookeeper 服務的两个碎片集群
例 B 的问题是可以 有足够多的服务器保证任何一个损坏的服务器的信息幸存下来但确只有一个包含集群状态的 zookeeper 服务器。洳果那台 zookeeper 服务器损坏分布式查询将仍然工作在上次zookeeper 保存的集群状态下,可能没有机会改变集群的状态了

在 a zookeeper ensemble(zookeeper 集群)中运行多个 zookeeper 服务器保证 zookeeper 垺务的高可用性。每个 zookeeper 服务器需要知道集群中其他服务器且这些服务器中的一个主服务器需要提供服务。例如: 3 台组成的 zookeeper 集群允许任一個故障而后通过剩余 2 个协商一个主服务继续提供服务。5 台的需要允许一次 2

对于用于生产服务时推荐运行一个额外的 zookeeper 集群而不是运行内嵌在 Solr 里面的 zookeeper服务。在这里你能阅读更多关于建立 zookeeper 集群的知识对于这个例子,为了简单点我们将用内嵌的 zookeeper 服务

为了方便,我们上传第一個服务器 solr 配置到集群你将注意到第一个服务器阻塞了,直到你启动了第二个服务器这是因为 zookeeper 需要达到足够的服务器数目才允许操作。

現在我们已经运行起由 3 个内嵌 zookeeper 服务组成的集群尽管某个服务丢失依然保持工作。通过 CTRL+C 杀掉例 B 的服务器然后刷新浏览器看 zookeeper 状态可以断定 zookeeper 服務仍然工作注意:当运行在多个 host 上时,在每个需要设置对应的

Solr 运行 Zookeeper但是记住一个 zookeeper 集群不容易进行动态修改。除非将来支持动态修改否则最好在回滚重启时进行修改。与 Solr 分开处理通常是最可取的

鉴于确保 Zookeeper 搭建起来是非常快速的,要记住几点:Solr 不强烈要求使用 Zookeeper很多情況优化可能不是必须的。另外当添加更多的 Zookeeper 节点对读数据性能会有帮助,但也轻微的降低了写的性能再有,当集群处于稳定运行时solr 與 Zookeeper 没有太多的交互。如果你需要优化 zookeeper这里有几个有益的要点:

1.ZooKeeper在专用的机器上运行效果最好。ZooKeeper 提供的是一种及时服务专用设备有助于確保及时服务的响应。当然专用机器并不是必须的。
2.ZooKeeper在事务日志和快照在不同的硬盘驱动器上工作效果最好
3.如果配置支持 solr 的 Zookeeper各自使用獨立的硬盘驱动器有助于性能。

5、通过集合 api 管理集合
你可以通过集合 API 管理集合在这个 API 壳下,一般使用 CoreAdmin API 异步管理每台服务器上的 SolrCores对于如果你自己处理使独立的 CoreAdmin API 通过替换 action 参数就能调用每个服务器来说,这无疑是一个必不可少好东西


name:将被创建的集合的名字
numSolr多少shard合适s:集合创建時需要创建逻辑碎片的个数
maxSolr多少shard合适sPerNode:一个创建操作将展开创建 numSolr多少shard合适s*replicationFactor 碎片副本遍布在你的 Solr 节点上,公平分布同一个碎片的两个副本不會在同一个 Solr 节点上。如果创建操作完成时 Solr 损坏该操作不会创建出新集合的任何部分。该参数用来防止在同一个 Solr 节点创建太多副本默认參数

相关参数:name:将被创建的集合别名的名字
collections:逗号分隔的一个或多个集合别名的列表

name:将被重载的集合的名字

这个命令不能用于使用自定义哈唏的集群,因为这样的集群没有一个明确的哈希范围 它只用于具有plain 或 compositeid 路由的集群。

该命令将分割给定的碎片索引对应的那个碎片成两个噺碎片通过将碎片范围划分成两个相等的分区和根据新碎片范围分割出它在父碎片(被分的碎片)中的文档。新碎片将被命名为 appending_0 和_1例如:Solr哆少shard合适=Solr多少shard合适1 被分割,新的碎片将被命名为 Solr多少shard合适1_0 和 Solr多少shard合适1_1一旦新碎片被创建,它们就被激活同时父碎片(被分的碎片)被暂停因此将没有新的请求到父碎片(被分的碎片)

该特征达到了无缝分割和无故障时间的要求。原来的碎片数据不会被删除使用新 API 命令重载碎片鼡户自己决定。

该特性发布始于 Solr4.3由于 4.3 发布版本发现了一些 bugs,所以要使用该特性推荐等待 4.3.1。

别名允许你创建独立的指向一个或多个真是集合嘚虚拟集合你能够在运行时修改别名。

创建或修改别名用于发送修改的别名应该只映射一个独立的集合。读的别名能映射一个或多个集合

查询一个集合的所有碎片(注意:那个集合已经隐含在 URL 中了)

查询一个兼容集合的所有碎片,明确详述如下:

查询多个兼容集合的所有碎片

查询集合的某些碎片例子中,用户已经按日期对索引进行分割了每月创建一个新的碎片

明确指明以想要查询碎片的地址

明确指明以想偠查询碎片的地址,同时为负载均衡和故障切换给出可选的地址

所有必须的配置已经安装在 Solr 的例子中下面是如果你正在迁移旧的配置文件你需要添加什么,或不应该删除什么

必须有一个复制处理调用的定义

必须有一个获取实际时间处理的调用的定义

当你在一个集合中启动 SolrCore 時通过 numSolr多少shard合适s 参数可以控制集群的规模 这个参数一般自动赋给关联每个实例的碎片。启动 numSolr多少shard合适s 个实例后所有的 SolrCores 都被均匀的加入每個碎片作为副本

向集合添加 SolrCores 保证其启动是很简单的,你随时都可以进行这样的操作新的 SolrCore 在激活前会把它的数据同步到碎片中的副本上。

如果你要在几台机器上启动集群不仅添加副本需要花时间扩展成集群也需要时间,那么你可以选择通过每部机器负责几个碎片的方式启动(使用多 SolrCores),然后通过对碎片启动副本的形式迁移碎片到新的设备上最终移除原来设备上的碎片。

Solr4.3 具备新的 API 接口 SPLITSolr多少shard合适,分割已存在的碎片成两份新的碎片相关介绍前面讲过。

如果你希望启用近实时搜索你可能需要修改放在ZooKeeper中的solrconfig.xml文件,添加启动软件自动提交配置或者通过向集群发送软提交。详见看

文档被散列存储到所有碎片的数量。每个碎片有一个主碎片(领导者),每个主碎片有 N 个副本
默认值 找到的第一个本地地址 如果自动找到的地址是错的你可以通过这个参数修改
默认值 jettry的系统配置 这个参数是Solr使用的,默认使用的是jettry的配置攵件
配置该参数让 Solr 运行起内嵌的 Zookeeper 服务参数设置了 Zookeeper 所在的服务器地址。这个值会出现在 zkHost 参数中我们能够知道都有哪些 zk 服务器。简单模式鈳以使用默认值;注意:这个值必须是 zkHost 中的一个;另外多服务器版的不能使用默认的 localhost。

碎片 id 可以在每个 core 元素的属性中配置

第一次启动 Solr囿两种使用系统参数加载初始化 Zookeeper 配置文件的方法。记住只用于第一次启动或覆盖配置文件时。每次启动都要带着系统参数系统参数会覆盖配置文件中名字相同的值。

如果启动时携带参数 -Dbootstrap_conf=true每个 SolrCore 将把自己的配置文件加载关联到它对应的集合上。


2.通过给的配置文件名字从指萣目录下加载配置集尽管没有指定集合到配置集的关联,如果只有一个配置集集合将自动链接到这个配置集。

CLI 工具也可以配置 Zookeeper 它与仩面两种方法一样。 它提供一些命令能够配置集到集合关联,创建 Zookeeper 路径或移除还能从 zookeeper 下载配置文件到本地。

要使用这个特点zkHost 参数用仩”chroot”后缀,而后简单启动 solr

很少 Solr 搜索框架不支持分布式搜索的有些情况下,一个框架无法支持分布式不过,那只是时间和努力的问题不支持标准分布式搜索的搜索框架,它的 SolrCloud 同样不支持通过 distrib=false控制是否使用分布式。

组群特点只能是在同一个存储碎片上的组群必须自萣义碎片特征才能使用组群特点。

}

我要回帖

更多关于 刷别人的聚魔之地 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信