开源分布式存储系统katta

简介:

以下是在Katta官网了解时候的简陋学习笔记,之后看到katta--索引的管理者比我翻译的好多了,嘻嘻

Katta是一个可扩展的、故障容错的、分布式实施访问的数据存储。

Katta可用于大量、重复、索引的碎片,以满足高负荷和巨大的数据集。这些索引可以是不同的类型。当前该实现在LuceneHadoop mapfiles

  • 让大型高负荷的索引变简单
  • 能为许多具有大型Lucene或Hadoop Mapfile 的索引碎片的服务器提供服务
  • 在不同服务器上复制碎片以保证性能和容错性
  • 支持插件化的网络拓扑
  • 故障管理
  • 快速、轻量级、易于集成
  • 与Hadoop集群工作良好
  • Apache License,Version 2.0

Intro

Katta is a distributed application running on many commodity hardware servers very similar to Hadoop MapReduce, Hadoop DFS, HBase, Bigtable or Hypertable

Overview

master负责管理节点和索引分片。节点为索引分片服务。客户端可以去所有节点搜索并合并结果集。目录/分片种类可以不同,取决于节点服务器的内容服务器

Content Server

每个节点负责一个内容服务器。现在提供Lucene indices和 Hadoop mapfiles. 你可以实现自己的

数据结构

索引文件夹由子索引分片文件夹组成。如lucene的索引分片能用indexwriter创造,仅仅简单把lucene的索引集合起来。所以katta的目录能被mapreduce制造。你可以构造自己想要的索引

主节点通信

katta通过zk实现通信,把信息写在虚拟文件系统里。节点启动时写入临时文件/node/live
master订阅虚拟文件系统的任何改变,当节点失败的时候,zk移除虚拟文件并通知master。
主节点和次主节点也是通过类似方式,由活跃的master写在/master里
master和nodes都各自有个queue,用来处理自己的操作和任务,具体的:
       - 客户端分配索引部署任务给master queue
       - master布置分片任务给nodes
       - node做自己queue里的任务,比如去hdfs里拷文件加到lucene内容服务器里,成功后记录在zk下的“/shard-to-nodes”文件里
       - node成功或crash的结果通告给master,然后在zk里公布索引以及一些元数据,如“/indices/indexX”

       - 搜索客户端监视目录文件夹,会被通知更新.通过读取“/shard-to-nodes” 文件夹,获知哪些node在服务新的索引分片

客户端节点通信

客户端要和所有节点通信.使用hadoop RPC(很快且比较容易用java实现同步).对搜索请求,发送给所有需要去找索引分片搜索的nodes.请求是多线程处理的,而且hadoop RPC保持TCP/IP连接

给node装载分片

katta先把分片复制到node的硬盘驱动器。映射的时候是hdfs地址,也支持S3。为了不减慢搜索,为分片部署提供节流机制。

为lucene的评分实现分布式

由于term在分布式情况下在每个分片里不平均,所以每次请求进行两轮:
1. 从所有node里得到doc的频率
2. 把这个值和请求发给所有node去搜索

(意思是在第一算得总数,第二轮的时候各个node可以各自计算各自搜素结果的权重)

整合

DeployClient.java for deploying and un-deploying of indices.
ILuceneClient.java for querying lucene indices (uses Client.java).

IMapFileClient.java.java for querying hadoop mapfiles  (Client.java).


目录
相关文章
|
17天前
|
消息中间件 中间件 数据库
NServiceBus:打造企业级服务总线的利器——深度解析这一面向消息中间件如何革新分布式应用开发与提升系统可靠性
【10月更文挑战第9天】NServiceBus 是一个面向消息的中间件,专为构建分布式应用程序设计,特别适用于企业级服务总线(ESB)。它通过消息队列实现服务间的解耦,提高系统的可扩展性和容错性。在 .NET 生态中,NServiceBus 提供了强大的功能,支持多种传输方式如 RabbitMQ 和 Azure Service Bus。通过异步消息传递模式,各组件可以独立运作,即使某部分出现故障也不会影响整体系统。 示例代码展示了如何使用 NServiceBus 发送和接收消息,简化了系统的设计和维护。
32 3
|
24天前
|
消息中间件 存储 监控
消息队列系统中的确认机制在分布式系统中如何实现
消息队列系统中的确认机制在分布式系统中如何实现
|
24天前
|
消息中间件 存储 监控
【10月更文挑战第2天】消息队列系统中的确认机制在分布式系统中如何实现
【10月更文挑战第2天】消息队列系统中的确认机制在分布式系统中如何实现
|
23天前
|
存储 开发框架 .NET
C#语言如何搭建分布式文件存储系统
C#语言如何搭建分布式文件存储系统
58 2
|
13天前
|
消息中间件 存储 监控
消息队列系统中的确认机制在分布式系统中如何实现?
消息队列系统中的确认机制在分布式系统中如何实现?
|
2月前
|
存储 块存储
ceph分布式存储系统常见术语篇
关于Ceph分布式存储系统的常见术语解释和概述。
92 1
ceph分布式存储系统常见术语篇
|
23天前
|
存储 分布式计算 监控
C# 创建一个分布式文件存储系统需要怎么设计??
C# 创建一个分布式文件存储系统需要怎么设计??
27 0
|
3月前
|
消息中间件 存储 监控
消息队列系统中的确认机制在分布式系统中如何实现?
消息队列系统中的确认机制在分布式系统中如何实现?
|
3月前
|
机器学习/深度学习 分布式计算 PyTorch
构建可扩展的深度学习系统:PyTorch 与分布式计算
【8月更文第29天】随着数据量和模型复杂度的增加,单个GPU或CPU已无法满足大规模深度学习模型的训练需求。分布式计算提供了一种解决方案,能够有效地利用多台机器上的多个GPU进行并行训练,显著加快训练速度。本文将探讨如何使用PyTorch框架实现深度学习模型的分布式训练,并通过一个具体的示例展示整个过程。
122 0
|
3月前
|
运维 Cloud Native 容灾
核心系统转型问题之云原生分布式核心,业务敏捷该如何实现
核心系统转型问题之云原生分布式核心,业务敏捷该如何实现

热门文章

最新文章