标题 | 基于商业银行大数据访问规律的HDFS副本策略优化研究 |
范文 | 信怀义 摘要:数据的大规模、多样化特征给存储带来了新的挑战,商业银行系统开始使用Hadoop来支持历史数据归档和在线历史数据查询等功能。HDFS(Hadoop Distributed File System)作为Hadoop中的数据存储实现,为MapReduce、Hive等数据处理提供数据,在大规模数据存储中应用广泛。但当前的HDFS,主要从数据安全和数据负载均衡等存储角度出发,采用了静态副本方式存放数据。这种设计缺乏对数据处理时数据读取的考虑,难以充分利用存储资源提供的数据读取性能。 本文从提高HDFS中商业银行系统数据读取性能的角度出发,通过分析商业银行系统进行数据处理时对HDFS数据读取的规律,利用数据访问频率信息指导数据副本数量的动态调整,并使用实验数据对比说明改进后存储方案相对原有方案的读取速度、网络流量传输等性能优势。实验表明考虑数据访问端的需求,可以减少Hadoop中数据处理读取数据所需的时间,提升数据本地化率,有利于数据存储和处理的性能优化,为后续的存储改进提供可能的方向。 关键词:HDFS,商业银行系统,数据副本策略; 中图分类号:TP391.41 文献标识码:A DOI: 10.3969/j.issn.1003-6970.2015.11.019 0 引言 伴随信息科技在工业、企业、个人领域的广泛使用,数据呈现出大规模、多样化等特征。HDFS作为大数据产品平台Hadoop中的数据存储实现,为MapReduce、Hive等数据处理提供数据,成为大规模数据存储的重要发展方向。而在金融业快速发展背景下的商业银行系统数据规模越来越大,形式越来越多样,大规模数据的存储和处理成为紧迫性的生产问题之一。Hadoop作为新的大数据存储和分析产品平台,其HDFS文件系统在存储大规模数据方面具有性价比高、可扩展性好、数据安全性较有保障等特点,被广泛研究和使用。 为了适应大数据时代的数据存储和处理需求,商业银行等开始引入了Hadoop来支持历史数据归档和在线历史数据查询等功能。但当前的HDFS,主要从数据安全和数据负载均衡等存储角度出发,采用了经典的静态数据副本方式来保证数据安全,并按照节点可用空间来分布数据以保证节点间的数据负载均衡。这种设计仅从数据存储的需求出发,缺乏对数据处理时数据读取的考虑,无法充分利用存储资源提供良好的数据读取性能。 本文从提高HDFS中商业银行系统数据读取性能的角度出发,分析了商业银行系统中的数据存储和访问规律,主要包括数据存储后极少被修改、数据访问的时效性强等特点。根据上述特点,结合HDFS的数据存取原理,设计使用数据访问频率表征商业银行生产系统在数据处理时的数据读取需求,并用于指导数据副本数量的动态调整。具体来说,针对不同的数据访问频率需求,来定制数据存储,使得经常被访问的数据可以更快地被访问,而归档性的数据则在满足数据安全性的基础上,尽可能地减少存储空间占用。由于数据存储中充分考虑了数据访问需求,可以减少Hadoop中数据处理读取数据所需的时间,提升数据本地化率,有利于数据存储和处理的性能优化,为后续的存储改进提供可能的方向。最后使用实验的方式对优化的方案进行了性能测试和分析,说明了方案的可行性和有效性。 本文基于商业银行系统的数据读取规律,对HDFS副本策略进行了优化研究。论文的结构安排如下,首先介绍了相关背景和主要工作内容;然后在第二章对本文中涉及的HDFS等相关内容进行了说明;第三章分析了商业银行系统的数据使用规律,并提出了优化HDFS副本策略的方向;在第四章详细描述了调整HDFS副本数量的方法,并进行了相关性能优化的验证;最后对本文工作进行了总结。 1 HDFS数据存储及读取 1.1 HDFS数据的存储 HDFS作为一个高度容错的分布式文件系统,它能够提供高吞吐量的数据访问,适合存储海量的数据,其基本原理如下图11所示: HDFS采用主从式结构,一个HDFS集群由一个管理节点(图11中的NameNode)和多个数据节点(图11中的DataNo de)构成。数据节点定期向管理节点上报心跳,管理节点通过响应心跳来控制数据节点。管理节点是一个管理文件命名空间和调节客户端访问文件的主服务器,维护集群内的元数据,确定块与数据节点的映射,对外提供创建、打开、删除和重命名文件或目录的功能。数据节点用于存储数据,并提负责处理数据的读写请求,执行块的创建、删除,和来自管理节点的块复制指令等。当进行数据操作时,相关请求会被发送到管理节点,由管理节点反馈相关数据的元数据信息,请求方使用元数据来执行具体的数据操作。 HDFS主要的特点有:静态多副本、大数据集、简单一致性模型、流式数据访问和移动计算策略等。在静态多副本中,HDFS从数据安全的角度出发,将所有数据进行了统一的多副本存储,并且数据副本数量维持静态不变化。此外,大部分的HDFS程序对文件操作需要的是一次写多次读取的操作模式,因此采用了简单一致性模型。大部分文件一旦创建、写入、关闭之后就不需要修改了,在这种模型中简单化了数据一致的问题和并使高吞吐量的数据访问变得可能。 1.2 HDFS中的数据读取 Hadoop通常使用MapReduce从HDFS中读取数据并实现相应的数据处理。MapReduce是由Google提出的一种应对数据密集型问题的编程模型和相应运行环境实现,已被广泛用于云计算和大数据处理等领域。 MapReduce编程模型将一个计算过程分解为先map后reduce的两个阶段。Map和reduce阶段中的每个阶段都可以由相互独立、并行执行的多个任务组成,分别称为map任务和reduce任务。一个MapReduce的计算过程总体上是从HDFS中获取输入数据,然后中心管理节点(即图1.2中的Master)负责map阶段任务的划分,之后根据节点的状态进行map任务的调度和执行。使用用户提供的划分函数进行reduce任务的划分,再进行reduce任务的调度和执行,完成一个MapReduce计算过程。MapReduce的并行模式使得大规模数据处理变得简单易行。 使用图1.2表示的一个MapReduce计算过程来说明对HDFS中数据的读取,其具体的执行流程包括: 1)首先将输入数据划分成等大的多个块。 2)启动多个进程,其中一个为管理进程,位于中心管理节点上。其他的进程为任务执行进程,负责执行中心节点调度的任务,位于执行任务的节点上。 3)管理进程根据用户提供的信息,从HDFS中获取输入数据对应的位置信息。并将一个任务和该任务对应的输入数据位置信息调度给一个空闲进程,完成初始的任务调度。 4)当一个进程被调度执行map任务时,根据管理进程提供的位置信息,从相应的位置读取输入数据。该执行进程将输入数据转变为键值对,并使用用户提供的map函数进行处理。Map处理之后得到的中间数据将以新的键值对的方式缓存在当前节点的内存中。 5)当缓存的中间数据达到一定的量之后,这些缓存的键值对将使用用户定义的划分函数进行换分,并将划分出的结果写入到执行任务节点的本地磁盘中。该执行进程将这些中间数据的存储位置反馈给管理进程。 6)当map阶段产生了足够的中间数据后,管理进程开始调度reduce任务,其过程与调度map任务相似。 7)在将中间数据按照key值进行排序后,执行reduce任务的进程根据用户定义的reduce操作,对每个key值和对应的value值的集合进行处理。 8)当所有的map和reduce任务都被执行完成后,该MapReduce执行过程结束,管理进程将执行结果信息返回给用户。 2 商业银行大数据访问规律分析 随着信息化的不断推进和数据采集的不断深入,商业银行系统的数据规模越来越大。从一个长时间段来看,数量的规模将达到大数据级别。与此同时,金融业的持续发展使得对大数据处理的需求越来越强烈。这对商业银行系统的存储和处理能力提出了巨大挑战,也使得商业银行银行IT建设和维护开销急剧增长。 商业银行银行系统存储的大数据主要有:一是在网上银行、手机银行、电话银行等中所形成的与客户访问行为相关的非结构化数据,如搜索、留言、评论、转发等数据。二是商业银行的各类系统中产生的日志数据,这一类数据过去往往因为处理能力不足被忽略。三是商业银行在网点、手机、网络、白助设备上留下的视频、音频、图像等大容量数据。四是在互联网、社交网络、移动互联网中与商业银行和客户相关的外部数据。 结合HDFS的设计原则,可以发现上述商业银行大数据具有较好的一次写入、极少修改的特点。商业银行的数据用于记录了商业银行与客户间产生的交易信息、客户行为等信息,这些数据通常在某个时刻被记录下来,并以证据或记录的形式被保存下来,修改后就失去其本身的价值。因此这些非结构化数据、日志数据、音视频数据等随时间点被保留下来,符合HDFS存储中的读取次数多、极少修改的特点,因此被广泛存储在HDFS中。 2.1 数据访问分析 在数据存储和处理时需在考虑投入产出比的基础上,分析具有高价值的数据,产生预期的收益。商业银行业数据具有较为明显的时效性,即其价值与产生的时间紧密相关。因此商业银行系统在使用Hadoop等大数据平台时也考虑上述数据时效性。大部分数据的访问情况跟其时效性紧密相关,新的数据比老的数据更具有访问价值,老的数据由于其数据失真等原因导致数据仅在深度挖掘等情况下才会使用,其他情况下很少被加工和处理。根据Hadoop本身的特点,存储在HDFS中的数据会被频繁访问,但是极少被修改。结合商业银行系统服务于交易的特点,数据产生之后一般不会直接被修改,而是更新生成新文件并保留原有数据。满足此类特点的数据可以放置在HDFS中实现归档和数据分析。 根据上述数据访问特点,本文提出针对不同的数据访问频率需求,来定制数据存储,使得经常被访问的数据可以更快地被访问,而归档性的数据则在满足数据安全性的基础上,尽可能地减少存储空间占用。商业银行生产系统是为了满足客户当前的需求,数据被访问的概率与其产生的时间具有很强的相关性。新近产生的数据会具有较高的使用价值,因此会被频繁访问。存储应该意识并利用该特点,进行针对性性能优化,提升性能。商业银行使用Hadoop平台的系统具有数据存入之后很少修改,并且具有较强的时间访问特性,最近生成的数据会被经常访问,而较长时间之前产生的数据被访问的频率很低的特点。 2.2 数据副本策略的优化 本文从提高HDFS数据读取性能的角度出发,针对HDFS仅考虑数据存储的问题,通过分析生产系统中数据处理对于HDFS数据读取的特点,使用数据访问热度来反映数据需求的频率,使用数据关联关系来反映不同数据被同时访问的情况,并根据系统的状态设置对应的阈值。 针对商业银行系统的上述特点,提出调整数据副本数量的优化策略。 首先是数据访问热度定义,将单位数据i的访问热度使用Hi来表示,定义单位数据大小为一个数据块,详细定义为: Hi=K1*F1+…+Kj*Fj+…+Kn*Fn,其中Kj表示第j个时间段的权重系数,Fj表示第j个时间段的访问频率,单位为次/小时。 初始状态下,按照每份数据3个副本,并由使用人员规定每个数据块的大小进行存储。在此之后,按照单位数据来统计数据访问热度。对于不同的时间段设置不同的权重系统,时间越久的访问对应的权重越小,反之则越大。 随着访问的持续进行,根据数据访问热度不同,并结合可用的存储容量,设置几个副本阈值。不同的副本阈值对应不同的副本数量。当一个数据的访问热度达到某个阈值后,那么其对应的副本数量设置为对应的数值。通过这种方式可以使得访问热度高的数据对应更多的数据副本,而访问热度低的数据对应更少的副本。在整个读取过程中,根据数据访问热度值所在阈值范围的变化,动态地调整数据副本数量。由于数据的访问热度会随时间而变化,对应的数据副本数量也会不断地随该访问热度值调整,形成对数据副本数量的不断修正,以更好地满足数据访问的需求。 3 数据读取性能优化分析与评价 3.1 测试环境 本文采用模拟实验的方法来说明之前提出的相关HDFS数据存储优化策略进行试验和分析。在该模拟测试环境中较多地使用了随机分布和指数分布。随机分布用来产生一定范围的随机数,该范围内的每个数据出现的概率是相同的。指数分布是一种连续概率分布,可以用来表示独立随机事件发生的时间间隔。许多电子产品的寿命分布一般服从指数分布,有的系统的寿命分布也可用指数分布来近似。它在可靠性研究中是最常用的一种分布形式。在本模拟中,使用指数分布来表示数据从最开始产生到最后不再被访问的过程,以及不同时间段数据被访问对计算这个数据当前时刻的价值的权值。上述两个过程都可以看成是一个时效过程,可以较好地体现在第三章中提到的商业银行数据被访问的时效性特征,也体现数据访问的时间局部性原理。 在测试过程中,关键在于触发调整副本数量的时刻选择和副本数量控制。调整副本数量的时刻受到多个因素的影响,包括存储、网络等多个方面。而副本数量控制则影响该策略能够充分利用空闲存储空间并减少不必要的数据副本反复变化。 由于商业银行类系统存储HDFS的数据具有的一次写入、极少修该的特点,副本数量的调整关键在数据副本的增加。数据副本的减少只需在管理节点进行相关元数据的调整即可,而数据副本增加涉及数据拷贝相对成本较高。在本文中不独立触发进行数据副本增加的操作,而是借用数据处理过程中数据被临时缓存到其处理节点,实现数据副本的新增。由于这种数据拷贝是必须的,因此采用的增加副本的方法没有增加额外的网络开销。整体而言,副本数量调整的主要开销为元数据调整开销。 根据管理节点的元数据调整开销,本文采用如下的调整机制: 在每个将进行数据副本调整的时刻,计算每份数据(不含副本)的一个重要程度值,该值为此数据每时刻被访问的次数与该时刻相对于当前时刻的权重值。将所有数据(不含副本)的该值求和后求平均值。当一份数据的该值大于该平均值时,触发一次针对该数据的副本调整策略。 数据副本的控制由每份数据(不含副本)的重要程度值相对于所有数据的平均值的倍数计算得出。如果该倍数值超过1,那么进行副本数量的增加;否则副本数量使用默认的3份。倍数值越大,对应要新增的数据副本数量就越多,为了防止出现极端占用的情况,设置一个最大副本数量的值来避免这种情况。 3.2 测试参数及结果分析 测试环境:MatLab R2010b; 存储数据总数:10000份; 总存储空间:30000份; 每份数据的默认副本数量:3份; 最大允许副本数量:9份; 数据访问发生的时刻:300个; 每个数据被一次模拟过程中访问的总次数:[10,1000]之间的一个随机整数值; 每个数据第一次被访问的起始时刻:[1,300]之间的一个随机整数值; 每个数据访问次数在其可以访问时段的概率分布情况:λ值为[0.1,0.2]之间随机值的指数分布。在图3.1和图3.2中给出了λ为0.1和0.2时的指数分布。可以看出,该数据在最开始产生时被访问的概率高,随着时间推移访问概率逐渐减小,具体的减小速度取决于λ值,λ值越大其减速越快。 每个数据访问次数对其重要价值(表示其当前被访问需求的热度)的权重从当前访问时刻至第一次被访问时刻的函数:λ值为0.2的指数分布。图3.1中表示了λ为0.2时,当前时刻发生的访问次数对该数据重要价值(当前访问需求热度)的贡献值大,而较早之前的数据访问贡献值很小,体现数据访问具有时间局部性原理。 使用上述参数设置,进行了100次试验,统计得出了数据副本数量发生改变的次数占整体访问次数的比例,以及改进后副本数量与默认副本数量的比值,相关数据见图3.3和图3.4。 通过上述数据可以看出,改进后的HDFS算法在18.8%左有的次数会发生数据副本数量的增加操作,该数值表明了管理节点需要增加的开销值,该开销的新增认为是可以接受的。此外,还可以根据管理节点的负载情况,来调整触发调整副本的阈值,使得充分利用管理节点的能力,提升HDFS数据读取的性能。 改进后的算法,数据副本增加为了原来的2.5倍以上,每份数据(包含副本)每时刻需满足的访问需求个数相对于原来的存储方法减少了40%以上,这样可以使得每份数据响应压力变小,能够更好地满足数据读取的需求。此外,通过降低触发副本调整阈值和扩大可用的存储空间来使得每份数据每时刻需要满足的访问需求个数进一步减少。 本章从测试的角度试验并分析说明了具体的HDFS优化方法的性能优化情况。主要说明了进行测试的环境和采用的基本策略,讨论了调整数据副本数量的性能变化。通过分析可以发现,数据副本调整策略增加了管理节点上的元数据管理开销,但同时也有效减低了每份数据需要应对的访问需求的数量,这样可以降低数据访问时的等待时间,降低存储数据节点的磁盘负载等。 4 总结与展望 面对大规模数据时,数据存储成为新的挑战之一。HDFS作为大数据产品平台Hadoop中的数据存储实现,成为大规模数据存储的重要发展方向。为了提升数据处理性能,考虑到商业银行大规模数据存储和处理的特点,优化HDFS存储策略,提升数据读取性能,具有较为重要的意义。 本文介绍了Hadoop中的HDFS数据存储和基于MapReduce的数据处理方法,然后分析了商业银行大数据存储的特点。结合对两者的分析,提出了一些进行数据存储进行优化的方向。主要包括:针对不同的数据访问频率需求,来定制数据存储,使得经常被访问的数据可以更快地被访问;利用商业银行生产系统数据被访问的概率与其产生的时间具有很强的相关性,优化针对最近数据的存储策略;最后,通过模拟实验的方法说明改进策略的有效性。 后续考虑结合实际生产系统,并考虑进行更多数据的测试,以及采集更多的性能指标,评估元数据改变等造成的影响,更好地说明改进策略的多方面性能指标。 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。