加州大学圣迭亚哥分校 郑 然
云计算指的是我们通过网络按照自己的需求扩展性地获取资源的过程,而在这个过程中,我们将提供资源的网络称为云。网络上的资源的存储量可以说是非常大的,可以随时进行获取,满足自身的需求,然后按照使用状况进行付费,这种模式就像我们使用水电一样进行资料的使用。在近几年,因为云计算具有扩展性高、安全方便、价格低廉以及规模庞大等优点,应用的推广得到了极大的发展。
Map-Reduce技术的运用极大地提高了我们的工作效能,如我们需要找出一本电子书中某个词组的出现频率,在传统方法中,我们可能需要制作一个程序,然后将其部署到若干台计算机上,再将该书分为若干个等分,每一台计算机进行一个人的工作,虽然速度也够快,但是工作程序相对会麻烦很多,我们需要人工在计算机上进行复制,人工地将书本进行分割,最后还要进行整理。但是使用Map-Reduce的话就会简便很多,我们可以使用框架将文件集的拆分、程序的复制以及整理工作都定义好,而我们做的只是对整个任务进行定义,Map-Reduce自然会替我们完成所有工作。
该计算模型主要面向的是并行计算分布样式的计算环境,其借助了LISP以及其他相关函数语言的相关功能,将原先使用复杂的大规模集群分布计算方法分割成两个相对简明的函数阶段,即Map函数阶段与Reduce函数计算,使用两个阶段协同合作的方法来支撑云计算的计算力。Map-Reduce 的主要功能包括以下几种:
(1)数据的划分以及计算任务的调度
系统会将一个完成的作业中的整体数据分割成若干个数据块儿,每个数据块儿针对某个任务,然后自动对计算节点进行调度,以此来处理更多的数据块。
(2)数据与代码的相互定位
为了尽量减少数据通信,Map-Reduce的一个基本原则就是本地化地进行数据处理,即单一的计算节点要对其本地磁盘的数据尽可能地进行处理,这样就在一定程度上实现了代码端向数据端的转移。
(3)对系统进行优化
为了减少数据通信所造成的消耗,需要数据进入Reduce节点之前进行一定程度的合并处理。除此之外,系统还需要进行一定量的计算性能方面的优化,从多个计算任务中选取完成效率最高的完成者作为结果。
(4)计算检测与数据恢复
在使用低端商务服务器构成的Map-Reduce计算集群中,硬件方面和软件方面都会突然性出现错误,所以Map-Reduce需要能通过计算检测出错节点,并且调配新的节点,以应对出错节点的计算任务。
虽然在整个云计算系统中,单个节点失能的概率不是很大,但是因为整个集群中的节点数量十分庞大,这样就会扩大系统的失效率,在日常工作中,我们主要采取两种方法对失效的节点进行检测:
(1)PUSH
整个系统中的节点会按照一定频率向检测者发送“存活”信息,如果检测者还能收到该信息,则证明该节点仍然没有失效,但是如果在规定的周期内,节点没有发送信息,则认为该节点已经死亡,则需要采取措施加以解决。
(2)PULL
顾名思义,与PUSH法相反,由检测者对各个节点发出“询问”信息,各个节点在收到检测者发来的信息后会进行回复,如果检测者在预定的时间内没有收到该节点的信息回复,则认为该节点已经死亡。另外,网络问题异界硬件问题都会导致节点失效的现象发生。
对两种方法进行比较各有优劣,PULL方法的长处在于可以在将要进行任务分配时进行主动性质的检测,而PUSH方式的长处在于通信量相对较小,在具体使用的过程中,可以根据系统的要求来进行方法的选择。
冗余技术存在的意义在于能够有效防止因为节点失效而出现的服务中断现象,比如谷歌的GFS主要就是利用了冗余计算来达到提高自身容错率的目的,当用户输入的文件被分块的时候,各个分块会被分别制作复制品存放在不同的数据服务器中,而系统本身仍然会根据唯一的那个ID来进行数据的操作。
在传统类型的数据库中,数据的模式大多被提前进行定义,而其数据的完整性大多需要通过约束关系来实现,以此来确保数据不会重复进行存储,并且用这个关系将所有的数据进行关联。Key 数据的存储系统内部由不同的“域”组成,这就相当于我们常用到的表格,而其改进是一个域,可以有不同的形态属性。不同域之间的关系以及单个域内各项数据的关系是不进行预先定义的,所有相关的内容都被存储在域中,而且每个域中的数据数量和内容也都不同,这样就可以用来匹配云服务的不同指令类型,提供足够的数据资源。
冗余技术也被应用在了数据的存储过程中,在将副本发送到各个节点中时,如果主版本的各个节点都没有失效,那么更新后的操作也会在其副本中得到体现。如果主版本节点失效,那么更新后的操作就不能顺利发送到所有副本,这样数据就会不一致,而这里我们就可以使用各个版本的时间排序来实现版本计算器的功能,如果节点已经失效,那么就可以利用其存在来判断更新操作在节点中的版本的分支种类,然后进行冲突的解决。
1.企业想要积极运用云计算达到应有效果,需要对自身数据存储平台采取三层结构的设计,以数据预处理、云计算以及数据挖掘平台为分层,以此来优化平台功能以实现数据存储以及挖掘的功能。具体图示如下:
2.在系统功能的设计方面,需要使用云计算技术合理地对数据平台进行设置,需要由以下几部分组成:数据收集、数据预处理、模式规则以及应用接口,以此来实现数据存储和挖掘功能。
3.在数据库的设计方面,要充分利用关系数据库的特征,减少冗余数据出现的几率,尽量在单一的地方进行数据存储,然后通过主键以及外键来进行动态视图的构建,这样可以在编写程序时方便进行查询检索代码的设定。
就像人类社会中的其他类型产业一样,云计算也需要在发展的过程中逐渐标准化,相关基础设施也会逐渐得到完善。我们有理由相信,随着互联网在我们生活中的占比和重要性越发凸显,云计算的用户和规模将会得到进一步的扩大,而云计算也必将成为我们生活中不可或缺的组成。