lucene 处理大规模数据的一些解决方法 katta--简介
来源:互联网 发布:网络市场定位 编辑:程序博客网 时间:2024/05/29 03:12
lucene 索引文件有大概10G,搜索时候比较慢,最好拆分存放索引,多位置同时搜索
当数据量较大访问量较大的时候,分布式就不可避免,处理方式有下面几种:
1,用一个好服务器作为索引服务器,磁盘冗余的方式保证搜索的正常进行;
2,索引服务器用一台,检索服务器用分布式;
3,编写索引算法,分布式存放,检索时采用多线程搜索合并搜索结果返回;
4,索引分布式存储用硬件的方式保证索引文件的同步,检索也采用分布式。
5 不同业务,不同分布。
分布如何做好,看对搜索的要求,比如要求整个索引搜索要求多少时间内完成,搜索整体便于扩展,当中一服务器宕机,如何快速调整,承受高并发搜索,如何监视整个集群的运转,如何不断提升搜索。
katta--索引的管理者
* 可以轻松构建大数据量和高负载的环境
* 拆分lucene索引或者hadoop mapfiles成文件碎片存放到多台服务器上
* 自动复制碎片功能,从而达到高性能和容错功能
* 很容易扩展集群
* Master故障切换
* 快速的、轻量级的、非常容易整合
* 在hadoop集群上运行的很好
* Apache Version 2 License
介绍
katta 是一个运行在许多商品硬件服务器上的分布式应用,它非常类似于Hadoop MapReduce, Hadoop DFS, HBase, Bigtable 和 Hypertable.
概述
主节点服务器管理从节点服务器和index shards任务。从节点服务器服务index shards。客户端允许从所有连接的节点上查找数据,并把所有的结果合并成一个结果返回给客户端。
数据结构
katta的索引是个文件夹,它里面包含一套所谓的index shards(文件形式)。这些子文件包含了Lucene索引。
index shards能够很简单的用Lucene的index writer创建。创建一个katta的索引只不过是把一群Lucene索引拷贝到一个文件夹下。因此katta索引可以用Hadoop map reduce创建(katta提供了一些工具),一台单独的服务器或者什么都可以满足你的要求。
这样我们就可以使用最适合我们的应用的索引结构方式。比如说:把含有常见相关术语的document放在同一个shard里。
主从节点的通信
主从节点的通信在分布式系统中非常重要。主节点必须尽可能块的知道从节点的是否已经挂没挂掉。通常此类的通信使用了心跳消息(heartbeat messages )来联系主从节点。但是katta使用了一个不同的方法实现。那就是Zookeeper,一个分布式配置和锁定系统,它是YaHoo的研究项目,用来实现主从节点的通信。Zookeeper允许你读写成一种分布式虚拟文件系统——虽然它不是一个真正的文件系统。从节点在启动过程中把一个临时文件写入一个叫“/nodes”的文件夹。主节点同意任何改变这个文件夹,如果一个从节点失败了,那Zookeeper会移除这个临时文件,并且发送一个通知给主节点。一个类似的程序是用来处理主节点的错误虽然这里只有活跃的主节点写了一个“/master”的文件夹,二级masters订阅通知到这个文件。
在katta中,所有的主从节点的通信都是实施了这种机制。
“/index”---当一个新的索引被部署上时写入这个文件
“/nodes-to-shards”---目录保存每一个从节点的文件夹,在每一个文件夹下是这个从节点被分配的索引文件列表
“/shards-to-nodes”---目录保存每一个从节点的文件夹,在每一个文件夹下是这个从节点已经部署的索引文件列表
客户端节点通信
当得到一个查找请求后客户端和从节点通信。为了客户端和节点的通信,我们决定使用Hadoop的RPC,它是一个非常快速的并且易于使用的同步通信的Java实现(Apache的Mina也很快速但它是异步的通信)。对于每个搜索请求,我们向所有节点发送请求的服分享我们的索引中搜索。
所有的请求都是做成多线程的,Hadoop的RPC保持开放的TC P IP连接。
载入Shards到节点
因为性能在查找中是至关重要的,所以katta首先把shards拷贝到节点的本地硬盘上。
Hadoop的文件系统可以理解所以的URL并把它们当做一个源。比如,“file:” 从一个本地的shards部署一个索引,所有的节点都能访问它。当然,“hdfs:”也能提供部署从Hadoop的分布式系统的一个索引。亚马逊的S3也支持了这——涉及到Hadoop文件系统文件的更多细节。
分布式评分
katta提供了分布式评分——这是因为我们不希望这个词完全平衡的分配所有shards。
每个搜索查询是在Katta中被两个网络往返:首先,我们从所有节点为查询得到文件的频率,然后根据这个值搜索查询到所有的节点访问。请注意,我们还提供了一个简单的计数方法,仅仅是数查询相匹配的文件,但并不表示,在一个网络往返。
集成
Katta提供的Java API管理系统,你可以集成到你的管理和监控应用程序中(具体见Katta的java api)。
Katta还提供的Java API ,可以搜索索引(Client.java ) -这将是一个结合点来连接你的网站或应用程序的搜索结果。
最后, Katta提供了一个命令行工具来管理系统级功能,如部署和取消部署的shards。
- lucene 处理大规模数据的一些解决方法 katta--简介
- katta安装遇到的一些问题
- katta--索引的管理者
- Katta
- 基于大规模XML数据的关键字查询处理关键技术研究
- Katta如何使用Zookeeper-数据更新
- 处理海量数据的模式MapReduce,大规模数据集的并行运算
- 大数据数据分析的大规模并行处理模型 Big Data Massive Parallel Processing(MPP) Model
- 需要处理的一些数据
- lucene 的一些整理
- lucene(一) lucene一些概念的理解
- 大数据:互联网大规模数据挖掘与分布式处理
- [转]数据分析与处理之一:大规模数据分析架构
- 大数据:互联网大规模数据挖掘与分布式处理
- 无处不在的数据及处理方法简介
- Lucene的总体架构简介
- lucene在实际项目开发中遇到的一些问题及解决方法
- 常用的一些数据的处理方法
- (二分+dp) poj 1631 Bridging signals
- js文字滚动
- C++primer 笔记
- EditPlus 3.20 Build 453 简体中文版
- 网页常见问题自查表及测试标准
- lucene 处理大规模数据的一些解决方法 katta--简介
- (字典树应用) poj 1451 T9
- Creating New Page Layouts(Sharepoint 2007 SDK)
- linux系统apache rewirte模块操作实例及apache追加模块
- (字典树+欧拉通路) poj 2513 Colored Sticks
- signal函数说明
- oracle中给用户增加导入数据权限的操作
- 树,B树,B-树,B+树,B*树
- 接收不到消息WM_LBUTTONDBLCLK的解决方法