APP下载

大数据环境下hadoop分布式文件系统分散式动态副本存储优化策略研究

2019-03-20郭良君王圣芳

中国医院统计 2019年1期
关键词:副本备份集群

杨 莲 郭良君 马 磊 王圣芳

作者单位:1 250017 济南,山东省肿瘤防治研究院

随着大数据时代的来临,数据在以前所未有的方式爆炸增长,从工业上的生产制造到生活中的电子商务;从企业的信息管理系统到政府部门的电子政务;从社交网络上的媒体信息到在线视频图像资料,每天都伴随着大量的数据产生,特别是hadoop海量异构数据的存储和处理给我们带来了前所未有的机遇和挑战。hadoop分布式文件系统(hadoop distributed file system,HDFS)因为具有很好稳定性和高效性,被很多大型企业用来处理海量数据。但是它依然有着一些自身的局限性,如:存储效率不高、集群负载均衡能力比较差、NameNode单点故障、JobTrace负载过重、小文件问题、热点问题等。这些问题都严重制约着HDFS的进一步发展[1]。

近年来针对HDFS的不足,hadoop自身提供了3种解决方案:归档文件技术、序列文件技术和合并文件技术,但都存在着各自的不足,没有被广泛地采用。而当前的HDFS数据灾备技术,也是主要基于复制或镜像备份,这就意味着为了防范一时的灾难,平时就要闲置一倍以上的设备资源及其数据资源,造成了很大的资源开销和成本浪费。

1 HDFS优化

HDFS采用master/slave架构设计,由两类节点构成,管理者namenode和工作者datanode这两类节点相互分工又共同协作,分别以不同的模式运行,完成各自的任务。

HDFS是通过多副本镜像复制策略来实现备份操作的,默认情况下副本系数为3,即HDFS的副本策略是将1/3的备份数据存储在本地机架的某个节点中,另1/3的备份数据存储在同一个机架的另一个datanode节点中,最后1/3的备份数据是存储在不同机架上的某个datanode节点中。该策略确保了HDFS的数据移动与安全机制[10]。

1.1 HDFS的优势

首先,HDFS是一种容错的分布式文件系统。HDFS所有数据经由源数据生成后会立即进行副本的备份操作,并将副本分别存储到集群的各个节点中执行数据的管理调度和数据的分析请求,允许节点数据出现灾难性崩溃的情况。

其次,HDFS可以部署在大量廉价设备集群上以节约存储成本。HDFS采用的多副本镜像复制策略保证了数据存储的安全性和可靠性。通过增加数据的副本数量弥补硬件设备的不足,同时也减少了本地架构与异地架构之间数据传输的时间开销。

最后,在实际的数据读写操作过程中,HDFS的多副本复制策略实现了多节点传输,降低了对网络传输总带宽的依赖,在不损害数据可靠性和读取操作效率的前提下,提高了对文件高效写入操作的支持。

1.2 HDFS的劣势

首先,HDFS整体存储成本较高。以常用的3副本策略为例,实际所需存储空间为存储数据容量的3倍,直接增加了存储硬件成本和文件索引的建立时间。此外,根据HDFS的架构,管理者namenode暂存所有存储block文件块的datanode节点的信息,并负责数据块的备份操作,周期性地从集群中的各个节点接收反馈心跳信号以及block分块的反馈状态报告blockreport,namenode会根据这些反馈信息来监测HDFS系统中block分块数据映射的状况信息。工作者datanode是HDFS分布式文件系统的实际操作节点。这些节点由管理者namenode统一调度,根据实际需要进行文件的存储操作或者数据块的检索操作。同时,datanode节点还负责执行管理者Namenode发出的对数据块的增删、查改等操作的指令,并周期性地向管理者namenode提交block数据块的反馈心跳信号以及block分块的反馈状态报告。Block数量过多将对namenode的内存造成非常大的压力,降低了系统的可扩展性。

其次,节点负载均衡能力不足。多副本策略对系统中的数据均维持相同数目的副本数量而不去加以区别对待,系统无法根据外界需求的变化动态地去改变副本的数目,这直接导致了系统有限的负载均衡能力。

最后,可扩展性低。在HDFS的多副本镜像复制策略中,所有系统中的数据都要保持相同的副本数目,且系统无法根据外界实际需求的改变动态调度已有的副本,这就导致了系统的灵活性及可扩展性降低[13]。

1.3 HDFS优化

1.3.1基于GE码的HDFS存储优化策略

纠删码是一种线性数据编码方式,它由于可以通过引入较少的数据冗余对数据传输和存储提供较高的可靠性保证而被引进到存储系统中。(n,m)纠删码将m个输入的源数据块编码产生n(n﹥m)个数据块,其中任意m个数据块都能通过解码重构出原始数据。应用这种编码方法,系统可以容忍的数据损坏上限是(n-m)个数据块。GE码是一类参数为[n,k,(n-k)/2+1]的垂直阵列码。码长为n,信息为k。选取GE码作为方案编码的主要原因是:GE码编译速度快(算法复杂度为线性);数据容灾能力强。容灾能力在区间[0.30.0.35]内,即只需70%的分片数据即可完成对原始数据的恢复。

1.3.2基于FEC码的HDFS云存储优化策略

基于FEC码的HDFS优化策略,该策略是针对云端存储文件系统占用空间大,负载均衡能力差等问题进行改进的。其设计思想是把需要上传的文件现进行编码分块的操作,然后整合编码后的输出数据,最后再把数据传输至云端的HDFS的分布式系统集群中。整个过程不进行数据副本的备份操作或者只进行少量的数据副本备份,降低了整个文件系统操作过程的空间开销和传输代价。此外,基于FEC码的HDFS优化策略中加入了数据传输的完成性检测工作,因此,该策略更适用于远程文件的传输[3]。

1.3.3基于XOR码的HDFS 优化存储策略

基于XOR码的优化策略,其编码和译码的方式相对简单,采用单一的异或运算生成奇偶检验码parity,原始数据是按照stripe进行分条目存储的,且每一个stripe条目只会生成一个parity,当某个stripe条目中丢失或者损坏了一个block数据块时,XOR码优化策略能够通过异或校验的译码运算过程进行数据的恢复操作。

相比其他优化方案,基于XOR码的HDFS优化存储策略执行效率更高,但由于译码操作只能恢复单一Block数据块的数据,即XOR码的优化策略中只允许出现一个数据块失效的情况,所以,基于XOR码的HDFS优化策略对文件系统的纠错能力比较弱。

1.3.4基于范德蒙码和动态副本存储的HDFS优化存储策略

范德蒙码即范德蒙整列纠删码,包括2个方向:一是低密度级联纠删码,代表有luby transform codes码(LT码);二是最大距离可分纠删码,代表有reed-solomon codes码(RS码)。两种纠删码各有利弊,低密度级联纠删码虽取得了很多进展,但不适合大规模应用到生产和生活中去;最大距离可分纠删码具有优良的存储空间代价和良好的容灾能力,使用对原始数据块添加校验码的方法降低数据存储过程中的副本备份操作,在降低存储开销的同时仍能保证数据的可靠性,能够平衡整体效率和编译码性能的问题。

在不影响HDFS 分散式存储结构的前提下,结合动态副本存储和伽罗华有限域理论对范德蒙码的计算方法和计算模式进行整体优化,降低了编译码的时间代价和计算的内存压力,节约了HDFS约35%的存储开销,提高了HDFS系统节点负载均衡能力和译码恢复效率。

这种算法更适合于医疗专业文书的处理,解决临床科研需求和数据供给2个方面的问题。既能节省了存储容量,可以容纳与日俱增且越发复杂化的医疗数据,又能降低硬件服务器成本,为医院节省资金开销;更能快速查询获取数据池中的有效数据,让这些躺着的数据变成活的,充分发挥他们的临床使用价值和科研价值。这一套完整的、系统的优化方案,为未来HDFS的发展提供了一条有效途径。

2 Hadoop实战

在技术层面,大数据的处理涉及方方面面,在开源社区和商业公司的推动下,各种工具和类库很多。其中,hadoop是当前最流行的大数据处理工具之一,从2016年诞生以来,已经有无数数据分析公司成功部署在实际的生产环境中。

2.1 Hadoop集群服务器的安装与配置

Hadoop最早就是在Linux平台上开发的,笔者所用的操作系统为CentOS 7.2。用虚拟机(VMware Workstations12)来虚拟一个集群。

运行hadoop任务,首先就需要提供Java的运行环境。CentOS7已经内置安装了Java的开源版本openJDK,安装oracle JDK之前,要确认所使用的Linux操作系统的信息是32位还是64位操作系统,然后再下载对应版本的JDK。在配置hadoop分布式安装过程中,我们需要配置SSH的无密码登录。如果不配置免密码登录,每次启动hadoop时,需要多台实体机(或虚拟机)之间相互通信(即在namenode和datanode之间发送或者读取数据),都需要输入密码以登录到每台机器上。比如在hadoop运行过程中,namenode需要启动和停止各个datanode上的各种守护进程。SSH(secure shell)是建立在应用层和传输层基础上的安全协议,利用SSH协议可有效防止远程管理过程中的信息泄露。在构建hadoop集群时,我们需要配置SSH,以无密码公钥认证的形式,使namenode使用SSH无密码登录,并启动nataname进程。

最新版本2.7.2,点击“binary”链接,进入下载页面,点击下载链接即可下载。Hadoop运行起来,还需要做一些必要的配置工作。为了让hadoop正常工作,可以运行本地模式、伪分布模式和全分布模式3种模式。正确地配置属性很多,不同的配置会导致hadoop运行在不同的模式下。在本地模式无须开启守护进程,故此可直接使用hadoop,无须启动。首先,我们依次启动HDFS,YARN和mapreduce守护进程,在终端输入下面几行命令:

start-dfs.sh

start-yarn.sh

mr-jobhistory-daemon.sh start historyserver

运行这3行命令,会在用户的机器上开启如下6个后台进程:namenode、secondarynamenode、datanode(HDFS)、resourcemanager、nodemanager(YARN)和jobhistoryserver(mapreduce)。

可以使用Java提供的jps命令,列出所有的守护进程来验证安装正确。hadoop提供了基于Web的管理工具,Web可以用来验证hadoop是否正确启动。其中namenode的URL为http://localhost:5070,resourcemanager(资源管理器)的为http://lacalhost:8088/,historyserver(历史服务器)的为http://localhost:19888/。

2.2 全分布模式下的hadoop集群构建

本地模式和伪分布模式均用于开发与调试。真实hadoop集群的运行采用的是全分布模式。在系统安装CentOS以后,默认开机会打开图形界面(最小化安装除外),但是图形界面会浪费很多资源,而且对于实打实的分布式计算而言,花哨的图形界面并没有什么实际用处,所以我们可以设置开机以字符界面启动,以节省资源,特别是对于用同一台机器开启多个虚拟机来模拟集群,这种模式更是有一定的意义。Linux系统有以下4个运行级别(run level)。

运行级别0:系统停机状态。系统默认运行级别不能设为0,否则不能正常启动。

运行级别1:单用户模式。在此模式下,主要用于系统维护,只能由管理员(即root)进入。由于启动时,文件系统虽被加载,但网络模块却没有被载入,因此无法通过网络远程登录。

运行级别2:多用户模式。这种运行态,虽然支持用户通过网络进行登录,但不支持网络文件系统(network file system,NFS)。

运行级别3:完全的多用户模式(支持NFS),登录后进入控制台命令行模式。

2.3 本策略的创新

本研究对大数据的有效存储问题进行了研究,提出了一种基于范德蒙码的HDFS分散式动态副本优化存储算法:针对HDFS存储成本过高的问题,采用了基于范德蒙码的编译码操作对HDFS进行数据优化,摒弃HDFS原本的多副本镜像复制策略;加入分散式动态副本控制思想,改进单纯范德蒙码策略无法应对灾难性机架和节点失效的问题;采用分组分列策略以及有限域理论对译码操作的计算过程、计算模式和计算方法进行改进,精简矩阵运算的步骤;根据范德蒙码输出矩阵的特点,改进译码触发操作的时机,降低译码操作触发的频率。其优势有如下3个方面:

1)HDFS是一种容错的分布式文件系统,所有数据经由源数据生成后会立即进行副本的备份操作,并将副本分别存储到集群的各个节点中执行数据的管理调度和数据的分析请求,允许节点数据出现灾难性崩溃的情况。这样假设医院数据库崩塌后,另一个容灾备份系统启用,不妨碍医院业务的正常进行。

2)HDFS可以部署在大量廉价设备集群上以节约存储成本,HDFS采用的多副本镜像复制策略保证了数据存储的安全性和可靠性,通过增加数据的副本数量弥补硬件设备的不足,同时也减少了本地机架与异地机架之间数据传输的时间开销。这样可以节省医院对信息化建设硬件存储设备的资金投入,又加快了数据的查询和调取。

3)在实际的数据读写操作过程中,HDFS的多副本复制策略实现了多节点传输,降低了对网络传输总带宽的依赖,在不损害数据可靠性和读取操作效率的前提下,提高了对文件高效写入操作的支持。这样可以更快速查询获取数据池中的有效数据,让这些躺着的数据变成活的,充分发挥他们的临床使用价值和科研价值。

猜你喜欢

副本备份集群
“备份”25年:邓清明圆梦
VSAT卫星通信备份技术研究
创建vSphere 备份任务
海上小型无人机集群的反制装备需求与应对之策研究
使用卷影副本保护数据
面向流媒体基于蚁群的副本选择算法①
一种无人机集群发射回收装置的控制系统设计
Python与Spark集群在收费数据分析中的应用
勤快又呆萌的集群机器人
旧瓶装新酒天宫二号从备份变实验室