云存储是分布式存储技术的发展和...
云存储是分布式存储技术的发展和延续
2021-04-08
云存储是分布式存储技术的发展和延续
一.概述
云计算是一种分布式计算技术。云计算通过网络连接,把云中的一切都隐藏起来。普通用户不关心数据在哪里,不关心数据的安全性,不关心应用是否需要升级,不关心计算机病毒。所有这些任务都由云计算中心解决。普通用户需要做的是选择自己喜欢的云服务提供商,购买自己需要的服务。云计算给普通用户享受高性能计算的机会,云计算中心几乎可以提供无限的计算能力。
谷歌提出的云计算强调云的重要性,因为谷歌从来没有尽头,抛出GFS作为诱饵主动出击;微软强调“云”加“端”就是云计算,因为微软Windows一直是“端”的霸主;VMware认为虚拟化是云计算的核心技术;孙公司重温了他们多年前说的那句老话“网络就是电脑”;Adobe通过Flex抓住用户的眼球,让FlashPlayer进入云计算;此外,大量服务器托管公司称服务器租赁为云计算。云存储是从云计算概念延伸发展而来的新概念,是云存储的重要存储资源。通过集群计算、网格计算、分布式计算等功能,通过网络,不同类型的存储设备通过软件协同工作,为网络用户提供数据存储和访问功能。
二、云存储结构
云存储整合和管理云系统的存储资源,提供存储虚拟化功能,为用户提供统一的存储空间。它具有集中存储、分布式扩展、安全认证、数据加密等优点。在云存储系统中,所有存储资源对用户都是透明的,用户不需要知道存储设备的型号、接口和传输协议,也不需要建立庞大独立的数据备份系统和紧急灾难恢复系统。这些状态监控、维护、备份和紧急灾难恢复都可以在云存储系统中自动完成,已经成为云的自然组成部分。云存储的结构如图1所示。云存储结构模型由四层组成。
1.存储层
云存储设备可以是光纤通道存储设备或网络存储设备,如网络连接存储或iSCSI。云中有大量的存储设备,通常分布在不同的地方,通过广域网、互联网或专用光纤网络连接。通常需要提供统一的存储设备管理系统来实现物理存储设备的逻辑和虚拟化管理。
2.基础管理
基础管理层是云存储的核心。该层通过集群存储、分布式存储、网格存储等技术,实现多个存储设备之间的协同工作,向外界提供统一的存储访问服务。
3.应用接口层
它是由许多第三方硬件和软件供应商提供的插件层。运营单位可以根据实际业务需求,使用应用接口快速开发满足需求的应用,如云存储中的视频监控应用、视频点播应用、网络存储中的硬盘、远程数据备份应用等。
4.接入层
访问层为用户提供统一的访问登录界面。用户只能在登录后使用云存储服务。不同的云存储系统提供不同的访问类型和方式,其安全需求差异很大。用户可以根据自己的需求选择相应的服务。
三、云存储平台的设计与实现
(a)设计方案比较
GoogleGFSGoogle的数据存储和管理技术具有以下特点:基于大规模(数千到数万个节点)通用PC构建集群;集群节点同时提供存储和计算服务;基于不可靠的硬件环境,实现了一个高可靠性的集群软件系统。用于处理和生成海量数据集的分布式计算模型是高度抽象的,并且广泛用于数据密集型服务。数据管理系统不支持完整的关系模型,结构简单、轻量级。
Hadoop实现了一个分布式文件系统,称为HDFS。用户可以开发分布式程序,而不知道分布式的底层细节。充分利用集群的力量进行高速操作和存储。HDFS具有高容错性的特点,设计用于低成本硬件。而且它提供了很高的传输速率来访问应用数据,适合大数据集的应用。HDFS采用主从架构。一个命名节点和一定数量的数据节点形成一个HDFS集群。在集群中,每个节点都包含一个Datanode。一个文件被分成一个或多个块,这些块由Datanode集合存储。HDFS是用java语言开发的,这给传输存储的部署带来了极大的方便。
迪纳摩是亚马逊的键值存储平台,具有良好的可用性、可扩展性和性能:读写访问中99.9%的响应时间在300 ms以内,迪纳摩的可扩展性和可用性采用成熟的技术,数据分区采用改进的一致性哈希进行复制,数据对象的版本化用于实现一致性。采用NRW机制和分散复制同步协议来维护复制过程中更新带来的一致性问题。迪纳摩是一个完全分散的系统,几乎没有人工管理。迪纳摩根据分布式系统中常用的哈希算法对数据进行划分,并将其放在不同的节点上。在Read操作中,也是根据密钥的哈希值来搜索对应的节点。Dynamo使用的是ConsistentHashing算法,对应的节点不是某个哈希值,而是一个哈希值范围。如果密钥的哈希值落在这个范围内,就会沿着环顺时针找到,需要遇到的第一个节点。Dynamo对ConsistentHashing算法的改进是把一组机器放在环上作为节点(而不是memcached把一台机器作为节点),这组机器通过同步机制保证数据的一致性。如果一个环中的访问次数较多,可以在两个节点之间增加一个新节点来缓解压力,这样会影响其后继节点的哈希范围,需要调整数据。假设环中只有node2、node3和node4。增加一个新的node1后,原来从node2查询到的一些关键会从node1查询到,node1和node2中的数据需要调整,主要是node1从node2中提取自己的数据,所以需要选择性能压力不高的时间。迪纳摩节点中的一台机器有一个Merkletree。当两台机器不一致时,这种树形结构可以快速定位不一致的对象来恢复数据。MerkleTree也叫HashTree,把key分成几个范围,每个范围计算一个哈希值,作为叶子,然后逐层组合计算。这样,通过比较来自根的哈希值,您可以快速找到几个范围内哪些哈希值发生了变化。
SAN系统是建立在存储端的存储网络,多个存储设备组成一个存储区域网络。前端主机可以通过网络访问后端存储设备。而且和前端操作系统无关,因为它提供了块设备的访问模式。存储区域网络连接有许多选项。一种选择是使用光纤网络,它可以操作快速光纤磁盘。另一种选择是使用以太网,采用iSCSI协议,可以在普通局域网环境下运行。
由于存储区域网络中的磁盘设备没有绑定到一台主机,而是采用了非常灵活的结构,主机可以访问多个磁盘设备,从而提高了性能。存储区域网络系统和分布式文件系统,如谷歌文件系统,不是相互对立的系统,而是构建集群系统时的两种替代方案。其中,在选择SAN系统时,为了读写应用,需要为应用提供上层语义接口。这时候就需要在SAN上搭建一个文件系统。谷歌文件系统只是一个分布式文件系统,所以它可以建立在存储区域网络系统上。一般来说,SAN和分布式文件系统可以提供类似的功能。
(2)利用hadoop实现私有云存储
Hadoop作为Google的开源实现,有以下优势。可扩展性,无论是存储可扩展性还是计算可扩展性,都是Hadoop的根本设计。经济实惠,框架可以在任何普通PC上运行。可靠的分布式文件系统备份恢复机制和MapReduce任务监控保证了分布式处理的可靠性。高效:分布式文件系统中高效数据交互的实现,以及MapReduce结合LocalData处理的模式,为海量信息的高效处理做了基础准备。HDFS是用java语言开发的,所以兼容性问题很少。Hadoop的这些特点适合企业实现私有云平台。
所设计的云存储系统架构由五部分组成:网络客户端、网络操作系统、云存储服务器和云存储中心。其结构如图2所示。
1.当事人
客户端集群是云存储系统的前台系统,客户端机器只需要安装浏览器就可以满足用户的访问需求。用户通过浏览器访问云存储系统,其他服务由云存储系统在后台自动执行。
2.Web操作系统
这里的web操作系统采用了eysOS。EyeOS负责接收客户的访问请求,验证客户访问请求的有效性。EyeOS提供了大量的应用,允许用户根据自己的喜好下载使用这些应用,实现了系统的个性化配置,真正做到了“一次配置,随处使用”。EysOS还提供了用户文件的访问接口,通过该接口可以将文件存储在Hadoop云中,并对文件进行各种操作。
3.云存储服务器
云存储服务器由大量集群“云服务器”组成,为Hadoop提供一个管理节点,负责管理文件系统命名空间,控制外部客户端的访问。当然,用户的数据也存储在这里。
4.云存储中心
云存储中心由多个服务器组成Hadoop DataNodes,负责保存文件数据,实现文件的分布式存储、负载均衡和容错控制。
其实施过程主要包括:
1.创建新的Hadoop系统用户
Hadoop要求所有机器上的Hadoop部署目录都具有相同的结构,并且有一个同名的帐户,因此需要为每台机器创建一个同名的用户。在这四台机器上创建hadoop用户并加入根组,密码:hadoop,默认路径/home/hadoop/。
2.SSH设置
Hadoop需要从名称节点到数据节点的无密码SSH,所以需要设置从名称节点到其他三个数据节点的无密码公钥认证SSH。设置之后,测试名称节点和每个节点之间的SSH链接,包括这个节点。如果不需要输入密码,可以登录SSH,表示设置成功。
3.安装JDK
从sun网站下载JDK安装包,并将其安装在每台机器的根用户下。安装软件会自动将JDK安装到/usr/java/jdk1.6.0_26目录。安装后设置JDK的环境变量。考虑到JDK可能被其他系统用户使用,建议直接在/etc/profile中设置环境变量。
4.Hadoop集群配置
使用hadoop用户登录namenode,在namenode上下载hadoop-0.20.2.tar.gz,解压到/home/hadoop/目录,然后在hadoop下创建tmp文件夹,将hadoop安装路径添加到/etc/profile,修改/etc/profile文件(配置java环境变量的文件),设置HADOOP_HOME和PATH的路径使其有效。此外,HADOOP_HOME和PATH需要像namenode一样在datanode上进行修改和配置。
编辑Hadoop配置文件。Hadoop配置文件在conf目录下,包括:Hadoop-env . sh:configuration JAVA _ HOME路径;配置通用组件的属性;Hdfs-site.xml:配置Hdfs组件的属性;Mapred-site.xml:配置map-reduce组件的属性;配置masters文件并添加namenode的ip地址;配置从属文件,添加所有数据节点的ip地址等。

展开