APP下载

Hadoop与MapReduce应用下的大数据处理系统设计

2021-10-28李红丽

网络安全技术与应用 2021年9期
关键词:键值节点作业

◆李红丽

Hadoop与MapReduce应用下的大数据处理系统设计

◆李红丽

(阳泉师范高等专科学校 山西 045200)

移动互联网、云计算与物联网等信息技术应用日益广泛的大范围增加了数据的产生量,使得整个社会正加速步入“大数据”时代。采取何种技术进行大数据处理系统的高效构建,对各种类型的数据源进行集成,让用户无障碍地访问这些数据,进而完成对大数据价值的充分挖掘,成为业界与学者共同关注的问题。

Hadoop;MapReduce;ETL;大数据处理系统

近年来,诸多大数据处理技术与框架吸引了人们的高度关注,其中,以Hadoop开源计算平台得到的关注与应用最广。它是一种具有分布式特点的系统架构,基于自身所表现出来的数据提取、转换与清洗以及加载(ETL)强大优势而在大数据处理中发挥重要作用。本文进行一种以Hadoop和MapReduce为基础的大数据处理系统的构建,该系统可以整合数据处理的全部流程,涉及从分布异构数据源处进行各种相关数据的收集、对信息进行清洗以将冗余或是无用信息剔除、重构有用的各项数据、对数据进行向数据仓库等的加载等一系列任务,以期为今后大数据处理工作更加顺利与有效的开展提供一种可供参考的计算架构。

1 Hadoop平台与MapReduce技术

分析Hadoop平台的总体构成,主要对HDFS、MapReduce以及Hive等重要组件予以涉及。

1.1 HDFS

这是一种分布式文件系统,在一个集群网络中,通常会有很多台计算机,而每台计算机内又会存储大量不同的数据,借助该系统,可以完成对这些数据的管理任务。HDFS可在普通商用服务器节点上部署,容错性能强,可靠性高。为了在极短的时间内实现对数据的快速访问,HDFS对流式数据访问的设计理念及其思路予以遵循,对大数据的处理执行的为一次写入与多次读取模式。

1.2 MapReduce

这是一种数据模型(主要框架如图1所示),具有对数据进行并行化处理的功能,在多个计算节点上,该数据模型可以执行对大规模计算分析任务的分配操作,能够在较大的程度上为统计分析任务效率的提升提供可靠保证。在完成数据输入之后,系统会对所输入的各项数据执行分片处理操作,对于各输入分片,它们都会进行一个Map任务的单独启动,并在此基础之上生成并得到一些键值对,并在本地硬盘中执行对这些键值对的存储任务。Map处理之后所得结果,会在网络传输的支持作用下由对Reduce任务予以运行的相应节点接收,在此过程中,Reduce函数的功能在于对它们进行合并处理,并以此操作为基础将得到的最终处理结果在HDFS中存储下来。

图1 MapReduce计算模型

1.3 Hive

构建于Hadoop上的数据仓库框架,可将HiveQL查询有效地转换为MapReduce任务,减小HiveQL程序向Hadoop平台移植难度。

2 系统设计

系统主要包括4个层次,图1所示为本文设计的系统整体框架。

(1)数据采集层。主要利用各类采集设备,在设备接口的支持下获取各种类型的数据,在这些数据中,包括结构化、半结构化以及非结构化多种类型的数据,同时,还有可能涉及错误、冗余或者是用处不大的数据,因此需要先对这些数据执行数据的清洗任务,为干净可用数据的获取提供便利,同时,保障数据安全存取。

(2)数据存取与计算层。涉及大数据仓库、Hadoop平台与ETL计算框架。数据仓库与Hadoop之间具有互补的关系,前者中的数据能够在后者中转存,这可实现对用户在多种不同场景下业务需求的有效满足。ETL计算框架同Hadoop结合可以执行对数据的一系列处理,为后期的数据查询、分析以及挖掘提供强有力的平台支持。

(3)数据服务层。以ETL计算框架与Hadoop平台为基础,提供对数据的管理、分析以及挖掘服务。为了达到数据的共享目的,该层同时提供统一接口,供平台及其他相关应用使用。

(4)数据应用层。基于数据服务层接口的支持,执行预警预测、知识发现以及决策支持等多种大数据应用。

图1 大数据处理系统总体架构

3 系统分布式ETL框架(图2)

第一,考虑到Hadoop HDFS可以分布式存取文件,对其这一功能加以应用,从逻辑层面上整合之前那些物理上相互隔离的各类数据;第二,遵循事先制定好的业务规则,在Hive组件的支持下,执行对HiveQl脚本的编写任务,同时,有效地发挥Hadoop MapReduce所具有的对数据进行处理的强大功能,进一步执行对HDFS中相关数据的转换与处理操作,最终获取所需要的Hive数据表;第三,为了尽可能地将时间的消耗降到最低程度,发挥Sqoop工具的作用,对Hive表进行批量加载,并将其存储至关系型数据库中。

图2 分布式ETL框架图

在数据抽取模块中,又可以进一步分为两个子模块,分别为数据源与数据过滤器。而在这两个子模块中,后者的功能在于执行对数据的初步清洗与过滤任务。

数据转换模块主要由数据转换器(Hive)与数据转换引擎(Hadoop)2个子模块共同构成,其中,前者的功能表现为对转换规则进行制定,并执行对规则的输入任务;后者主要运行具体转换规则并得到最终的结果,是整个ETL部件的核心,内部工作流程在图2中已给出。

在关系型数据库中,数据加载模块存在的意义表现为可执行对最终结果表的批量加载任务,而该项操作会进一步在Sqoop的支持下来完成。

4 基于MapReduce计算模型的HDFS数据转换实现

在对数据进行抽取、转换以及执行对程序的加载任务等各个环节,ETL程序均会同Hadoop MapReduce库建立起相应的链接关系,此过程会调用Map以及Reduce这两个最为基本的函数,以此转换HDFS数据,得到Hive数据表。图3所示为其顺序执行流程图。

图3 基于MapReduce的HDFS数据转换流程图

(1)MapReduce库先对HDFS数据进行M份划分(M由用户定义),每1份为16~64M,之后利用分叉拷贝在集群内的其他机器上进行用户进程的拷贝。

(2)在ETL程序副本分配的机器中,有一个是Master,负责调度,其他的都是Worker,数量亦由用户制定。Master为空闲的Worker分配Map作业或Reduce作业。

(3)对于Worker而言,如果其被分配的是Map作业,则需执行对所对应的分片中输入数据的读取任务,Map作业数量并不是固定的,M会对其产生决定性影响,也就是说,Map作业同分片之间存在着一一对应的关系;在所输入的所有数据中,Map作业会执行相应的键值对抽取操作,在此基础上,会通过参数的形式将所抽取到的键值对传递给Map函数,而接下来,Map函数会基于接收到的键值对而产生对应的中间键值对,这些中间键值对会在内存中被缓存下来。

(4)当有一定数量的中间键值对被缓存下来之后,它们会被写入到本地磁盘之中,而磁盘又会进一步将它们划分为R个区,用户自行定义R的大小,后期,每个区均会与一个Reduce作业相对应;另外,写入本地磁盘的中间键值对位置会经由Master向Reduce Worker转发。

(5)Mater会对Worker被分配到的作业性质进行判断,如果是Reduce作业,这时,Worker会向Worker下达相应的通知,让其知晓自身所负责的具体区域所处的位置,当Reduce Worker完成自身的初步任务,亦即将由自己负责的所有中间键值对读取完毕以后,会进一步地对它们进行排序处理,将有着相同键的键值对集聚起来。

(6)Reduce Worker遍历按顺序排列之后的中间键值对,针对每一个唯一的键,均向Reduce函数执行键及其关联值的传递任务,在此过程中,Reduce函数会有相应的输出产生,而这些输出会添加到该分区的输出文件中。

(7)当全部的Map作业以及Reduce作业均被完成之后,Master会进一步执行对ETL程序的唤醒操作,在此过程中,MapReduce函数又会调用向ETL程序返回的相关代码。

基于上述所有操作的完成,MapReduce输出会放于R个分区的输出文件中,用户可将它们作为输入交由另一个MapReduce程序,最终得到Hive数据表。

5 应用测试与性能比较

系统设计完成之后,需要对其可应用性进行测试,以确定系统是否具有价值,对此,本文围绕系统的具体应用及其在应用过程中表现出来的相关性能展开具体的测试工作。

5.1 应用测试

在测试过程中,将加速比(单机完成某一应用所耗费的时间同多机并行完成某一应用所耗费的时间的比值)作为指标分析系统可应用性,也就是测试系统在对各种数据进行处理的过程中表现出来的实际加速比,对此实际加速比同理想的加速比进行比较分析。具体地,将在实验室中采集到的训练数据作为实验数据,根据测试结果进行加速比变化曲线的绘制,图4(a)为随数据变化的加速比变化曲线,(b)为随计算节点变化的加速比变化曲线。

图4 加速比变化曲线图

根据图4(a),在数据集不断变大的过程中,加速比呈现出逐渐上升之势,究其原因,在于系统设计最初时的目的在于对庞大而又复杂的数据进行处理,这一处理通常情况下都以一次性的处理为主。以Hadoop与MapReduce为基础的大数据处理系统在运行过程中无须执行对数据的预处理操作,同时,也不必将它们写入数据库,系统直接在平面文件的基础之上将相应的分析工作展开,最小化分析延迟,因此,数据集的增大可在一定程度上提高其处理效率。

根据图4(b),在计算节点数量不断增加的过程中,加速比的变化趋势为先上升,后下降,其原因在于网络通信过程中所需支付的费用会在计算节点数量不断增加的过程中而逐渐增加,由于Hadoop MapReduce对以扫描为基础的数据处理模式以及对中间结果不断物化的执行策略予以采用,因此这会在较大程度上提高I/O代价,同时,增加网络传输的任务量,在数据集并非特别大的前提条件下,节点数量的增加会对处理效率产生相应的影响。

5.2 基于不同平台的系统性能比较(表1)

对于大数据处理系统,以往学者已经作了相应的研究,设计出基于SOA平台的大数据处理系统以及基于多Agent的大数据系统等,为确定本文所设计的基于Hadoop MapReduce的大数据处理系统的优越性,本文从系统交互性、灵活性、扩展性、稳定性以及有效性5个方面对本文系统以及基于SOA平台的系统和基于多Agent的系统进行对比分析,得到如表1所示对比分析结果。

表1 三种平台下的系统性能比较

注:“√”表明系统可满足此项性能要求,“×”表示不可满足。

根据表1,基于SOA方式的系统设计以对紧耦合问题的解决为目的,可提高ETL之间的交互性,但未较好地解决扩展性与有效性问题,故对于大数据来说,其效率相对不高;采用多Agent技术的系统以对Agent之间负载均衡问题的解决为目的,但无法确保各Agent之间的稳定性,当其中任意1个Agent出现故障之时,整个系统均会面临瘫痪的风险,且无法有效地对大数据进行处理;Hadoop平台对数据复制的方式予以采用,可提升节点之间访问数据的效率,对数据丢失的可能性予以降低,因此基于Hadoop平台的大数据处理系统具有很好的稳定性、扩展性与有效性,适用性很高。

6 结语

文章进行了一种基于Hadoop与MapReduce的大数据处理系统的设计,给出其框架设计方案,并对各模块的功能进行了介绍,同时,针对其最为核心的部分,分析了基于MapReduce计算模型的HDFS数据转换实现。系统可对分布于不同主机上的数据执行简单且高效的数据抽取、转换与加载操作,实验显示,系统可靠性、可扩展性、负载平衡性能良好,执行效率高,且在对海量数据的处理中表现出了优于采用SOA方式与采用多Agent方式的系统性能。

[1]杨杉,苏飞,程新洲,等.面向运营商大数据的分布式ETL研究与设计[J].邮电设计技术,2016(8):47-52.

[2]崔蔚,周力,吴凯峰,等.基于Hadoop平台的并行线损分析系统研究与实现[J].电力信息与通信技术,2014,12(2):60-63.

[3]王艳,蒋义然,刘永立.基于Hadoop的大数据处理技术及发展[J].信息记录材料,2020,21(11):146-147.

猜你喜欢

键值节点作业
CM节点控制在船舶上的应用
基于AutoCAD的门窗节点图快速构建
非请勿进 为注册表的重要键值上把“锁”
概念格的一种并行构造算法
一键直达 Windows 10注册表编辑高招
作业
抓住人才培养的关键节点
我想要自由
注册表值被删除导致文件夹选项成空白
三十六计第七计:无中生有