APP下载

基于Hadoop的计算机分布式存储与数据分发设计

2020-02-21赵颖

电子技术与软件工程 2020年13期

摘要:本文以Hadoop的计算机分布式存储与数据分发设计为研究对象,首先简单介绍了何为Hadoop,并分析了其工作流程,随后探讨分析了基于Hadoop的计算机分布式存储策略,最后对基于Hadoop的数据分发策略应用进行了探讨分析,以供参考。

关键词:Hadoop系统;分布式存储策略;数据分发设计

在互联网飞速发展的当下,未来人们更加倾向于移动联网设备的携带,从而为人们工作学习与生活提供更多的便利。而通过将Hadoop的计算机分布式存儲与数据分发设计应用于移动设备之中,能够提升移动设备文件读取效率,避免出现网络堵塞问题,有效降低网络资源损耗。

1

Hadoop的概述和工作流程

1.1 Hadoop的概述

Hadoop最初由“阿帕奇”基金会所开发的分布式系统基础架构,这是一种当前比较常见的分布式系统基础框架,在很多硬件设备组成集群上有着广泛的应用,不仅如此,Hadoop还能够在应用程序进行,可以为程序运转提供一组更稳定的接口,从而使分布式系统得可靠性加强,还有非常好的扩展性。组成它的内容很多,有HDFS、Map、Reduce、HBase等。在Hadoop中主要包括:HDFS(分布式文件系统)、MapReduce(并行编程计算模型)、HBase(分布式数据库)、Zookeeper(分布式服务框架)以及Hive(数据仓库),其中核心设计是为海量数据提供存储的HDFS及为海量数据提供并行计算的MapReduce。

1.2 MapReduce编程模型

组成Hadoop的Map Reduce编程模型最初是谷歌提出的,主要是对大规模集群专门进行海量数据处理的并行计算模型、处理的过程其实就是MapReduce把一堆杂乱无章的数据在处理过程中按照某种特征归纳起来,然后经过并行处理最后得到最终结果。而这期间Map的阶段所要面对的是一些互不相关,杂乱无章的数据,所以在这个阶段就需要对每个数据进行解析,从而提取出数据的一些特征。然后经Map Reduce的Shuffle的阶段以后,在后面进行的Reduc阶段就可以得到已经按照数据的某种特征进行归纳的数据,后面的处理就是在此基础上做进一步的并行处理就可得出结论。

而且MapReduce在执行作业的时候主要历经了对数据块进行分割、创建任务、Map、Combiner、Shuffle、Reduce几个过程,在此流程中我们可以得出MapReduce可简化分布式编程工作,如果是在使用默认输入、输出的数据格式,开发人员只需编写Map和Reduce两个函数就可以对海量的数据进行并行分析。

1.3 HDFS文件系统

HDFS文件系统是由Hadoop实现的分布式文件系统。主要是专门负责对存储Hadoop集群上的数据进行存储、管理、冗余备份和出错恢复的相关处理。HDFS具有高容错性和高扩展性,而且可以设计部署在低廉硬件组成的集群上,同时还可以提供高吞吐量对应用程序的数据进行访问,此外还可以提供流式数据的访问模式读写超大文件,还可以很好的适用那些有着海量数据集的应用程序。HDFS文件系统的特点主要有:

(1)能满足超大规模的数据集需求;

(2)可以容许节点失效发生;

(3)扩展性很强;

(4)在存储文件是能够将文件分割成数个数据块。

1.4 Hadop的工作流程

Hadop工作流程如下:

(1)进行数据模块的分割,由Map Reduce负责数据处理,这些数据全部来源于HDFS,在进行计算前,需要先做好数据的分块。

(2)进行任务创建。需要先进行Job提交,在Job Tracker获取到相应提交数据后,便会为本次任务进行Map Task与ReduceTask的分配,并提交至Task Tracker。

(3)经历Map过程。在每个Datanode中,都运行有一个Task Tracker,其为负责进行Map任务的执行。在具体执行过程中,Map Task会先进行数据的读取,然后借助Map函数进行计算,在输出中间结果后,会存放至本地磁盘之中,或者直接读取至内存之中。

(4)需要经历Combiner过程。在上述过程中,会有很多中间结果产出,通常不能将其直接交由Reduce Task进行处理,否则将会大大增加网络拥塞的概率。而通过Combiner过程,能够统一合并这些结果,便于后续进行集中处理。

(5) Shuffie过程。该过程需要将数据从Map Task输出至Reduce Task。

(6) Reduce过程。该过程会将Map Task的数据输送至Reduce函数,在完成数据归并后可获得最终结果。待整个Job执行完毕后,将会把获得结果存储至HDFS之中[1]。

HDFS写文件时的步骤如下:

(1)首先在客户端调用DistrbuteFileSystem对象中的函数Create来创建一个用于写入数据的文件。

(2)通过调用RPC在Namenode文件系统的namespace来创建一个新的文件。

(3)在客户端写入文件。

(4)在列表中的Datanode中形成一个管道,然后通过DataStreamer将数据块以数据流的形式传输到管线中的每个Datanode中。

(5) DFSOutputStream维护了一个ACK队列,当收到管道中Datanode返回的Ack队列以后,所对应的数据块才会从队列当中进行删除。

(6)在完成写入文件后,进行Close函数的调用,完成写入管道的关闭操作,此时整个HDFS的写入结束。

HDFS的读取相对于写入过程要简单很多。

2 基于Hadoop的计算机分布式存储策略

2.1 SR策略

在该策略中,基本思想为:RS(14,10)码为基本,再加两个本地校验块,就可以很好的完成本地修复。所谓的SR码,指的是本地可修复码,这是一类新的再生码。SR策略与RS策略比较相似,同样是先分解原文件,需要将其分成10块,然后在二元扩域上编码SR的帮助下,生成4个校验块,它们分别是P1、P2、P3、P4。然后通过异或的运算,能够生成S1、S2、S3 3个本地校验块,这三个本地检验快的关系是S3-S1+S2,这样来,就可减少存储一个校验数据块,而且系统存储效率也会得到有效提升。在SR策略中,共包含三个本地组:其中一组可以用X1、X2、X3、X4、X5、S1来表示,二组在具体表示方面,可以采用:X6、X7、X8、X9、X10、S2。三组则是S1、S2、P1、P2、P3、P4。在进行实际修复时,SR策略包含两种,一是有轻修复,二是重修复,前者适用于本地组中只有任意1个数据块丢失的场景,能够通过访问本地组中其他的数据节点,并完成相应数据块的下载,通过在异或运算的帮助下完成本地修复。后者适用于在一个本地组中存在两块以上的数据块失效的场景,修复整个过程和RS策略是比较类似的,还有需通过RS解码,才能够完成修复、在SR策略中。轻修复能够适用于所有单个数据块修复工作,并且大多数两个数据块的修复我们也可采用第一种修复方式,甚至于在有些运行三个数据块修复的时候,也可采用第一种修复方式。在SR策略中,轻修复一般占用的计算开销比较小,重修复占用的计算开销比较大。

从可靠性的稳定方面来考虑,通常是在一个扫描周期内,如果存在不能通过重解码修复的时候,就会存在原文件的失效,那原文件的可靠和之前的公式1是比较类似的,而且比公式1会略微小一些。但是由于策略一般很难满足MDS的相关性质,所以在遇到如果丢失的数据块存在5块或者6块这种极少发生的情况时,一般采用SR策略将会无法修复,公式(1)如下所示:

2.2 XOR策略

在这个策略当中,需分解原文件,具体也是将原文件分为十个数据块,然后再采用异或算法生成一块校验数据块,因此在实际存储中,会有11块数据块系统中,那么对于系统存储开销而言,则是原文件的1.1倍。当出现数据块丢失的情况时,需要对其他10块数据块进行访问,并在异或运算的帮助下,完成数据修复。该策略的计算开销通常比较小。

从可靠性的稳定方面来考虑,在扫描的一个周期内,n块数据块中,假如存在任意两块丢失这种情况,那么就会导致原文件的失效,那么则原文件的可靠性可用公式(2)表示:

2.3 RS策略

在纠删码中,RS码非常常见,本身容错和纠错能力比较强,在数字电视传输及卫星通信等领域中有着较为广泛的应用。近些年RS码开始在分布式存储领域应用场景中“崭露头角”。该策略在实际应用方面,同样需要进行原文件分解,分解的数据块为10个,然后通过RS编码可以由4个校验数据块,这就对系统存储而言,在其整体开销上会成为是原文件的1.4倍。在有数据块丢失这样的问题出现后,可以通过对其他10块数据块进行任意访问,就可以实现解码修复,由于在整个修复过程中需要进行解码操作,所以在实际中计算开销就会变得很大,从而导致实际的系统设计会变得复杂而且多变。

从稳定可靠性方面来进行考虑,在一个扫描周期内,若任意5块数据块丢失,导致原文件失效,那么原文件的可靠性可用以下公式(3)表示:

2.4复制策略

在分布式存储系统中,复制策略是一种最为常见的存储策略.这个策略的基本思想是:首先把原文件通过分解从而获得多个数据块,随后针对分解获得的每一个数据块,都需给它进行三个副本的备份,最后可以在不同的数据节点中对此进行存储,这样一来,如果出现部分数据节点失效,那么系统可以通过对其他备份数据节点访问,从而获取原文件或修复失效时的数据节点。从这里面我们能够发现,此时的存储开销会更大,通常是3倍的原文件大小。所以在遇到数据块丢失这种状况时,通常系统可直接从有效的数据节点中进行新备份数据节点的下载,而且在整个操作过程中不需要进行解码计算,因此整个设计是非常易于实现的[2]。

从稳定可靠性方面进行考虑,在扫描的一个周期内,一般只有存在三个副本都丢失的情况,原文件才会达到失效的条件。那么从概率来分析,如果是针对一个数据块,通常至少还会有一个副本能够应用的概率为1一(1-p)3,那么我们可作出如下假设,原文件被分解为k块,那么原文件可靠性P可用以下公式表示:

3 基于的数据分发策略

3.1 数据分法策略

如今我们处于信息大爆炸时代,很多网站点击、视频点击在短时间内均会突破数百万甚至数千万,当用户在集中进行读取这些文件时,受分布式系统多次读取特点影响,容易造成网络堵塞,不利于文件可用性与可靠性提升。为有效解决这一问题,我们可以在分布式存储网络的基础上,尝试与CND网络进行融合,将二者的优点集中在一起,网络中的每个用户,我们可以视为一个“边缘”数据节点,不仅可以进行存储任务分担,还能将内容发布至网络边缘,便于用户能够实现数据的就近读取,解决可能造成的网络堵塞问题。具体而言,首先在网络不拥堵时,可以先将文件的部分数据块提前向用户进行推送,以减轻后续集中文件读取的压力,通过在分布式系统中加入文件数据块副本机制,随机将其置于数据节点之中,有效分担原节点网络流量的压力,有效缓解网络堵塞的压力。

3.2 验证

在具体验证过程中,可以通过应用上面介绍的计算机分布式存储策略来实现,主要是可以应用的有复制策略、XOR策略和RS策略。为什么没有应用SR策略,是因为该策略的修复码是一种本地的修复码,难以满足MDS性质,因此在实际验证过程中,无法明确得出得出已知数据和重构原文件消耗网络流量的关系。在具体验证时,通过将集群Datanodel与集群Datanode2置于同一个局域网之内,将集群Datanode3与集群Datanode4作為外部网络的节点,同时为了进行更加真实的网络环境模拟,还需要进行上述外部网络节点文件上传与下载速度的限制。在集群Datanodel与集群Datanode2之间,放置部分数据块,用于数据分发效果的模拟,且其中的存储数据均为已知数据。通过进行设置集群Datanode1与集群Datanode2分发数据阀值为640M,并在OM、128M、256M、384M、512M、640M的条件下,测试集群Datanodel应用上述策略重构1280M和640M的文件所消耗的外部网络流量,并作对比分析。在外部网络流量中,包括在重构文件过程中,包括集群Datanode3与集群Datanode4流入集群Datanodel的网络流量[3]。

从相应结果中我们能够认识到,在集群Datanodel己知一部分数据的情况下,在采用复制策略进行文件存储重构时,随着己知数据的增加,消耗的外部流量在逐渐减少,由此我们能够认识到,数据分发策略对于应用复制策略存储的文件是可行的。而对于XOR策略和RS策略而言,实际消耗的外部网络流量并没有出现减少情况,这就说明在分布式存储架构下的数据分发策略对应用编码策略存储的文件是不可行的。

4 结束语

综上所述,对于Hadoop而言,本身有着“一次写入.多次读取”的特点,而在文件读取高峰期,Hadoop这种特点很容易造成网络堵塞,因此为有效解决这一问题,需要在了解Hadoop以及工作流程的基础上,分析其基于Hadoop的数据分发策略,这对于提升Hadoop整体性能而言有着重要意义。

参考文献

[1]余辉.面向微博舆情的Hadoop存储平台设计与实现[D].中国科学院大学,2016.

[2]涂竹松.基于Hadoop的数据共享模型研究[D].合肥工业大学,201 5.

[3]吴梦潇,基于HADOOP的分布式云平台搜索系统设计与实现[D].湖南大学,2016.

作者简介

赵颖(1979-),女,青海省互助县人。青海广播电视大学,硕士,副教授。研究方向为计算机应用(数据处理)。