APP下载

基于Hadoop的海量数据存储平台设计

2022-11-21周晴红

无线互联科技 2022年17期
关键词:海量模块信息

周晴红

(苏州健雄职业技术学院,江苏 太仓 215400)

0 引言

海量数据存储平台的设计与运行维护难点在于:(1)数据量过大,数据应用过程中任何情况都有可能发生;(2)对构成平台的软硬件的要求极高,导致系统资源占用率高,稍有不慎便可能导致平台崩塌;(3)对处理方法和技巧的要求同样较高。考虑到上述因素,海量数据存储平台必须具备如下功能:其一,对多种类型的数据进行全过程正常处理,不能发生“前面正常处理,进展至某个环节突然无法继续处理,造成程序终止运行”的情况。其二,需要选用优秀的数据库工具、编写优良的程序代码,能够对海量数据进行分区操作。若要支持上述功能的实现,必须搭配性能良好的硬件。在此基础上,还应建立广泛的索引功能、缓存机制,保证虚拟内存强大以及能够对数据进行分批处理。

1 Hadoop框架简析

1.1 基于Hadoop的海量数据存储平台设计原理

1.1.1 Hadoop的特点

Hadoop全称Apache Hadoop,是一种由Apache基金会开发的分布式系统基础架构[1]。这种架构模式的最大特点在于:使用者无须掌握架构底层的搭建细节,只需根据应用层的功能指引便可以开展分布式程序的开发工作。在此基础上,通过充分利用集群的优势,实现对数据信息的高速运转和存储。基于Hadoop进行程序开发必须建立在对应的分布式文件系统(Hadoop Distributed File System,HDFS)之上。这种分布式文件系统的容错性极高,可以搭载在价格低廉的硬件之上。不仅如此,HDFS系统还能够提供较高的数据吞吐量,用以支持访问应用程序。综合而言,HDFS系统非常适合具有超大数据集的应用程序,是设计海量数据存储平台的最佳框架之一。现阶段,HDFS系统已经在很大程度上放宽了对可移植操作系统接口(Portable Operating System Interface of UNIX,POSIX)的要求,并可以通过“数据流”的形式对文件系统中的数据进行访问[2]。

1.1.2 Hadoop开发的便利性

Hadoop框架最核心的设计部分除了HDFS系统之外,还包含MapReduce。MapReduce是一种编程模型,主要用于规模超过1TB的大规模数据集的并行运算,以“映射”和“规约”为主要概念。这种模型的便利性在于编程人员在无须掌握分布式并行编程规则的情况下,只需按照指引,便可以将自己编写的程序在分布式系统上运行,主要实现方法为:在当前使用的编程软件中指定一个Map映射函数,之后将一组键值按照映射规律,转换成一组新的键值对。在此基础上,可以指定并发的Reduce规约函数,最终保证所有映射的键值对都能够共享相同的键组。基于HDFS系统以及MapReduce编程模型设计的海量数据存储平台中,前者会为海量数据提供优质存储功能,后者主要为海量数据提供计算功能。

1.2 核心架构

1.2.1 Hadoop的优点

(1)Hadoop能够对海量数据进行分布式处理,过程可靠性和处理效率均极高。此外,Hadoop还可以通过可伸缩的方式实现对数据的处理。

(2)Hadoop的可靠性体现在:“数据计算或存储过程会受多种原因的影响而失败”均在系统的“假设”之内。基于这种考量,Hadoop会自动开展对多个工作数据副本的维护作业,在真正出现“数据操作失败”的情况下,系统依然能够确保对所有失败的数据节点进行重新分布处理。

(3)Hadoop的高效性体现在:系统整体能够进行并行工作,可大幅度加快对数据的处理速度。Hadoop的可伸缩性在于,最小能够处理KB规模的数据,最高能够处理PB量级的数据。有研究显示,Hadoop面向的对象是“社区服务”,即能够被任何人使用,成本较低。用户可根据自己的想法,选择Java(Hadoop自带)、C++等编程语言进行软件开发[3]。

1.2.2 Hadoop的核心架构

HDFS系统用于存储Hadoop集群中所有存储节点对应的文件。HDFS的上一层是上文提到的MapReduce引擎,主要由JobTrackers和TaskTrackers组成。HDFS类似于传统的分级文件系统,支持文件的创建、删除、移动、重命名等,操作过程几乎不具备任何难度。但HDFS的架构主要基于一组特定的节点完成构建。这种特性取决于HDFS本身的特点,优点在于只有一个NameNode节点,为HDFS的内部单元提供原数据相关服务,并为HDFS系统提供存储模块。缺点在于:由于NameNode的数量只有一个,一旦出现“单点失败”情况,便会导致整个HDFS系统的运行难以为继。存储在HDPS中的文件一般会被分成若干个模块。这些模块经过复制之后,会进入多个计算机的DataNode。这种架构与人们熟知的RAID架构存在极大的差异,主要特点为:模块一般设置为64 MB,具体的模块复制数量根据客户机创建文件时的具体需求而定。理论上,Name Node能够控制所有文件的操作,且HDFS内部的所有通信都是基于标准的TCP/IP协议而决定。

2 基于Hadoop的海量数据存储平台综合设计方法

2.1 海量数据存储平台的综合设计思路

基于Hadoop进行海量数据存储平台设计时,首先需要考虑平台的数据来源、针对相关数据进行存储时设计的时间、空间范围查询等因素[4]。以交通部门为例,若要针对某一种交通工具的运行线路、运行时间、乘客搭载量等数据进行收集与分析时,应该确保数据收集的稳定性以及准确性,数据来源的偏倚控制必须到位。具体的“数据来源的偏倚控制”过程如下。

(1)如图1所示,在城市某条公共交通沿线存在A,B,C 3路公共汽车,那么针对A路信息进行收集时,由于A,B,C 3路公共汽车在同一路段有数个停靠站以及经过的线路完全重合,故有可能出现下列情况:部分城市居民出行的线路区间恰好在3路公共汽车行驶、停靠重合的区间内,对这些居民而言,每次出行并不会定向选择3路公共汽车中具体的哪一路,而是会根据“哪一趟车先来”“当前车辆是否拥挤”等原因决定是否乘坐这一辆汽车。

图1 设计流程

(2)对上述情况下的数据信息进行收集分析时,应该设置一种特殊的算法,可行性方法为:针对这段重合线路区间,从始发站开始(注:此处提到的始发站是指“3路公共汽车停靠站重合区间的第一站,不是每一条线路的始发站”),到终末站(与上述“始发站”相同)之间所有上下车的乘客数量进行集中统计,之后编程程序处理指令“÷3”,得出的平均结果便是每一条公共汽车线路在此段区间内得到偏倚控制后的数据信息。

2.2 海量数据存储平台的架构形式

2.2.1 基于Hadoop的数据信息存储管理系统整体运行结构

基于上文所述的考量要素,得到的Hadoop数据信息存储管理系统的整体运行结构为:(1)存储业务处理层是海量数据存储平台的核心层。(2)该核心层共包含5个重要功能模块,分别为元数据管理模块、Hive数据加载模块、存储映射模块、查询处理模块、节点存储管理模块。其中,新建及删除数据全部集中在存储映射模块,数据查询对应的数据全部集中在查询处理模块。

HDFS目录的具体结构如下:

-/table-000

-/metadata

-/bucket-000

-/region-000

-/baock-000

-/region-001

-/bucket-001

-/region-000

-/region-001

-/table-001

数据存储业务处理层的主要功能在于可以将收集而来的原始数据进行定向转化,并根据预定的存储结构附加到数据库之中。经过优化处理之后,数据会在存储模块的作用下,周期性地重新组织成存储结构。在此基础上,查询处理模块会根据用户的需求,灵活地提供历史数据查询接口,以根据用户的需求,实现对历史数据的精确、高效率查询。

2.2.2 基于Hadoop的数据存储映射模块构建

根据上文所述可知,存储映射功能是Hadoop下海量数据存储的核心模块。主要建构思路为:根据数据信息自动采集系统收集而来的数据在时间、空间层面上的差异,进行分层存储。此外,为了提升数据访问调用的加载效率,需要进行快速文件布局、优质压缩处理,实现海量数据的分布式存储。

(1)数据存储模型原理。

该模块的主要功能是对数据对应的时间和空间信息进行精确定位。为了达到这一目的,需要设计一种新的数据存储模型,并能够将数据分为两个部分:核心数据和次要数据。基于Hadoop的数据信息定义结构的分项具体信息排布顺序如下:

①数据id,实际上是对所收集到的信息进行命名。要注意,具体命名完全由操作者本人决定。其中的道理类似于:人们在日常使用电脑工作时,可能会新建一个工作文档。这个文档的名字在建立的当下便可以立刻给出,也可以保持系统常规命名不变(如一个文档刚刚建立时,当前给出的系统名字就叫“新建-文本文档”),在日后的任何时刻自行决定更改后的名字。这里需要区分一个概念,即有些人的工作习惯非常好,在对文件(数据信息)进行命名的过程中,为了方便文件排放和后续查询具有更高的效率,会在总文件名上加上一些表示时间和空间的数据。比如按照月度排布的文件命名为“姓名+XX月工作任务表”。在此基础上,如果有必要区分工作人员所在的分公司,则需要进一步在文件名的前方加上“XXX分公司”。但这种人为的命名只是为了查询和统计方便,对系统的数据录入、存放、调取等均不会有任何便利性。

②在数据存储功能模块下,紧随的第2个信息记录数据为空间信息,英文简称为“loc”。

③第3个信息记录数据为时间信息,对应的英文单词为“time”。

上述3项数据即为海量数据存储功能中的核心统计数据,表明数据的名称、被记录在案时的空间和时间信息。在此基础上,还需根据统计要素额外设计一些具体但优先级相对落后的统计项。

在新冠疫情肆虐的当下,确保司机体温处于正常状态是一个重要的考量因素,故在3个核心数据之外,第4项可以设置成司机的姓名,第5项为司机对应车辆的车牌号,第6项为司机的体温。按照上述顺序,一辆公共汽车对应的数据信息每天收集一次并在海量数据库中存放。如果需要调用信息时,可以在数据管理平台中搜索关键词,按照当前关键词对应的顺序优先级完成信息的排布。比如规定体温在37℃以下为正常体温,达到38℃便意味着存在感冒发烧、患肺炎的可能性。在数据查询的过程中,可以将温度信息优先显示,并筛选出某一日体温在37℃以上的司机信息,即可进行定向追踪,可大幅度提高信息调取的效率。

(2)基于数据信息存储层次的精确索引设计。

由于所收集的数据信息量极大,很多时候围绕某个关键字进行信息检索、筛选时,可能需要较多的时间。为了提高处理和搜索的效率,需进一步划分海量数据存储平台的数据信息存储层次。

这种存储思路与上文所述的存储思路的区别在于:上文所述的存储思路没有脱离“数据信息整体存储”的框架,即获取一个数据信息之后,围绕该信息中的多个可能存在的子信息设定排布顺序。完成整理之后储存在海量数据平台之中。在此种情况下,进行数据查阅及调取工作时,系统实际上无法对信息中的某个子信息进行针对性的查询,而是需要按照一定的顺序,对所有信息进行全面检索,必定费时费力。

划分存储层次之后,可围绕位置(空间)、时间信息进行分区存储。这种存储分区基于Hadoop下InputFormar接口下的getSplits方法加以实现。将原本粗大的数据集基于空间、时间特性分为多个较小规模的数据集之后,每个数据集都可以进行独立的查询、加载、优化。基于此,实际解决的问题为:海量数据存储平台的数据写入和存储优化时间较长的问题已经不复存在;针对小规模数据集进行扫描时,定位的精准程度也会随之提升。

3 结语

综上所述,基于Hadoop的海量数据存储平台具备的最大优势在于数据信息的存储和读取效率会基于数据信息的存储区间、存储层级方面的差异而大幅度提升。此外,在进行设计时,无需考虑Hadoop框架的底层结构,只需根据应用层的功能指引便可以实现平台的开发,最终效果一般可以达到预期。

猜你喜欢

海量模块信息
一种傅里叶域海量数据高速谱聚类方法
28通道收发处理模块设计
“选修3—3”模块的复习备考
海量快递垃圾正在“围城”——“绿色快递”势在必行
基于文件系统的分布式海量空间数据高效存储与组织研究
集成水空中冷器的进气模块
健康信息
健康信息(九则)