基于Hadoop+Openstack云存储的研究

摘 要:本文简要介绍了云存储的概念以及云存储相关技术,分析了Hadoop与OpenStack各自的优缺点,最后提出了Hadoop与OpenStack云存储整合的两种方式,为今后云存储建设开拓了思路。

关键词:Hadoop;OpenStack;云计算;云存储;Sahara

随着信息时代的快速发展,各种信息需求越来越大,数据量也随之呈几何级快速增长,同时对数据的安全性、可靠性、扩展性等提出了新的要求,传统的存储模式越来越无法满足如今复杂多变的网络环境,云存储集高可靠性、高效率、高数据安全性以及更强的适应性为一体,赢得了广大用户的青睐。
  1 云存储概述
  云存储是在云计算(cloud computing)概念上延伸和发展出来的一个新的概念。它利用网格技术、集群技术和分布式文件系统等技术,将网络中大量各种不同类型的存储设备组织起来协同工作,对外提供统一的数据存储服务和业务访问功能。云存储是一个以数据存储和管理为核心的云计算系统,当云计算系统处理海量数据时,就需要配置大量存储设备,这时云计算系统就转化为一个云存储系统。
  2 云存储模式与传统存储模式比较
  相对传统存储模式,云存储模式具有以下特点:第一,从功能需求来看,云存储模式面向多种类型的网络在线存储服务,而传统存储模式则面向高性能计算、事务处理等应用;第二,从性能需求来看,云存储模式具有高可靠性、高效率、高数据安全性,在网络环境复杂多变,用户规模庞大、服务范围广的业务中具有更强的适应性。第三,从数据管理来看,云存储模式不仅支持传统文件的访问方式,而且还支持海量数据的管理并提供公共服务支撑功能,以方便云存储系统后台数据的维护。

3 云存储相关技术
  3.1 Hadoop架构
  Hadoop是Apache Lucene下的一个开源分布式计算框架,它是Nutch项目的一部分,专门负责对大量不同类型的数据(结构化、非结构化等)进行分布式处理。
  Hadoop框架由许多元素组成,其中最核心的设计就是MapReduce和HDFS。
  MapReduce是一个大型分布式数据处理模型,它在数据处理过程中发挥着重要的作用,被誉为大数据处理背后最具影响力的“发动机”。MapReduce将一个任务分解多个任务进行处理,然后将这些任务处理的结果进行分析汇总得出最后的结果。
  HDFS(Hadoop Distributed File System)是Hadoop分布式文件系统的缩写。HDFS有着高容错性的特点,可以在低廉的硬件上进行部署。它为访问有着超大数据集的应用程序数据时提供高传输率,而且HDFS允许以流的形式访问文件系统中的数据。在处理大数据的过程中,HDFS可为Hadoop集群发生故障错误时提供数据冗余功能,整个计算过程不会因为某个服务器出现故障而终止。另外,HDFS支持的数据存储格式并没有太多的限制,结构化以及非结构化的数据均可。
  在实际过程中,HDFS与MapReduce往往是结合在一起的,这样能最大发挥它们各自的优势。
  3.2 OpenStack
  OpenStack是一整套开源软件项目的综合,它用来建设和管理公共云以及私有云,它简化了云的部署过程并为其带来良好的可扩展性。
  OpenStack由一组开源项目构成,他们分别是Nova、Swift、Glance。
  Nova(计算服务):是一套云组织的控制器,它为部署云提供工具,包括管理网络、运行实例以及控制用户和其它项目对云的访问。
  Swift(存储服务):是一个可扩展的对象存储系统。它通过内置的冗余及容错机制在大规模可扩展系统中实现对象存储。Swift支持多种应用,比如复制和存档数据,图像或视频服务,存储次级静态数据,开发数据存储整合的新应用,存储容量难以估计的数据,为Web应用创建基于云的弹性存储。因为没有中心单元或者主控结点,swift提供了更强的扩展性、冗余和持久性。
  Glance(镜像服务):是一个虚拟机镜像的存储、查询和检索系统,服务包括的RESTfulAPI允许用户通过HTTP请求查询VM镜像元数据,以及检索实际的镜像。

4 HDFS和Swift整合
  4.1 HDFS和Swift优缺点
  HDFS虽然有着许多优点,但也存在着一些缺点。首先,HDFS是用来处理大吞吐量的离线数据,它需要牺牲一定的延时为代价,因此它不太适合哪些对延时有较高要求的应用程序。其次,HDFS被设计用来处理大数据文件,它通常对大文件进行优化,而在处理大量小文件时反而会使其耗费更多内存,从而影响数据处理的效率。此外,HDFS中一次只能写入一个文件,不支持多用户并发写入。相反,Swift用来存储多个任意大小文件的数据,而且支持对文件多用户并发写入,但Swift没有目录结构,不支持嵌套,也不支持文件的重写,只能新建,不支持服务器上的数据查询和处理,而且当容器的对象超过100万个时,其性能就会急剧下降。因此,如果能将HDFS和Swift存储进行整合,可极大提高云存储的数据处理效率,降低硬件成本。
  4.2 HDFS和Swift整合方式
  由于HDFS采用Java编写,而Swift采用Python编写,因此它们之间互不兼容。通常情况下,要想使用Hadoop对Swift中存储的大量数据进行处理,一般先将Swift中的数据导出到中间服务器,然后再将这些数据导入到HDFS中,最后才能通过MapReduce技术对这些数据进行分布式处理。这种方法在处理少量数据时有一定的可用性,但在处理大量数据时,导出和导入数据的过程需要耗费大量的时间,而且还会耗费更多额外的存储。   为此,我们可以设计一个Swift对象适配器(Adapter),用来进行接口适配,将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都是透明的。

通过Swift适配器,将高可用的Swift对象存储作为Hadoop的底层存储系统,使得Hadoop在存储层面具有了高可用性。把Swift适配器部署到已有的Hadoop集群中是简单快捷的。原本用来分析存储在HDFS中的数据的MapReduce应用程序,也无需修改即可分析存储在Swift中的数据。
  另一种更为有效的方法就是采用Sahara方案。Sahara是在2013年由全球三大公司Hortonworks、Mirantis、红帽公司联合发起的,共同致力于在OpenStack上实现Apache Hadoop的一个项目,它旨在为OpenStack用户提供一种简单、快捷地部署以及管理Hadoop集群的方案,加快Hadoop在OpenStack上的开发和部署进程。
  Sahara主要由以下五个部分组成:
  Horizon:为Sahara提供图形化的管理界面。
  Keystone:提供用户身份认证功能,为不同的OpenStack用户分配特定的使用权限。
  Nova:为Hadoop集群提供虚拟机配置功能。
  Glance:用来储存安装有OS和Hadoop的虚拟机镜像。
  Swift:可以作为需要进行Hadoop作业的预存储。

通过Sahara,用户只需要提供一些基本的信息(比如Hadoop版本、集群拓扑、节点硬件情况等)就可在几分钟内快速建立起集群,而且还可以根据用户需求随意对集群进行扩展(增加或者删除工作节点),有效降低硬件成本,极大的提高计算资源的利用率。
  5 结束语
  虽然Hadoop和OpenStack的存储技术各有自己的优缺点,但OpenStack和Hadoop的融合,不仅能充分利用对方的优点,而且还能有效的规避对方的缺点,既能最大限度提高了存储资源利用率,又能大大降低大数据处理的准入门槛。
参与1

1同行回答

wwwdpwwwdp项目经理西安未来国际信息股份有限公司
Hadoop和OpenStack融合的最中目的是尽可能的提高客户的存储资源利用率,降低设备内部数据处理的从多请求显示全部
Hadoop和OpenStack融合的最中目的是尽可能的提高客户的存储资源利用率,降低设备内部数据处理的从多请求收起
政府机关 · 2015-03-19
浏览1714

提问者

jiehou66
软件架构设计师南京邵红杰网络技术
擅长领域: 服务器云计算虚拟化

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2014-10-22
  • 关注会员:0 人
  • 问题浏览:4397
  • 最近回答:2015-03-19
  • X社区推广