基于Hadoop的校园导览大数据分析平台构建及应用

2019-01-06 03:36吴婷胡必波谭泽荣肖健
无线互联科技 2019年21期
关键词:分布式计算数据流日志

吴婷 胡必波 谭泽荣 肖健

摘   要:基于Serverless无服务器架构搭建的知晓云校园导览小程序,提出了一种Hadoop和Spark统一部署的校园导览大数据分析设计方案,并对构建该平台的关键技术和步骤进行说明。实践验证,相对以往单一Hadoop平台,文章所构建的混合平台具有计算资源按需伸缩、集群利用率高、避免数据跨集群迁移等优势,更适应企业实际使用。

关鍵词:Hadoop;Spark分布式计算;批处理;流计算

微信小程序是一种轻量级的APP,不需要下载、安装即可使用[1]。它是一个基于去中心化而存在的平台,没有聚合的入口,可以通过搜索、社交分享、扫一扫、微信支付等多种方式进入[2]。

Hadoop是实现了分布并行处理任务的系统框架,主要由Hadoop分布式文件系统(Hadoop Distributed File System,HDFS),MapReduce和Hbase等组成,框架的核心设计是HDFS和MapReduce[3],具有成本低、高性能计算、高扩展性、高容错性等突出的优势。Spark是基于内存计算的大数据并行计算框架,主要由Spark Core,Spark Streaming等组成,具有易用性、通用性、运行速度快、运行模式多样等突出优势。

为加快校园数字化进程以及方便师生或周边人士对校园地理环境进行了解,本团队开发了知晓云校园导览微信小程序,服务内容涵盖地理位置、学习与生活导览,在给用户带来方便的同时,也产生了很多用户访问量,并积累了很多用户数据。基于Hadoop构建校园导览服务大数据分析处理平台,可以采集、分析和展示导览数据,深入了解用户,更好地提供校园导览服务。

1    技术原理

1.1  分布式存储

Hadoop HDFS是对Google GFS的开源实现,支持以流式数据访问模式来存取超大文件,可活动于廉价服务器集群上。HDFS采用主从结构模型[4],一个HDFS集群包括一个NameNode和若干DataNode。NameNode作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。DataNode作为单独节点运行,负责处理文件系统客户端的读/写请求,在NameNode统一调度下进行数据块的创建、删除和复制等操作。

1.2  分布式计算

Hadoop MapReduce是对Google MapReduce的开源实现,支持在HDFS上运行分布式计算模型[5],核心思想是“分而治之,迭代汇总”。MapReduce通过Map运行的任务读取HDFS中的数据文件,Map函数将小数据集进一步解析成一批对,输入Map函数中进行处理。每一个输入的会输出一批是计算的中间结果,记为List(),直接输出到本地Linux文件中。Reduce从本地Linux文件中接收Map任务输出,归约处理后写入到HDFS,Reduce函数输入的中间结果中的List(v2)表示是一批属于同一个k2的value。MapReduce核心过程是Shuffle,是指从Map产生的输出数据开始,经过分区、排序、合并等一系列处理操作,最终成为Reduce的直接输入数据的整个过程。

2    系统设计

知晓云是一款基于Serverless无服务器架构的小程序开发工具,在知晓云平台开发校园导览微信小程序,可以免去小程序开发中服务器搭建、域名备案、数据接口实现等繁琐流程,一站式解决校园场馆室内外地图导览、定位的业务系统搭建难题,同时支持小程序、网页和APP多平台互动[6]。知晓云校园导览系统可分为小程序客户端、管理后端(知晓云服务端)、第三方支付等3层,作为大数据分析处理平台的数据来源。

Hadoop虽然已成为大数据技术事实标准,但其本身还存在表达能力有限、磁盘输入/输出(Input/Output,IO)开销大、延迟高等诸多缺陷,最主要的缺陷是MapReduce计算模型延迟过高,无法胜任实时、快速计算的需求,只适应离线批处理的应用场景。Spark分布式计算借鉴了Hadoop MapReduce的优点,将计算数据、中间结果都存储在内存中,大大减少了I/O开销,很好地解决了MapReduce所面临的问题,更适合迭代运算较多的数据挖掘与机器学习运算。

尽管Spark相对于Hadoop而言有较大优势,但Spark并不能完全替代Hadoop,主要用于替代Hadoop中的MapReduce计算模型。Spark的设计遵循“一个软件栈满足不同应用场景”的理念,例如Spark Core应对复杂批处理数据处理(时间跨度数十分钟到数小时之间)、Spark SQL应对历史数据的交互式查询(时间跨度数十秒到数分钟之间)、Spark Streaming应对实时数据流的数据处理(时间跨度在数百毫秒到数秒之间)等。

一方面,Hadoop生态体系中一些组件所实现的功能,目前Spark还是无法取代。另一方面,基于现有的Hadoop组件开发,完全转移到Spark上需要一定的成本。考虑到Hadoop MapReduce,Storm和Spark等都可以运行在资源框架之上,在资源协调者(Yet Another Resource Negotiator,YARN)之上进行统一部署可以将不同计算框架统一运行在YARN中,构建校园导览大数据分析平台。

3    关键步骤

3.1  Hadoop分布式集群搭建

在Hadoop中主要使用深度优先搜索(Depth-First-Search,DFS)进程和另一种YARN进程,需要搭建DFS集群和YARN集群。实现实时流数据计算需要先搭建Zookeeper协调服务集群,解决分布式应用一致性问题,再搭建Kafka集群,实现实时数据流缓存,最后搭建Spark集群,实现数据流分析与处理。

3.2  數据采集层

本层主要工作是通过Flume,Sqoop,爬虫抓取(外部数据)等采集样本数据至HDFS中。以Flume为例,使用Flume日志收集系统监控小程序页面日志文件,一旦日志文件发生变化,Flume系统就会将变化的数据继续写进HDFS中进行存储。source输入源完成对日志数据的收集,分成Transition和Event送入到channel之中;channel设置管道主要提供队列功能,对source中提供的数据进行简单的缓存;sink输出源取出channel中的数据写入HDFS。

3.3  离线数据分析层

本层主要工作是将数据采集模块收集到的样本数据提取出来,进行数据清洗和解析工作,并把处理后的结果存入关系型数据库中。第一步,提取存储在HDFS中的数据,通过自定义的数据仓库技术(Extract Transform Load,ETL)文件将数据按照定义好的数据仓库模型进行格式化操作,并将清洗后的数据导出到Hadoop的Hbase中或者映射成Hive表。第二步,从Hbase/Hive中提取出上一步整理完的数据,然后将数据经过自定义编写的MapReduce数据清洗或Hive数据分析进行数据解析计算,最后将分析后的数据Sqoop从HDFS迁移转换到MySQL数据库中。

3.4  实时流数据分析模块

本层主要工作是将通过数据采集模块收集到的样本数据提取出来,经过实时分析处理获得有价值的信息。第一步,采集样本数据到Kafka(生产者—消费者设计模式)进行缓存。第二步,Spark Streaming接收Kafka发来的实时数据,实时地进行分析计算,并反馈实时结果。经过Spark Streaming处理后的数据,可视情况进行存储,以便之后再进行分析计算,如果场景时效性要求较高,处理之后的数据可以直接丢弃。

3.5  数据展示模块

本层主要工作是设计平台展示页面样式并进行编写,将经过解析过程后的日志数据最终结果在平台页面上进行图表展示。离线数据流可使用典型的Web框架把MySQL数据库中的数据通过ECharts或HighCharts等可视化工具以曲线和分布图的形式展现出来。与离线数据流不同的是,实时数据流无需用户主动发出查询,可以主动将实时结果推送给用户。

4    结语

经实践使用验证,采用Hadoop和Spark的统一部署方案实现了计算资源按需伸缩,不同负载应用混搭不仅提高了集群利用率,而且通过共享底层存储避免数据跨集群迁移,在企业实际应用中将是一种比较现实合理的选择。当然,该大数据分析平台也存在不足,例如Spark Streaming无法实现毫秒级的流计算等,有兴趣的读者可进一步完善,甚至可以结合OpenStack等云管理平台进一步将其升级为私有云平台。

[参考文献[

[1]刘刚.小程序实战视频课[M].北京:人民邮电出版社,2018.

[2]刘刚.微信小程序开发图解案例教程[M].北京:人民邮电出版社,2019.

[3]温春水.从零开始学Hadoop大数据分析[M].北京:机械工业出版社,2019.

[4]贠佩,晁玉蓉,樊华,等.基于Hadoop的数据分析系统设计[J].数字技术与应用,2019(3):180-182.

[5]邹立民.基于Hadoop的分布式数据存储系统应用的研究[D].沈阳:沈阳工业大学,2018.

[6]刘畅.基于无服务器架构的边缘AI计算平台[J].信息通信技术,2018(10):45-49.

Construction and application of big data analysis platform for campus guide based on Hadoop

Wu Ting, Hu Bibo, Tan Zerong, Xiao Jian

(Guangzhou College of Technology and Business, Guangzhou 510850, China)

Abstract:Based on “Serverless” serverless architecture of the known cloud campus navigation Mini Programs, this paper proposes a unified Hadoop and Spark campus navigation big data analysis and design scheme, and explains the key technologies and steps to build the platform. Practice verifies that compared with the previous single Hadoop platform, the hybrid platform constructed in this paper has the advantages of scaling computing resources on demand, high utilization of clusters, avoiding data migration across clusters, and so on, which is more suitable for the actual use of enterprises.

Key words:Hadoop; Spark distributed computing; batch processing; flow calculation

猜你喜欢
分布式计算数据流日志
一名老党员的工作日志
扶贫日志
一种提高TCP与UDP数据流公平性的拥塞控制机制
游学日志
云计算中MapReduce分布式并行处理框架的研究与搭建
面向异构分布式计算环境的并行任务调度优化方法
基于数据流聚类的多目标跟踪算法
北医三院 数据流疏通就诊量
一种基于粗集和SVM的Web日志挖掘模型