云计算促进了大数据技术的快速实现和发展,大数据是一种高速跑车,云计算是一条公路,两者相互依存,相辅相成。从技术角度看,大数据应用需要大量的存储设备和计算资源,并且会频繁地读写存储的数据。云计算采用分布式计算和虚拟资源管理技术。通过网络,将分布的信通技术资源集中起来,形成用户共享的资源库,以动态、可衡量的方式提供服务,具有成本低的优点。为了满足用户访问云平台、同步云数据和获取云服务的需求,随时随地都可以满足大数据应用的需求,促进大数据技术的发展。从业务角度看,大数据应用可以有效地分析数据,挖掘新内容,提供决策支持。它具有巨大的经济和社会价值,将成为云计算时代的杀手应用,推动云计算的快速发展。
目前,在大数据的分析和处理过程中,几乎所有的关键技术都来自于开源模型。大数据最著名的开源项目是分布式计算和存储系统(Hadoop),以及大数据收集、海量文件存储、非关系数据库等领域的其他开源项目。随着云计算和大数据等新技术的兴起,开源研究与开发模式越来越被人们所接受,并逐渐成为关键技术。雅虎、IBM、微软等业界领袖积极参与大数据开源社区的开发工作。并根据开源项目的成果进行二次开发,推出自己的大数据应用产品。与封闭源代码开发模式相比,开源的优势使大量企业加入了开源生态系统。
开源可以有效降低企业部署成本,提供统一的界面和个性化的定制需求,减少企业对硬件和解决方案提供商的依赖。
开源提供了一种高效的软件生产方式,减少了企业进入大数据应用服务市场的障碍,加快了技术和服务应用的创新。
开源大数据涉及许多厂商,基于开源项目开发的大数据技术很有可能成为业界事实上的标准,业界领先企业正在积极参与开源项目。我们希望在开源大数据技术的发展方向上发挥主导作用。
大数据的许多关键技术都依赖于云计算,如下几节所述。
(一)分布式存储
大数据存储需要满足海量存储、安全存储和快速读取的要求。广泛使用的存储技术包括Google文件系统(GFS)和开放源码Hadoop分布式文件系统(HDFS)。HDFS是一个基于GFS的开源实现。
1.GFS
GFS是一个可扩展的分布式文件系统,是由Google专门为存储海量搜索数据而设计的。它支持大规模、分布式访问大量数据,并能为大量用户提供高整体性能的服务。与以前的文件系统相比,GFS的设计不仅追求性能、可扩展性、可靠性和可用性,还考虑了当前和预期应用程序负载和技术环境的影响。
能够支持高达几GB长度的大型文件;
大多数文件更新是通过添加新数据来完成的,而不是更改现有数据;
所述文件读取操作分为两类,即大量数据的流模式的读取操作和少量数据的随机模式的读取操作;
支持大量数据的连续写入操作;
有效地实现了单文件附加定义良好的多客户端并行语义;(www.xing528.com)
允许增加延迟,以换取高而稳定的带宽。
GFS体系结构由一个监督节点(Master)和大量块服务器(块服务器)组成,并被许多应用程序/客户端(App)访问,其中主服务器和块服务器通常是用于运行用户级服务进程的Linux机器。主存储三种元数据(元数据)依次是:文件和块的命名空间、文件到块的映射、块副本的位置,以及控制系统级操作,例如块租赁(租约)管理、垃圾收集、块迁移等。App通过与传统文件系统类似的统一接口执行数据读写操作。它的所有数据通信都与块服务器相关,并且只与Master交换与元数据相关的操作。GFS提供快照和记录追加操作,其中快照操作可以非常低的成本创建文件或复制目录,这允许多个客户端同时将数据追加到单个文件。应用程序和块服务器都不缓存文件数据。
2.HDFS
HDFS是Hadoop核心项目中的分布式文件系统。它的设计理念与GFS相同。HDFS部署在低成本的硬件上,具有较高的容错性、较高的吞吐量,适用于处理大型数据集。HDFS放宽了对便携式操作系统接口(POSIX)的要求,使其能够以流的形式访问文件系统中的数据。HDFS体系结构由一个Name Node和一定数量的Data Node组成。Name Node是一个中央服务器,负责管理文件系统名称空间(命名空间)和客户端对文件的访问,包括打开、关闭、重命名文件和目录。Data Node可以在HDFS体系结构中具有多个节点,通常是一个节点,并负责管理它自己的节点附带的存储内容。当文件被存储和处理时,它被处理在一个或多个块(块)中,这些块存储在Data Node集合中,Name Node确定数据块存储在哪个Data Node节点上。Data Node在Name Node命令下创建、删除和复制数据块。Name Node负责保存和管理所有HDFS元数据,以维护HDFS文件系统中有关文件和目录的信息。因此,具有4G内存的Name Node足以支持大量的文件和目录。
Google的Big Table和Amazon的Dynamo是非常成功的商业NoSQL实现。一些开源的NoSQL系统,如Hadoop的HBASE、Greenmers、Cassandra、MongoDB、CouchDB等,也得到了广泛的应用和认可。
(1)Big Table
Big Table是Google基于GFS系统设计的用于处理海量数据的非关系数据库。Big Table具有适用性广、可扩展性强、性能高、可用性高等特点。它可以可靠地处理PB级数据,并且可以部署在数千台机器上。目前,Big Table已经在60多个Google产品和项目中使用,包括Google Analytics、Google Finance、Google Maps、Google社会网络站点Orkut等。有些需要能够进行高吞吐量的批处理,另一些则需要能够及时响应用户请求,Big Table根据不同的产品需求有相应的集群配置。Big Table使用多维映射结构,可以称为键值映射(键值)。键(键)有三个维度:行键(行键)、列键(列键)和时间戳(时间戳),行键和列键是字符串数据,时间戳是64位整数数据,值(值)是字符串数据。Big Table的键值映射可以表示为“(行:字符串,列:字符串,时间:int64)->String”。行键是Big Table的第一级索引。行键可以是任意字节字符串,通常有10 GB;列键是二级索引,每行都有无限列,可以随时添加和减少,通常列家族中的列存储相同的数据类型;时间戳是第三级索引,Big Table允许根据时间戳保存多个版本的数据。当查询Big Table时,如果只给出列,则返回数据的最新版本;如果给出列时间戳,则如果时间小于或等于时间戳,则返回数据。
(2)HBase
HBASE是Hadoop项目的开源子项目。基于Hadoop文件存储体系结构,HDFS提供类似于Big Table的非结构化数据库功能。根据HBASE架构,用户可以与HMaster和HRegion Server进行通信,其中HMaster管理类操作,HRegion Server管理数据读写类操作。HBASE可以启动多个HMaster,以确保其中一个主运行通过主选举机制的管理员。HMaster的管理主要包括添加、删除和检查表的操作、HRegion Server的负载平衡等。HRegion Server是HBASE的核心模块,它可以有多个模块,主要负责响应用户的I/O请求和向HDFS文件系统读写数据。每个HRegion Server管理一系列HRegion对象,每个HRegion对应于表中的一个区域。HRegion由多个HStore组成,每个HStore对应于表中列族数据(列族)的存储。通过在一个列族中放置具有公共I/O特性的列数据,可以提高HBASE的处理效率。
(3)Dynamo
Dynamo是亚马逊的非结构化数据库平台,具有良好的可用性和可扩展性,99.9%的读写访问响应时间为300 ms。Dynamo根据分布式系统中常用的哈希算法对数据进行分割,并将其存储在不同的节点(节点)上。在读取时,Dynamo根据键值映射查找相应的节点,并采用改进的一致哈希算法。该节点对应的不再是一个确定的哈希值,而是一个哈希值的范围。如果键的哈希值在此范围内,则按环顺时针方向搜索键的哈希值。您遇到的第一个节点就是您所需要的。
DYNAMO首次提出了NRW方法,其中N表示数据复制次数,R表示读取数据的最小节点数,W表示成功写入的最小分区数,这三个数字可以灵活调整,以平衡Dynamo系统的可用性和一致性。迪纳摩公司推荐的组合是322。Dynamo还为经常出现的问题提供了一些解决方案。例如,节点的临时故障是自动切换数据,在版本控制中添加矢量时钟,使用Merkle树对数据进行索引,以及增加对绯闻通信协议的支持。
(二)并行处理技术
Map Reduce是Google提出的用于大型数据集(大于1TB)并行计算的编程模型。Map Reduce由地图(映射)和约简(简化)两个阶段组成,可用于海量数据的分割、任务分解和结果汇总,从而完成海量数据的并行处理。
Map Reduce将有R输出,每个输出对应于一个约简作业,并将其放入R分区的输出文件中。用户通常不需要合并这个R文件,而是将它作为输入交给另一个Map Reduce程序。在整个过程中,输入数据来自底层分布式文件系统(GFS),中间数据放置在本地文件系统中,最终输出数据被写入底层分布式文件系统(GFS)。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。