文档章节

lucene + hadoop 分布式搜索运行框架 Nut 1.0a8

库克redis
 库克redis
发布于 2014/12/31 00:23
字数 1255
阅读 42
收藏 0
点赞 0
评论 0

1、概述 不管程序性能有多高,机器处理能力有多强,都会有其极限。能够快速方便的横向与纵向扩展是Nut设计最重要的原则。 Nut是一个Lucene+Hadoop分布式搜索框架,能对千G以上索引提供7*24小时搜索服务。在服务器资源足够的情况下能达到每秒处理100万次的搜索请求。 Nut开发环境:jdk1.6.0.21+lucene3.0.2+eclipse3.6.1+hadoop0.20.2+zookeeper3.3.1+hbase0.20.6+memcached+linux 2、特新 a、热插拔 b、可扩展 c、高负载 d、易使用,与现有项目无缝集成 e、支持排序 f、7*24服务 g、失败转移 3、搜索流程 Nut由Index、Search、Client、Cache和DB五部分构成。(Cache默认使用memcached,DB默认使用hbase) Client处理用户请求和对搜索结果排序。Search对请求进行搜索,Search上只放索引,数据存储在DB中,Nut将索引和存储分离。Cache缓存的是搜索条件和结果文档id。DB存储着数据,Client根据搜索排序结果,取出当前页中的文档id从DB上读取数据。 用户发起搜索请求给由Nut Client构成的集群,由某个Nut Client根据搜索条件查询Cache服务器是否有该缓存,如果有缓存根据缓存的文档id直接从DB读取数据,如果没有缓存将随机选择一组搜索服务器组(Search Group i),将查询条件同时发给该组搜索服务器组里的n台搜索服务器,搜索服务器将搜索结果返回给Nut Client由其排序,取出当前页文档id,将搜索条件和当前文档id缓存,同时从DB读取数据。 4、索引流程 Hadoop Mapper/Reducer 建立索引。再将索引从HDFS分发到各个索引服务器。对索引的更新分为两种:删除和添加(更新分解为删除和添加)。 a、删除在HDFS上删除索引,将生成的*.del文件分发到所有的索引服务器上去或者对HDFS索引目录删除索引再分发到对应的索引服务器上去。 b、添加新添加的数据用另一台服务器来生成。删除和添加步骤可按不同定时策略来实现。 5、Zookeeper服务器状态管理策略 在架构设计上通过使用多组搜索服务器可以支持每秒处理100万个搜索请求。每组搜索服务器能处理的搜索请求数在1万—1万5千之间。如果使用100组搜索服务器,理论上每秒可处理100万个搜索请求。 假如每组搜索服务器有100份索引放在100台正在运行中搜索服务器(run)上,那么将索引按照如下的方式放在备用中搜索服务器(bak)上:index 1,index 2,index 3,index 4,index 5,index 6,index 7,index 8,index 9,index 10放在B 1 上,index 6,index 7,index 8,index 9,index 10,index 11,index 12,index 13,index 14,index 15放在B 2上。。。。。。index 96,index 97,index 98,index 99,index 100,index 5,index 4,index 3,index 2,index 1放在最后一台备用搜索服务器上。那么每份索引会存在3台机器中(1份正在运行中,2份备份中)。尽管这样设计每份索引会存在3台机器中,仍然不是绝对安全的。假如运行中的index 1,index 2,index 3同时宕机的话,那么就会有一份索引搜索服务无法正确启用。这样设计,作者认为是在安全性和机器资源两者之间一个比较适合的方案。 备用中的搜索服务器会定时检查运行中搜索服务器的状态。一旦发现与自己索引对应的服务器宕机就会向lock申请分布式锁,得到分布式锁的服务器就将自己加入到运行中搜索服务器组,同时从备用搜索服务器组中删除自己,并停止运行中搜索服务器检查服务。 为能够更快速的得到搜索结果,设计上将搜索服务器分优先等级。通常是将最新的数据放在一台或几台内存搜索服务器上。通常情况下前几页数据能在这几台搜索服务器里搜索到。如果在这几台搜索服务器上没有数据时再向其他旧数据搜索服务器上搜索。优先搜索等级的逻辑是这样的:9最大为搜索全部服务器并且9不能作为level标识。当搜索等级level为1,搜索优先级为1的服务器,当level为2时搜索优先级为1和2的服务器,依此类推。

本文转载自:

共有 人打赏支持
库克redis
粉丝 0
博文 1
码字总数 0
作品 0
徐汇
nut有新版本

lucene + hadoop 分布式搜索运行框架 Nut 1.0a8 http://www.blogjava.net/nianzai/archive/2010/10/27/336255.html...

nianzai
2010/11/25
823
0
利用Lucene创建索引

利用Lucene的IndexWriter建立索引(详解) 需要lucene-analyzers-common-4.5.1.jar以上 /* * 建立索引,然后把建立后的文档添加到索引中去 * 提示先使用Document和Field把Field加入到Document中...

帅的不像男的
2016/05/24
49
0
分布式并行计算搜索框架--nutla

1、概述 不管程序性能有多高,机器处理能力有多强,都会有其极限。能够快速方便的横向与纵向扩展是Nut设计最重要的原则,以此原则形成以分布式并行计算为核心的架构设计。以分布式并行计算为...

红薯
2014/01/02
1K
0
lucene + hadoop 分布式运行框架--Nut

Nut 是一个为lucene提供分布式搜索的框架。理论上可对千G以上索引文件支持数千万级的用户搜索访问。Nut由Client、Server、Cache和DB四 部分构成。Client处理用户请求和对搜索结果排序。Serve...

匿名
2010/09/07
8.9K
0
nut 19.1 发布,Lucene + Hadoop 分布式运行框架

Nut 19.1 发布,此版本包括一些 bug 修复,增强自动控制部分的功能。 Nut是一个为lucene提供分布式搜索的框架。理论上可对千G以上索引文件支持数千万级的用户搜索访问。Nut由Client、Server、...

oschina
2014/01/02
1K
4
Nut 19.2 发布,Lucene+Hadoop 分布式运行框架

Nut 19.2 发布,此版本修复了图表的 bug,忽略当前的测量值;添加了两个 nutrients 到自动部分控制功能。 Nut是一个为lucene提供分布式搜索的框架。理论上可对千G以上索引文件支持数千万级的...

oschina
2014/06/15
1K
4
如何使用实现Lucene分布式,是采用Hadoop吗?如何学习Hadoop?

现在正准备做个项目,但是之前只是在项目中简单用Lucene实现搜索模块功能,当时只是对同类型数据进行索引。 现在可能数据源不同类,并且数据量非常大,所以想通过分布式索引和搜索。但是这方...

昵称不见了
2011/12/13
2.7K
3
如何使Lucene分布式索引与搜索

您好,之前在讨论区也提问过,不过没什么人会,所以就冒昧地给您提问,请求指导。 现在正准备做个项目,但是之前只是在项目中简单用Lucene实现搜索模块功能,当时只是对同类型数据进行索引。...

昵称不见了
2011/12/15
2.3K
1
基于Lucene的分布式搜索方案,solr 还是 lucene+hadoop好点

最近要实现一个分布式搜索框架,但不知道那种方案较好,经验较少。下面是一点初步了解, 第一种:采用 solr 的分布式功能。 由于最初设计的是index 的build 和search 是分离的,solr在这块就...

从前
2013/07/04
13.1K
9
搜索引擎选型调研文档

Elasticsearch简介* Elasticsearch是一个实时的分布式搜索和分析引擎。它可以帮助你用前所未有的速度去处理大规模数据。 它可以用于全文搜索,结构化搜索以及分析,当然你也可以将这三者进行...

看看这天
2016/04/05
53
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

面试感想(一)

最近跟北京的同事朋友聊天,深深的发现自己的技术已经和主流技术脱轨了,目前公司求稳为主,使用的技术略有些过时,因此萌生出了换工作的念头,正值三伏天,可以说真是顶着一颗偌大的决心去参加面试...

勤奋的蚂蚁
2分钟前
0
0
Kafka设计解析(一)- Kafka背景及架构介绍

原创文章,转载请务必将下面这段话置于文章开头处。(已授权InfoQ中文站发布) 本文转发自技术世界,原文链接 http://www.jasongj.com/2015/03/10/KafkaColumn1 摘要   Kafka是由LinkedI...

mskk
11分钟前
0
0
使用Service Mesh整合您的微服务架构

在微服务架构的世界中,它正在达到这样的程度,即管理系统的复杂性对于利用它带来的好处变得至关重要。 目前,如何实现这些微服务不再是一个问题,因为有很多可用的框架(Spring Boot,Vert....

xiaomin0322
14分钟前
0
0
看看 LinkedList Java 9

终于迎来了 LinkedList 类,实现的接口就有点多了 Serializable, Cloneable, Iterable<E>, Collection<E>, Deque<E>, List<E>, Queue<E>。LinkedList是一个实现了List接口和Deque接口的双端链......

woshixin
33分钟前
0
0
算法 - 冒泡排序 C++

大家好,我是ChungZH。今天我给大家讲一下最基础的排序算法:冒泡排序(BubbleSort)。 冒泡排序算法的原理如下: 比较相邻的元素。如果第一个比第二个大(可以相反),就交换他们两个。 对每...

ChungZH
36分钟前
0
0
jquery ajax request payload和fromData请求方式

请求头的不同 fromData var data = { name : 'yiifaa'};// 提交数据$.ajax('app/', { method:'POST', // 将数据编码为表单模式 contentType:'application/x-ww...

lsy999
38分钟前
0
0
阿里P7架构师,带你点亮程序员蜕变之路

前言: Java是现阶段中国互联网公司中,覆盖度最广的研发语言。 掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。 有不少朋友问,成为Java架...

Java大蜗牛
39分钟前
1
0
Ecstore 在没有后台管理界面(维护)的情况如何更新表的字段

window 系统: 切换到:app\base 目录下: C:\Users\qimh>d: D:\>cd D:\WWW\huaqh\app\base 执行:D:\WWW\huaqh\app\base>cmd update linux 系统: 1># cd /alidata/www.novoeshop.com/app/......

qimh
44分钟前
0
0
设计模式-策略模式

策略模式 解释 对工厂模式的再次封装,使用参数控制上下文信息(将工厂返回的实例赋值给context field) 不会返回bean实例,只是设置对应的条件 调用context的方法(调用field的方法) 用户只...

郭里奥
47分钟前
0
0
python使用有序字典

python自带的collections包中有很多有用的数据结构可供使用,其中有个叫OrderedDict类,它可以在使用的时候记录元素插入顺序,在遍历使用的时候就可以按照原顺序遍历。 a = {"a":1,"b"...

芝麻糖人
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部