基于Hadoop和Openstack云存储的研究(HDFS和Swift对比)

        前几天在知网上翻了好多论文,昨天开始一篇一篇地看,由于有的论文时间比较早,甚至是3年前的,所以很多部分只是对当前的技术有一个展望和综述,不过这样对我这种初学者也有好处,今天看得这篇文章是李金亮,翟永刚,汤向东发表的一篇题为《基于Hadoop和Openstack云存储的研究》的论文,以下为一些记录和感想。


1.HDFS 和Swift 优缺点

        HDFS 虽然有着许多优点,但也存在着一些缺点。

        首先,HDFS 是用来处理大吞吐量的离线数据,它需要牺牲一定的延时为代价,因此它不太适合哪些对延时有较高要求的应用程序。

        其次,HDFS 被设计用来处理大数据文件,它通常对大文件进行优化,而在处理大量小文件时反而会使其耗费更多内存,从而影响数据处理的效率。此外,HDFS 中一次只能写入一个文件,不支持多用户并发写入。

        相反,Swift 用来存储多个任意大小文件的数据,而且支持对文件多用户并发写入,但Swift 没有目录结构,不支持嵌套,也不支持文件的重写,只能新建,不支持服务器上的数据查询和处理,而且当容器的对象超过100 万个时,其性能就会急剧下降。因此,如果能将HDFS 和Swift 存储进行整合,可极大提高云存储的数据处理效率,降低硬件成本。


2.HDFS 和Swift 整合方式

        由于HDFS 采用Java 编写,而Swift 采用Python 编写,因此它们之间互不兼容。通常情况下,要想使用Hadoop对Swift 中存储的大量数据进行处理,一般先将Swift 中的数据导出到中间服务器,然后再将这些数据导入到HDFS中,最后才能通过MapReduce 技术对这些数据进行分布式处理。这种方法在处理少量数据时有一定的可用性,但在处理大量数据时,导出和导入数据的过程需要耗费大量的时间,而且还会耗费更多额外的存储。    

        为此,我们可以设计一个Swift 对象适配器(Adapter),用来进行接口适配,将Swift 中类的接口转变成Hadoop 所希望的另一个接口,使得原本两个因为接口而不兼容的类能够在一起工作。用来进行接口适配,将Swift 中类的接口转变成Hadoop 所希望的另一个接口,使得原本两个因为接口而不兼容的类能够在一起工作。

        Swift 虽然采用Python 语言编写,但是也提供了多种编程语言的客户端API,其中Swift 的Java 客户端API 是一个名叫Java-cloudfiles 的开源项目,它支持对Swift 存储的各种操作。

        Swift 适配器的作用就是调用Swift 的Java 客户端API,实现了对Swift 存储的操作,Hadoop MapReduce API调用Hadoop FileSystem API,对于MapReduce 来说,底层的HDFS 和Swift 都是透明的。适配器所在层次结构如图1 所示。



通过Swift 适配器,将高可用的Swift 对象存储作为Hadoop 的底层存储系统,使得Hadoop 在存储层面具有了高可用性。把Swift 适配器部署到已有的Hadoop 集群中是简单快捷的。原本用来分析存储在HDFS 中的数据的MapReduce 应用程序,也无需修改即可分析存储在Swift中的数据。


感谢原作者,摘录部分如侵则删。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值