Sphere/sector 深度剖析之一

时间:2022-01-29 23:16:44

 本文原创,可以转载, 但必须以超链接形式标明文章原始出处和作者信息
     转载请注明: 转载自sin的专栏 http://blog.csdn.net/yclzh0522

一,背景介绍:

 Sector/Sphere系统包括两个组件,一个是Sector分布式文件系统,一个是Sphere并行数据处理框架。

 开源的,用C++开发的,遵循Apache 2.0许可证,可以从官网下载 http://sector.sf.net

   开始于2006年,当前版本为2.8

二,特性分析

1,特性一:数据本地化

 

传统系统:

 存储系统和计算系统分离

  成本高,数据IO带宽高

 

 

Sector/Sphere 模型:

 在存储节点处理数据,代价不高,并行数据IO

 

 

2,特性二:简化编程

并行编程用MPI

灵活而且很强大,但是开发非常复杂

Sector/Sphere:

对于开发者来说,集群作为一个整体,简化编程接口

数据并行程序有限

 

3,特性三:大规模系统

 

传统系统:

需要移动数据和装载数据

 

Sphere/Sector

支持广域网范围的数据收集和分布

 

三,架构分析

Security Server

用户账户认证:密码和IP地址

Sector使用自己的账号资源,但是可以扩展连接到LDAP和本地系统账户

Mastersslaves之间通过证书和IP地址认证

Master Server

维护文件系统元数据

多个激活的masters:高灵活性和负载均衡

 1,可以在运行时间加入或者离开

 2,都能够相应用户请求

 3,同步系统元数据

维护slaves节点和其他masters的状态

响应用户请求

Slave Nodes

存储Sector文件:Sector是一个用户空间文件系统,每个Sector文件存储在一个或者多个slaves节点的本地文件系统(例如:EXTXFS等),Sector文件没有切分成blocks

处理Sector数据:数据处理在相同的存储节点或者最近的存储节,输入和输出都是Sector文件

Clients

Sector文件系统客户端API:用来在程序里访问Sector文件的C++ API

Sector系统工具:文件系统访问工具

FUSE:挂载Sector文件系统作为本地目录

Sphere编程API:开发并行数据处理应用程序的API

四,机制分析

1,拓扑考虑和程序考虑

Sector管理和调度时考虑到网络拓扑结构

当允许提高程序性能或者安全需要时,用户可以文件本地化

2,副本

Sector靠副本提供软件层面的容错性,不需要硬件RAID。所有的文件都有默认个副本

,个数可以设置。副本间的距离默认最远,可以预设。文件可以限制本地化。

3,容错性

数据容错性:Sector通过副本机制保证数据一致性,无论多少个节点挂掉,活着的节点依然可以服务数据。Sector不需要请求元数据,文件系统可以通过真实数据重建。

系统容错性:所有的Sector masterslave节点都可以动态加入或者离开,

Master监控slave节点并且可以自动重启挂掉的节点,或者移除有问题的节点,用户如果当前连接的挂掉,可以自动切换到好的master或者slave节点。

4UDT:基于UDP的数据传输协议

官网:http//udt.sf.net

开源的基于UDP的数据传输协议,有新的拥塞控制盒可靠性控制

快速,穿透防火墙,易于使用,已经在很多商业和研究的大型数据系统使用。       

5,广域网部署

Sector可以被部署在多个数据中心,Sector使用UDT协议数据传输,数据备份在不同的数据中心。

6,规则化数据管理

配置文件可以动态配置,数据IO可以通过配置达到吞吐量和容错性之间平衡。

7,存储节点处理

每个存储节点也作为计算节点,数据处理在本地节点或者最近的可用节点,像md5

Sumgrep可以运行更快在Sector上。用SpehreMapReduce API进行大规模数据分析。

Sector特性总结:

1,高达1000多节点和PB级别数据

2,软件层面的容错性

3,工作在单数据中心或者多数据中心的拓扑结构

4,灵活的规则化数据管理

5,集成WAN加速

6,集成安全和穿透防火墙

7,集成系统监控

缺点:

1,文件大小受限于存储节点的可用空间

2,用户可能需要切分他们的数据集成适当的大小

3Sector设计提供了在大数据集上高吞吐量。

Sphere:简化数据处理

Sphere:数据移动

一个客户程序需要确定inputoutputUDF的名字。

UDF:遵循Sphere标准的C++函数 int FunctionName(const SInput* input, SOutput* output, SFile* file)

编译成动态库(.so

MalStone Benchmark例子

MalStone流程:

1,输入log文件集合

2UDF-I:读取log文件,处理每行,获得site ID并且hash到一个bucketID,过滤不必要的信息产生新的记录

3,中间集:bucket文件,每个文件包含site的一个子集。

4UDF-2:读取bucket文件,计算传染率每周每个点

5,结果集:包含了每个点的传染率

 安装环境:

下载:http://sourceforge.net/projects/sector

文档:http://sector.sourceforge.net/doc/index.html

Linuxg++ 4.xopenssl-devfuse(可选的)

代码目录结构:

Conf:配置文件目录

Doc:文档

ExamplesSphere编程例子

FuseFUSE接口

Include:头文件

Lib:存储编译后的库文件

Mastermaster服务器

Tools:客户端工具

Security:安全服务器

Slaveslave服务器

编译

Tar -zxvf sector.2.8.tar,gz

Cd ./sector-sphere;make

配置:

master.conf  master服务器配置,像Sector端口,安全服务器地址和master服务器数据位置

Slave.conf slave节点配置,像master服务器地址和本地存储路径

Client.conf master服务器地址和用户账户和密码便于用户不需要每次运行Sector工具时输入这些信息

 

本文原创,可以转载, 但必须以超链接形式标明文章原始出处和作者信息
     转载请注明: 转载自
sin的专栏 http://blog.csdn.net/yclzh0522