rockstor - a cloud object system based on hadoop

49
RockStor 基于Hadoop的云对象存储系统 Schubert Zhang 2012-02-10 This is a experimental prototype project.

Upload: schubert-zhang

Post on 13-May-2015

1.244 views

Category:

Technology


2 download

DESCRIPTION

RockStor - A Cloud Object System based on Hadoop. It's a experimental prototype project.

TRANSCRIPT

Page 1: RockStor -  A Cloud Object System based on Hadoop

RockStor 基于Hadoop的云对象存储系统

Schubert Zhang

2012-02-10

This is a experimental prototype project.

Page 2: RockStor -  A Cloud Object System based on Hadoop

Agenda

• 背景和系统概述

• 系统架构和实现

• 主要业务流程和系统功能

• 性能评估

• 功能完善和应用开发

Page 3: RockStor -  A Cloud Object System based on Hadoop

背景和系统概述

第一部分:

Page 4: RockStor -  A Cloud Object System based on Hadoop

什么是对象存储系统

对象(Object)是对象存储的基本单元,每个Object是数据和数据属性集的综合体,数据属性可由系统用户自由扩充。

对象存储系统是对象存储的载体,用户可通过对象存储系统完成对象的读写操作。

用户通过对象存储系统保存数据的典型数据类型包括:

多媒体,音乐,图片 视频监控文件 电话录音文件 压缩log文件 备份文件 操作系统的镜像 ……

Page 5: RockStor -  A Cloud Object System based on Hadoop

设计对象存储系统面临的问题

功能 数据的组织 对象存储系统需要合理组织对象数据在分布式文件系统上的存储结构,以满足生产系统中大量随机读写对系统性能带来的挑战。 元数据的组织 合适的元数据存储引擎以及正确的Schema设计能使元数据的访问更加高效,此处的元数据既包括对象本身的元数据又包括对象的存储信息。

性能 吞吐 对象存储系统需要满足在高并发访问下的稳定性能,无论是元数据还是数据的访问都不能成为系统性能的瓶颈。 稳定性 系统的性能不能随着系统运行时间的增长而下降,可靠稳定的系统实现应能够在系统长期运行中保持稳定,并能够应对系统硬件故障。 可扩展性 系统扩容应简单易行,性能可线性增长。

Page 6: RockStor -  A Cloud Object System based on Hadoop

Why Hadoop

HDFS HDFS是可靠稳定的分布式文件系统,具有高可靠,高并发等优点,且在一定条件下能够随着系统规模的扩大实现性能的线性增长。 HBase HBase架设在HDFS之上,利用HDFS的特性保证数据的稳定可靠,HBase负责数据的组织和管理,在Key-Value存储之上实现松散离散的数据表结构。 ZooKeeper 实现了全局锁服务,协调管理集群内各个计算和存储资源的状态,是大规模集群内部全局数据资源管理的绝佳工具。 MapReduce 分布式并行计算框架和数据并行处理的实现,使得对大数据的处理变得简单易行,随着计算节点的增加,分析处理的延时会大大降低。 Hadoop生态环境的各个组件为我们实现分布式对象存储提供了基础架构。

Page 7: RockStor -  A Cloud Object System based on Hadoop

系统概述

• 产品名称:RockStor (暂定) – 为产品确定名称,以方便编码、文档描述、用户界面等的各种命名要求。

• 开发背景

– 以Hadoop、HBase为基础; – 学习和参考Amazon AWS S3的功能和接口;

– 结合业界比较成熟的“分布式存储”、“对象存储系统和服务”的理念和设计思路;

– 这是一个实验性开发项目,目的是快速实现对象存储原型,验证技术和思路,同时熟悉Hadoop、HBase等开源产品。

• 对象存储系统 - RockStor – 采用分布式存储技术,为用户提供高可靠、大容量、易扩展的存储平台系统,采

用云存储服务技术为用户提供简单易用的使用接口。用户可在不关心系统的分布式实现的情况下,通过系统提供的接口使用该对象存储系统。

Page 8: RockStor -  A Cloud Object System based on Hadoop

对象和对象存储

• 对象和对象存储 – 对象(Object)是对一个数据单元的原始抽象,是最初级的概念。 – 对象存储系统就是用来存储和管理这些对象的。 – 在一个对象存储系统中,一个对象一般包含对象数据(Data)和对象元数据(Metadata)。对象数据是对象的主

体,而对象元数据是用来描述这个对象的一些参数。

– 从存储平台的角度看,我们一般认为对象数据是非结构化的(即存储平台不关心其内部结构)。例如,一个网页的HTML内容可以作为对象数据,而该网页的访问权限、URL、大小等可以作为其元数据。再例如,一张图片的图像内容可以作为对象数据,而该图片的格式(JPEG或BMP)、大小、作者、主题等可以作为其元数据。

• 对象存储系统一般可以存储许多对象,并可以根据每个对象的唯一标识来定位该对象在实际物理存储介质上的位置。在分布式对象存储系统中,位置信息还包括了分布式的节点位置等。对象存储系统还提供对象的元数据存储来保存对象的元数据。一般来说,系统会定义一些通用的元数据,例如:对象所有者、大小、ACL(Access Control Lists,访问权限控制列表)等。同时,用户也可以添加一些自定义的元数据,例如上面提到的图片的作者和主题等。

• 对象存储系统一般只提供通过对象的唯一标识来读写对象数据及其元数据的机制。

Page 9: RockStor -  A Cloud Object System based on Hadoop

系统关键特性

• 功能方面 – RockStor是一个用于存储和管理海量对象数据的存储系统。系统建立在分布式存储集群上,实现海量对象存储能力和逻辑,提供REST访问接口。

• 结构方面

– RockStor以分布式数据存储和分布式元数据存储为基础,实现了元数据和存储的逻辑分离。实现上使用了线程池-资源池的编程架构,提供高性能保证。

• 接口方面

– RockStor仿效Amazon S3,提供REST API服务接口。该接口可以作为RockStor的统一基准接口,对外提供存储服务,也可以作为其他接口的下层接口。系统基于该REST接口封装了基于Java语言的SDK,方便开发者使用。

• 特点方面

– Scalability:以分布式存储系统作为底层存储系统的强大Scalable能力,满足大规模数据的存储和扩展要求。 – High Availability:底层分布式存储系统的分布式架构和数据副本支持系统的稳定性和健壮性。 – Real-Time/Low-Latency:数据实时生效可见(Available)。 – High Throughput:强大的分布式系统支持很高的吞吐率。 – Multi Part Upload:提供了Multi Part的并发上传功能,提高大对象上传速度; – Range Based Download: 提供基于Range的多点并发下载功能,极大的提高了下载速度。 – Simple Data Model:存储的对象特点是一次写多次读,向用户提供对象的原子操作,简化了存储逻辑。用户可以由基本操作组合自己的业务逻辑。 – REST API:提供基于HTTP的Web访问接口,方便用户随时随地访问系统。接口采用先进的REST风格。

• 应用方面

– RockStor主要面向海量对象存储。适用于互联网、企业用户的数据存储业务。可面向大规模用户、企业提供存储服务。可使用RockStor作为平台基础构建完整的类似Amazon S3的云存储服务和企业内部存储服务。

Page 10: RockStor -  A Cloud Object System based on Hadoop

RockStor基本术语和概念

User

Bucket1 Bucket2 Bucket3 Bucket4

Object Object Object Object Object

Object Object Object Object Object

Rock&

Chunks

Terminology

User 用户,即RockStor的使用者,User可以在RockStor上创建Bucket,然后在Bucket中存取Pebble。

Bucket Pebble的容器,Bucket与User是多对一的关系,Bucket只能由User删除。

Pebble(Object) RockStor中的基本存储对象(Object),对User提供的最小存储单元,Pebble必须存放在Bucket中。

Chunk Pebble实体数据的数据块,是Rock的组成单元,一个Pebble视其大小,可以有1个或多个Chunk组成。

Rock 用来存储Pebble的实体数据块的容器,每个Rock对应分布式文件系统上一个文件,每个Rock文件的大小根据配置有一个较大的上限,该文件用来存储大量的Chunk数据。

Garbages 被删除或者未完成写操作的Chunk的管理容器。

Page 11: RockStor -  A Cloud Object System based on Hadoop

系统架构和实现

第二部分:

Page 12: RockStor -  A Cloud Object System based on Hadoop

系统逻辑架构

• 物理存储层

• 数据分布层

• 元数据层

• 服务接口层

• 用户管理和AAA

• 系统管理和工具

• 开发环境SDK

物理存储层 (Storage)

数据分布层 (Data Distribution)

元数据层 (Metadata)

服务接口层 (Access) 系统管理和工具 (M

anagement)

用户管理(U

ser) & AAA

开发环境 (SDK for Developers)

对象存储系统在逻辑上由物理存储层、数据分布层、元数据层、服务接口层以及整体的系统管理构成。同时,为了对外提供服务,还提供基于用户管理的AAA(认证Authentication,授权Authorization,记帐Accounting)功能。除此之外,为了系统展示和管理方便,还提供方便

的管理工具等。基于分布式存储平台所提供的服务接口,提供方便开发者开发的SDK (Software Development Kit)。

Page 13: RockStor -  A Cloud Object System based on Hadoop

系统实现总体架构

• 提供完整的云对象存储平台系统和云对象存储服务能力。该系统和服务能力可以用于构建一个较为完整的类似Amazon S3的云

对象存储系统和服务(例如针对Internet提供共有

云存储服务)。同时,也可以在企业内部私网中对企业内部应用提供存储服务。

RockServer RockServer RockServer RockServer

RockStor Service Load Balancers(访问请求负载均衡器,多点部署,LVS)

RockMaster

RESTful API(Internal)

AAA, CAS

RESTful API (Cloud Service)

分布式存储系统集群 Hadoop

(存储和管理Rock文件)

分布式数据库集群 HBase

(存储和管理元数据)

Management Console

分布式云对象存储系统

SDK (Java) for Developers

Page 14: RockStor -  A Cloud Object System based on Hadoop

主要模块

• 分布式存储系统集群和分布式数据库集 – 作为数据分布式存储的基础,可以使得RockStor在存储层面实现强大和灵活的分布式,从而实现海量存储和

灵活扩展。 – 倾向于使用和定制HDFS和NoSQL/HBase等开源软件。

• 分布式实现的RockServer集群 – 用于接收业务请求,实现了云对象存储服务的业务流程和逻辑,并实现数据块的组织。 – 分布式存储系统集群、分布式数据库集群和RockServer集群可以共用同一物理服务器集群。

• RockMaster – 负载很轻,主要实现一些RockServer集群管理和垃圾清理服务调度工作。

• AAA和CAS服务器 – 实现用户管理数据库和安全认证功能。

• Management Console – 为用户提供一个通过Web浏览器管理自己的存储系统的窗口。

• REST API接口 – 提供类似Amazon S3的REST API接口。

• SDK for Java – 提供了基于Java语言的SDK包,方便开发者应用编程。

Page 15: RockStor -  A Cloud Object System based on Hadoop

系统分层逻辑

• 存储和分布式系统支撑 – 为RockStor提供分布式集群系统支撑架构,如集群节点管理、集群通讯、故障检测、负载均衡等。同时提供

可扩展的持久化存储服务,包括分布式文件系统DFS和分布式数据库系统DDB。我们采用HDFS和NoSQL/HBase。

• Storage Layout – RockStor存储逻辑实现层。该层实现了如何存储和管理用户上载的对象数据和元数据。

• Web Interface

– RockStor的Web服务访问层。用户可通过REST API,通过互联网访问RockStor,进行数据存取。系统还提供了Management Console服务器,为用户提供直观的浏览器访问页面。AAA/CAS提供用户管理和安全认证服务。

ZooKeeperDFS

分布式文件系统

DDB

分布式数据库MapReduce

存储和分布式

系统支撑层

StorageModule

StorageModule

RESTfulAPI

RESTfulAPI

Service Logics Service Logics

RockServer RockServer

AAA, CAS Management Console

RockMasterStorage Layout

Web Interface

Page 16: RockStor -  A Cloud Object System based on Hadoop

数据管理模型

用户User-1

对象集Bucket-12

对象集Bucket-11

对象Object-111

对象Object-112

对象Object-113

对象Object-121

对象Object-122

用户User-2

对象存储系统

Page 17: RockStor -  A Cloud Object System based on Hadoop

数据存储引擎

存储在哪里? HDFS是可靠稳定的数据存储容器,具有高可靠性高可扩展性等优点,适合大数据写入和读取,对于大规模数据中心的部署亦提供了高可扩展性的保证。

有什么问题? HDFS并不完美,可能并不能直接使用HDFS作为底层存储引擎 1. HDFS的设计初衷只是面向大文件的文件系统(Part of Nutch); 2. 单一的NameNode设计使得整个系统的NameSpace非常有限; 3. 这不是一个实时的系统; 4. …… 如何解决? HDFS为数据的稳定可靠提供了保证,我们可以通过应用层实现封装,实现对大规模小文件的读写操作。 HDFS是RockStor的数据存储引擎。

Page 18: RockStor -  A Cloud Object System based on Hadoop

存储模型设计

Bucket

Pebble

Pebble

Pebble

Pebble

Part

Part

Part

Rock

Chunk

Chunk

Chunk

Rock

Chunk

Chunk

Chunk

Rock

Chunk

Chunk

Chunk

Logic PhysicalDFS

Part

Chunk

Chunk

Chunk

RockStor涉及到的存储单元有Bucket、Pebble、Rock、Part以及Chunk。存储单元间的逻辑关系如上图所示。Bucket、Pebble和Part是逻辑存储单元,没有实体数据文件。每个Bucket可容纳指定容量的Pebble。Pebble由一个或多个Part组成。Part由一个或多个Chunk组成。Rock和Chunk是物理存储单元,存储Pebble的实体数据。Rock对应DFS上的内部文件,Chunk是Rock文件中的组成部分。所有存储单元的元数据信息都保存在DDB中。

• Bucket = 对象集

• Pebble = Object = 对象

• Chunk = 数据块

• Rock = 数据块的存储容器

• Part = 从编程客户端角度的数据上传分块

Page 19: RockStor -  A Cloud Object System based on Hadoop

元数据存储 存储在哪里? 相对于数据存储来讲,对象的元数据更加结构化。 HBase提供了稳定可靠的Key-Value存储机制,并能够根据用户创建的Schema提供丰富的上层表示,是可靠的结构化数据存储引擎。 HBase的顺序写入性能和随机读取性能可以满足元数据读取的需求,并能够长期可靠的提供服务。 HBase有什么不足? HBase底层采用Key-Value存储,虽然提供了数据表的Schema描述,但其本身无法提供RDMBS的所有功能。 HBase和HDFS一样,存在单节点失效的问题(HMaster是单节点)。 怎么处理? 在相当一部分应用中,DBMS并不需要非常强的关系型数据库的特性,就像RockStor一样,读写性能是我们关注的关键。 HBase是RockStor的元数据存储引擎。

Page 20: RockStor -  A Cloud Object System based on Hadoop

元数据模型 UserRowKey UserIdCFBucketName1BucketName2……

BucketRowKey BucketIdCFOwnerEtagAcl

PebbleRowKey PebbleIdCFOwnerPartPrefixPartNumSizeEtagMimeMeta

RockRowKey RockIdCF MCreateTimeVersionRetireGarbageBytesDeletedBytesCF GGarbage Offset 1Garbage Offset 2……

ChunkRowKey ChunkIdCFRockId

ChunkId

=MD5(“testbucket/pic/

1.jpg”+0+(maxLong-

version))

BucketId对应PebbleId是天然

的映射,如:

Bucket=testBucket

PebbleId=testbucket/pic/

1.jpg

ChunkOffsetChunkSize

Page 21: RockStor -  A Cloud Object System based on Hadoop

基于SEDA+Reactor+FSM 技术的软件设计

Jetty

Servlet

Container

Jetty Continuation Queue

DDB Interface DFS Interface

Zookeeper

Interface

Platform Interface

MapReduce

Interface

System Monitor

JMX

……

Request

Dispatcher

Meta

Reader

Meta

Writer

Rock Data

Reader

Rock Data

Writer

RockServer

RESTFul

API ReactorPool

HTTP

Response

Dispatcher

HTTP Data

Reader

HTTP Data

Writer

Time

Out

• SEDA(Staged Event-Driven Architecture)

框架是为了支持高并发的操作。采用基于事件驱动和线程驱动的混合并发模式。核心思想是将服务器的处理划分为各个Stage,利用queue链接起来形成一个pipeline的处理链;在Stage中

利用控制器进行资源的调控,资源的调度依据运行时的状态监视的数据来进行,从而形成一种反应控制的机制。通过queue和每个stage的线程池来分担

高并发请求并保持吞吐量和响应时间的平衡。

• Reactor是一种事件消息驱动的异步通讯和该并发处理模型。

• FSM (Finite State Machine)即有限状态机,途中的每个Stage内部以FSM的方式实现。

Page 22: RockStor -  A Cloud Object System based on Hadoop

实现流程示例:GetObject ReqDispatch RockDataReader HttpDataWriterMetaReader RespDispatchJetty HTTP Message

GetObject

GetObject

生成GetObjectTask

响应用户的REST消息 生成Task在不同

的状态间切换,每个状态会有不同的Reactor进行处理

连续从Rock中读取数据,并写入HTTP Response

读取元数据找到对应的Rock和Chunk 返回操作成功

Meta

Reader

Req Dispatch

Response

Dispatch

Invalid Req

Send Rsp

Rock Data

Reader

Valid Req HTTP Data

Writer

Read OK

More Data

No More Data

/Write Failed

Read Failed

Page 23: RockStor -  A Cloud Object System based on Hadoop

实现流程示例:GetObject ReqDispatch RockDataReader HttpDataWriterMetaReader RespDispatchJetty HTTP Message

GetObject

GetObject

生成GetObjectTask

响应用户的REST消息 生成Task在不同

的状态间切换,每个状态会有不同的Reactor进行处理

连续从Rock中读取数据,并写入HTTP Response

读取元数据找到对应的Rock和Chunk 返回操作成功

Meta

Reader

Req Dispatch

Response

Dispatch

Invalid Req

Send Rsp

Rock Data

Reader

Valid Req HTTP Data

Writer

Read OK

More Data

No More Data

/Write Failed

Read Failed

Page 24: RockStor -  A Cloud Object System based on Hadoop

RESTful API

• RockStor系统提供的API和Amazon AWS S3类似。如下图。

Page 25: RockStor -  A Cloud Object System based on Hadoop

主要业务流程和系统功能

第四部分:

Page 26: RockStor -  A Cloud Object System based on Hadoop

主要业务流程

• 用户认证

– NoAuth

– SimpleAuth

• 垃圾回收(后台维护)

注册用户

登录

创建Access Key对(Sign Up)

创建对象集(Create Bucket)

添加对象(Put an Object to

a Bucket)

观察对象(List Objects

from a Bucket)

获取对象(Get an Object from a Bucket)

删除对象(Delete an

Object from a Bucket)

删除对象集(Delete a Bucket)

• 业务操作 – Bucket/对象集

• Put/Get/Delete Bucket • Put/Get/Delete Bucket ACL

– Pebble/Object/对象 • Put/Get/Delete Pebble • Put/Get/Delete Pebble ACL • Put/Get/Delete Pebble Attribute • Get MultiPart Uploads • Copy • Move • …

– 限于篇幅:详见设计文档的业务操作和流程列表!

Page 27: RockStor -  A Cloud Object System based on Hadoop

基于公钥+密钥的账户认证机制

• RockStor采用类似Amazon S3的公钥(Access Key)和密钥(Secret Access Key)的方式实现用户认证,每个注册用户需创建自己的Access Key和Secret Access Key对,才能使用RockStor的REST API访问RockStor提供的云存储服务。Access Key和Secret Access Key对存储在AAA服务起的用户数据库中。其中Access Key是可以公开在消息中传递的,而用户必须对Secret Access Key保密(就像密码),以防泄漏。

• 每个REST API请求的消息头中都必须携带Authorization字段,其中包含Access Ke和用Secret Access Key对消息头字符串加密编码过的数字签名(signature)。

• 在RockServer收到请求,开始处理业务流程之前,RockServer需要根据REST请求消息头中的Authorization得到用户认证请求信息。

• RockServer的认证模块可以在配置文件中配置,目前支持NoAuth和SimpleAuth。

Page 28: RockStor -  A Cloud Object System based on Hadoop

基于CAS的用户管理和登录技术

RockStor采用CAS实现集中登录认证支撑。CAS旨在为 Web 应用系统提供一种可靠的单点登录方法。从结构上看,CAS 包含两个部分: CAS Server 和 CAS Client。CAS Server 需要独立部署,主要负责对用户的认证工作;CAS Client 负责处理对客户端受

保护资源的访问请求,需要登录时,重定向到 CAS Server。 http://www.jasig.org/cas

Page 29: RockStor -  A Cloud Object System based on Hadoop

Management Console

• 和Amazon AWS S3的AWS Management Console类似,RockStor提供一个辅助的Management Console供用户管理自己的云存储系统和其中的对象数据。

用户名创建Bucket 新建目录 上传对象 刷新列表 查看属性 操作记录

右键菜单

对象列表对象集列表

对象基本属性描述点击进入详细属性描述,包括对象下载地址

点击进入ACL权限管理

Page 30: RockStor -  A Cloud Object System based on Hadoop

SDK for Java RockStor为用户提供开发SDK,Client以jar形式提供,一般命名方式为: bigdata-rockstor-{version}-client.jar Package名为: com.rockstor.client 举例如下:

Page 31: RockStor -  A Cloud Object System based on Hadoop

分布式集群系统管理

基于Web的集群管理监控 基于配置文件和脚本命令的系统维护管理工具

Page 32: RockStor -  A Cloud Object System based on Hadoop

性能评估

第五部分:

Page 33: RockStor -  A Cloud Object System based on Hadoop

测试环境

• 硬件 – 8个服务器节点(两种服务器型号)

• 4个节点 – DELL PowerEdge R710 – CPU: Intel(R) Xeon(R) CPU E5520 @ 2.27GHz, cache

size=8192 KB – Core: 2x 4core CPU, HyperThread, => 16 cores – RAM: 16GB – Hard Disk: 2x 1TB SATA 7.2k rpm, RAID0

• 4个节点 – DELL PowerEdge 2970 – CPU: Quad-Core AMD Opteron (tm) Processor 2378, cache

size=512 KB – Core: 2x 4core CPU, => 8 cores – RAM: 16GB – Hard Disk: 2x 1TB STAT 7.2k rpm, RAID0

• 总配置 – 8 nodes, 104 cores, 128GB RAM, 16(16TB) Hard Disks

– 网络

• 单个1Gbps交换机.

• 软件 – 支撑软件

• Linux: RedHat EL 5.3, Kernel=2.6.18-128.el5 • File System: Ext3 • JDK: Sun Java 1.6.0_12-b04

– RockStor

• bigdata-rockstor-1.0.2-bin.tar.gz

• RockStor集群部署 – 1个Master节点

• 分布式存储管理的Master和RockMaster, CAS/AAA服务复用一个节点

– 7个数据存储/RockServer节点 • 数据存储、元数据存储、RockServer服务复用7个节点

– 数据冗余备份:3份

• 并行测试客户端 – 7个物理节点 – 每个节点64线程并发

Page 34: RockStor -  A Cloud Object System based on Hadoop

性能指标说明

• 吞吐率(Throughput)

– tThrou : Total Throughput (operation count) (总体吞吐率)

– dThrou : Delta Throughput (operation count) (瞬时吞吐率)

• 响应时间(Latency)

– dMaxLat : Delta Maximum Latency (ms) (瞬时最大延迟)

– dMinLat : Delta Minimum Latency (ms) (瞬时最小延迟)

– delayRatio: 响应时间概率分布

• Total

– 指的是从Benchmark开始到结束

• Delta

– 指的是一个统计周期内(测试用的是2分钟的统计周期)

• Benchmark程序 – 并行压力测试程序。

Page 35: RockStor -  A Cloud Object System based on Hadoop

写操作性能评估

Object Size (对象大小)

8KB 16KB 64KB

Start time 2011-09-22 09:34:00 2011-09-21 15:36:00 2011-09-23 09:40:00

Stop time 2011-09-22 14:30:00 2011-09-21 19:00:00 2011-09-23 13:08:00

Total Data size(GB) 1024.023 1024.023 1024.023

Total operations count

134220800 67110400 16777600

Total used time(hour)

4.93 3.4 3.467

Total throughput/sec

7084.320 5429.644 1331.556

Total MB/sec 58.04 88.96 87.26

Total average latency(us)

132.230 184.174 751.001

Total miss count 0 0 0

Total err count 0 0 0

Page 36: RockStor -  A Cloud Object System based on Hadoop

写操作吞吐率(Throughput)性能分析 (以16KB大小对象为例)

0

1000

2000

3000

4000

5000

6000

7000

13

05

96

33

60

00

0

13

05

96

36

00

00

0

13

05

96

38

40

00

0

13

05

96

40

80

00

0

13

05

96

43

20

00

0

13

05

96

45

60

00

0

13

05

96

48

00

00

0

13

05

96

50

40

00

0

13

05

96

52

80

00

0

13

05

96

55

20

00

0

13

05

96

57

60

00

0

13

05

96

60

00

00

0

13

05

96

62

40

00

0

13

05

96

64

80

00

0

13

05

96

67

20

00

0

13

05

96

69

60

00

0

13

05

96

72

00

00

0

13

05

96

74

40

00

0

13

05

96

76

80

00

0

13

05

96

79

20

00

0

13

05

96

81

60

00

0

13

05

96

84

00

00

0

13

05

96

86

40

00

0

13

05

96

88

80

00

0

13

05

96

91

20

00

0

13

05

96

93

60

00

0

13

05

96

96

00

00

0

13

05

96

98

40

00

0

13

05

97

00

80

00

0

13

05

97

03

20

00

0

13

05

97

05

60

00

0

13

05

97

08

00

00

0

13

05

97

10

40

00

0

13

05

97

12

80

00

0

13

05

97

15

20

00

0

13

05

97

17

60

00

0

13

05

97

20

00

00

0

13

05

97

22

40

00

0

13

05

97

24

80

00

0

13

05

97

27

20

00

0

13

05

97

29

60

00

0

13

05

97

32

00

00

0

13

05

97

34

40

00

0

13

05

97

36

80

00

0

13

05

97

39

20

00

0

13

05

97

41

60

00

0

13

05

97

44

00

00

0

13

05

97

46

40

00

0

13

05

97

48

80

00

0

13

05

97

51

20

00

0

13

05

97

53

60

00

0

13

05

97

56

00

00

0

dThrou(ops/sec)

tThrou(ops/sec)

吞吐率保持平稳,尾部下降是并行的Benchmark客户端不同时结束造成的压力下降。

Page 37: RockStor -  A Cloud Object System based on Hadoop

写操作响应时间(Latency)性能分析 (以16KB大小对象为例)

0100002000030000400005000060000

130596336…

130596360…

130596384…

130596408…

130596432…

130596456…

130596480…

130596504…

130596528…

130596552…

130596576…

130596600…

130596624…

130596648…

130596672…

130596696…

130596720…

130596744…

130596768…

130596792…

130596816…

130596840…

130596864…

130596888…

130596912…

130596936…

130596960…

130596984…

130597008…

130597032…

130597056…

130597080…

130597104…

130597128…

130597152…

130597176…

130597200…

130597224…

130597248…

130597272…

130597296…

130597320…

130597344…

130597368…

130597392…

130597416…

130597440…

130597464…

130597488…

130597512…

130597536…

130597560…

dMaxLat(ms) dMaxLat(ms)

0

50

100

150

200

250

300

350

400

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24

delayRatio delayRatio(‰)

对该曲线做数学积分处理,95%以上的操作在70ms以内。

X轴单位为10ms

Page 38: RockStor -  A Cloud Object System based on Hadoop

读操作性能评估

Object Size (对象大小)

8KB 16KB 64KB

Start time 2011-09-22 14:30:00 2011-09-21 19:02:00 2011-09-23 13:28:00

Stop time 2011-09-23 07:46:00 2011-09-22 00:24:00 2011-09-23 15:56:00

Total Data size(GB) 1024.023 1024.023 1024.023

Total operations count

134220800 67110400 16777600

Total used time(hour)

17.267 4.933 2.467

Total throughput/sec

2155.119 3452.181 1864.178

Total MB/sec 17.65 56.56 122.17

Total average latency(us)

464.012 289.672 536.429

Total miss count 0 0 0

Total err count 0 0 0

Page 39: RockStor -  A Cloud Object System based on Hadoop

读操作吞吐率(Throughput)性能分析 (以64KB大小对象为例)

吞吐率保持基本平稳

Page 40: RockStor -  A Cloud Object System based on Hadoop

读操作响应时间(Latency)性能分析 (以64KB大小对象为例)

Page 41: RockStor -  A Cloud Object System based on Hadoop

功能完善和应用开发

第六部分:

Page 42: RockStor -  A Cloud Object System based on Hadoop

新功能和系统完善 (系统级管理功能)

• 只对系统管理员开放 – admin用户

• 系统级资源统计 – 用户/租户数 – Bucket数 – Object数 – 已用系统存储空间 – 总系统存储空间

• 用户/租户空间配额管理 – 查看配额 – 设置/修改配额

• 用户/租户使用情况统计 – Bucket数 – Object数 – 已用存储空间 – 操作次数

• 系统管理API – RockStorAdmin(address,

adminAccessKey, adminSecurityKey) – getSystemSts() – getUserSts(userId) – getUserList() – setUserQuota()

Page 43: RockStor -  A Cloud Object System based on Hadoop

新功能和系统完善 (用户/租户级管理功能)

• 用户/租户级统计

– Bucket数

– Object数

– 已用存储空间

– 存储空间配额

– 操作次数

• 用户/租户级统计API

– getUserSts()

Page 44: RockStor -  A Cloud Object System based on Hadoop

系统运行维护

• 分布式存储资源状态

– 存储资源使用情况

– 分布式存储集群状态

• 集群监控 – 节点状态

– 负载监控

– 性能指标

Page 45: RockStor -  A Cloud Object System based on Hadoop

应用与RockStor的集成框架 云应用服务的用户

RockStor对象云存储服务

云应用服务

RE

ST

AP

I

RockStor提供统一标准的云存储接口,云应用可以通过该接口存储、读取、或操作这些数据对象。

RockStor是一个弹性的对象云存储系统,可类比Amazon AWS S3。为教育云提供视频、音频、图片、文档等数据的存储服务。

云应用即是RockStor云存储的用户。

云应用作为RockStor

对象云存储的用户,通过RockStor提供的

统一标准的接口存储、读取和操作数据对象,界面和逻辑关系清晰简洁。

Page 46: RockStor -  A Cloud Object System based on Hadoop

RockStor提供的接口

RockStor云存储服务

App-1 App-2

SDK

RESTREST

注册、登录、Console

RockStor作为一个对象云存储服务整体对外

提供访问地址(例如统一域名),云应用不必关心其内部分布式架构。

• 人机操作接口 – Web Portal

– Web Console

• 开发接口 – REST API

– SDK(Java, C++, Python, PHP等)

Page 47: RockStor -  A Cloud Object System based on Hadoop

实验室Demo环境

• 系统中已经注册5个用户方便测试 – 测试用户

[email protected] / password • [email protected] / password • [email protected] / password • [email protected] / password • [email protected] / password

– 完整的注册流程需要邮件确认 • 须能访问外网或部署内部邮件系统

• 相关Web URL – 用户注册和登录界面:http://192.168.1.3:18080

或https://192.168.1.3:18443 – 用户Console界面:http://192.168.1.3:8080

• 相关SDK编程URL

– REST API 地址: 192.168.1.3:48080 – Object REST URL: 见用使用手册API中描述的格式。

• 编程例子程序代码和运行环境 – 安装位置:192.168.1.3的/home/tester/test-api – 编译:

• javac -cp lib/bigdata-rockstor-0.2.3-client.jar com/rockstor/clientsample/Sample.java

– 运行: • java -cp .:lib/bigdata-rockstor-0.2.3-client.jar

com.rockstor.clientsample.Sample

– 编程样例代码文件: • com/rockstor/clientsample/Sample.java

• 注意因为需要用户认证,编程前须先登录用户信息界面查看,没有凭证的须先创建凭证。

Page 48: RockStor -  A Cloud Object System based on Hadoop

SDK编程样例

• 程序片段开头

Page 49: RockStor -  A Cloud Object System based on Hadoop

Thank You!