摘 要:随着计算机和网络在人们工作和生活中的广泛普及,数据量急剧增加。目前,如何有效地收集和存储数据是当前需要解决的主要问题。在Hadoop技术的基础上,给出了海量数据处理平台的系统需求分析、系统架构设计和关键模块设计,并阐述了基于Hadoop技术的数据处理平台开发的要点,为相关研究人员提供了一些参考。
关键词:数据处理平台;大数据;Hadoop
中图分类号:TP311.13;TP391.3 文献标识码:A 文章编号:2096-4706(2019)03-0005-03
Design and Development of Data Processing Platform Based on Hadoop
YAN Yaning
(Xi’an Peihua University,Xi’an 710125,China)
Abstract:With the wide spread of computers and networks in people's work and life,the amount of data has increased dramatically. At present,how to collect and store data effectively is the main problem to be solved. On the basis of Hadoop technology,the system requirement analysis,system architecture design and key module design of mass data processing platform are given,and the key points of data processing platform development based on Hadoop technology are expounded,which provides some references for relevant researchers.
Keywords:data processing platform;big data;Hadoop
0 引 言
程序员在应用开发中面临的一个主要问题就是大型数据集的存储和处理,而目前最严峻的服务器软硬件考验,就是海量以及动态的数据。随着移动互联网的快速发展,存储数据和响应速度的介入,也必然会使互联网的发展面临新的瓶颈期。在许多企业和大型机构中,数据集快速批量处理技术问题一直都是企业面临的核心问题,数据集快速批量处理具有广泛的社会需求。因此,当前最突出的问题就是如何快速实现具有交互式性能,且能对海量数据进行批量处理的管理信息系统,而在信息技术架构中,数据集成项目迫切需要一种存储模型,而该模型要具有动态可扩展性,以实现快速响应机制。在大规模数据库中,面临较严重的实际问题就是对海量数据的查询、分析、提取、更新等批量处理问题。传统的数据库数据存储复杂,且查询时间过长,尤其在数据量大,查询任务复杂时,系统在处理数据方面就不能满足查询需求,系统性能将大大降低。同时,传统数据库也存在扩展性差问题,可扩展的硬件,不能有效地提高系统的性能。同时,传统的基于并行处理的数据平台,不能满足海量数據的处理需求,并且维护成本高。因而,研究海量数据,以及对海量数据处理技术高效性的要求,能有效提高计算机系统的应用性能,推动经济效益的增长。本文基于Hadoop的Internet的业务计算模型,设计并实现了一个基于Hadoop的海量数据处理平台,为解决关系数据库中海量数据的处理提供了一种新的方法。
1 数据处理平台设计
1.1 系统需求分析
系统将存储离线数据。对于在线数据,系统主要采用有序隔离和存储两种方式,在存储数据期间,为了提高应用程序的性能,用户可以选择是否允许数据丢失。最后,将得到的数据源在线处理任务结果,交由用户提交,数据将依次进入后续处理过程。为了使系统支持多种数据处理逻辑,处理流程可将一般的数据处理操作抽象为单独的功能组件。因此,用户只需要灵活地组装所需的功能组件,并指定组件之间的拓扑关系。该系统支持用户自定义数据处理规则。用户在分配待处理的数据时,可以灵活选择分配一个或多个数据,以及数据处理组件,并且可以指定处理组件之间的拓扑结构。面对数据处理业务逻辑需求的多变性和灵活性,该系统具有通用性和易用性就尤为重要。因为,不同数据源产生的数据速度是不同的,所以,该系统支持多个在线任务同时运行,同时处理多个数据源任务。因此,稳定访问数据源,以及稳定操作在线任务是系统稳定性的直接表现。为了保障系统恒定提供处理数据服务,在设计中,应该特别关注单点故障问题。系统除了具备及时、快速获取流数据信息的能力,还需具备处理这些数据流的强大计算能力,以便快速做出响应,并反馈数据处理结果。因此,该系统对计算能力有着更高的要求。
1.2 系统架构设计
该系统在数据处理流程上,遵循数据源层、计算层和存储层的架构设计。数据源层,主要提供对外服务,负责访问外部的数据源;计算层,基于业务逻辑,对数据流进行数据处理;存储层,主要负责对前期数据持久化结果。这些数据源的来源,主要是两方面,一方面是日志数据,由在线应用程序生成;另一方面是脱机数据,主要来自数据库。这些外部应用程序数据,把数据传输给系统,向外界提供稳定的服务。为了避免数据源处理速度与系统处理速度不匹配的问题,我们可以考虑,将所有输入的数据源隔离,且存储在系统内的消息队列中,节省消耗记录消耗数据的偏移量,这样,不仅简化了系统的计算方法,而且有利于系统的恢复。计算层有两个主要功能,它将自定义规则转换为在线任务,也就是说,将自定义规则运行在计算层中。在提交后,数据源组件将从数据源层中提取消息并将其发送出去,消息流将由一系列组件处理。确保每一次都能成功处理至少一次。每一个都在一系列组件之后进行处理,树结构被称为树,它可以跟踪每个树,并且标记树是否可以成功地处理。如果在设定时间内没有树的成功执行,它将被标记为执行失败,然后将再次启动,每个都具有默认消息超时设置。存储层是数据处理结果的着陆链路,并根据计算层的计算结果进行实时更新。在数据存储层中,有必要确保系统以高性能保持。
1.3 关键模块设计
数据源访问模块提供了两种工作模式:同步调用和异步调用。同步调用的意义是,将数据发送给它并等待确认,这样我们就可以继续发送下一个数据。而异步调用就不同,它只要有数据等待,就能随时进入下一步数据发送,无需等待确认。因此,对可以容忍少量数据丢失,同时具有高实时性的海量数据处理应用,就可以选择异步模式。如果选择同步模式,对数据的安全性要求就比较低,允许部分数据丢失。如前阐述,数据处理的整个过程,需要系统核心计算模块提供,而且每个模块处理组件都是功能独立的个体,使用也是没有关联的。因此,用户在完成所需的处理任务时,可以灵活组合各功能。数据主要有两个特性,第一个是结果数据,是系统对一系列数据流处理逻辑之后的结果;另一个是中间结果,是需要暂时存储的数据。前者的数据量一般较小,后者的数据量一般相对较大。生长表可以自动划分区块,而且分区之后的每个区域,由表中行的子集构成。比如,一张桌子是由一个区域组成的,最初只有一个区域,但是,随着数据流的增加,这个地区也开始增长,当它超过集合大小的阈值时,它将把表划分成两个新的区域,在一个行的边界上具有相同的大小,并且区域的数量也会增加。
2 数据处理平台开发
2.1 数据源级的开发
数据采集层是整个海量网络数据处理平台体系结构的底层。首先,该系统需要输入所采集到的样本数据;其次,对采集到的数据进行数据分析,并对其进行分布式存储,存储时,必须遵循数据存储的相关规则。目前,已有的原始数据有两种主要类型,一种是收集的原始消息流数据,数据较大,往往一小时几兆,所以物理介质将被传输到高速缓存区,且存储在数据存储中心,然后通过本地计算机上传并存储到云服务平台;另一种是主要用于实时分析的原始数据,其关键指标是实时监控移动互联网相关业务的质量,这些是基于运营商业务需求的。同时,大量数据的转发,要在保护数据的完整性和可靠性的基础上,需要一个独立的模块来承担此任务。目前,交通监控设备包括工业控制计算机,收集移动互联网关键流量数据,分别生成二进制消息列表和数据流记录列表,并传输到海量网络数据处理平台。同时,由于存储和数据节点等外部配置环境的变化,极有可能导致大量业务数据转发规则改变,因此,值得我们考虑的关键问题就是数据转发层与系统扩展的兼容性问题。此外,在整个分发过程中,数据转发层为控制管理提供接口。从功能实现的角度来看,將分布式和正向功能模块有效融合,是数据转发层的首要任务,控制信息和原始数据的通信分发是由连接实现的。
2.2 数据计算层的开发
框架的预处理组件被设计为并行结构,并且需要通过配置文件,指定需要加载的模块。在初始化阶段,主要创建特定类对象,这些类是经过预先处理的,是框架通过反射技术创建的。在预处理组件时,框架属于特定的主题角色。在框架中,保持抽象观测器角色队列,并且每个特定实现类都对应实现接口。当初始化框架时,先创建由配置文件定义的模块对象,然后将其添加到队列中。当框架从数据准备组件获取数据时,所有的观察员都会被通知。当用户通过客户端向文件系统提交文件时,需要将数据块信息应用到节点,该节点包括要写入的每个节点信息。当接收到客户端应用时,数据块将应用数据写入预先分配好的节点,然后由节点采用机架感测策略选择算法。在默认情况下,文件系统的配置是采用系统本身默认配置的,所有的机器都在同一机架上。一个分布式计算框架,主要用键值对控制数据信息的输入和输出。键值对的定义类型可以是任何数据类型,如字符串、整数、字节或用户自定义的数据结构。数据处理时,该函数首先接收一组预先定义好的键值对。然后,根据用户自定义函数的功能,对输入数据进行处理操作,并生成一组中间键值对。接着,框架收敛到相同的值,这些值是系统在处理过程中产生的中间密钥值,然后将其传递给该函数。该函数接收中间密钥对的值和相应的值的集合。最后,根据用户定义的函数,对处理后的键值对进行一次性处理。
2.3 数据存储级的开发
在数据存储领域,首先使用预处理模块对原始数据进行预处理,得到新的原始数据,然后加工原始数据得到数据,为应用层进一步处理数据提供方便。模块采用不同的方式读取原始数据,并对它们进行初始处理,然后,把中间结果存储在接口上。该模块由数据和数据分析两个子模块组成,其中数据分析模块是建立在框架上的,框架提供了模块安装的串口,主要功能是对海量网络数据进行处理分析工作,并读取数据执行作业。本文所采用的数据导入框架用于海量网络数据的存储,该框架首先接收输入数据,然后采用分布式方式,将原始数据写入存储。同时,索引信息和统计数据也相应生成。需要说明的是,本节不修改对数据的任何处理,以确保数据以完整的方式进行存储。这样,我们不需要在框架中直接定义数据输入方式,但是需要在框架中定义一个数据接口用于接收输入的数据,这个接口决定了配置文件到底加载哪个数据输入模块,并通过反射创建指定模块的对象。当接收或读取记录时,数据输入模块会通知框架并将记录传递给框架。如果要将不同格式和不同内容的数据通过编写类的不同实现传递给框架,并且考虑到框架不提供数据写入功能,所以,在具体实现类中,我们需要决定,是否写入原始输入数据,是否通过框架调用数据以及是否准备组件完成特定的写入方法。
3 结 论
当前,对于海量数据的处理,国内外技术状态相对滞后,需求与技术之间的矛盾日益突出。设计并搭建一个基于Hadoop的海量数据的实现平台,是Hadoop技术在海量数据处理中的实际应用,可为面向海量数据处理的系统开发提供参考和借鉴。
参考文献:
[1] 黄素萍,葛萌.Hadoop平台在大数据处理中的应用研究 [J].现代计算机(专业版),2013(29):12-15.
[2] 朱颢东,冯嘉美,张志锋.基于Hadoop的大数据处理平台研究 [J].华中师范大学学报(自然科学版),2017,51(5):585-590.
[3] 宋均,祝林.基于云计算的海量数据处理平台设计与实现 [J].电讯技术,2012,52(4):566-570.
[4] 王茜,谢萍,王颖.基于Hadoop的同步相量数据处理平台性能分析 [J].电力信息与通信技术,2014,12(9):1-5.
作者简介:严亚宁(1978.11-),女,汉族,陕西西安人,教师,讲师,硕士研究生,研究方向:计算机软件开发、大数据分析、数字媒体技术等。