APP下载

基于Hadoop的大数据工程实践多层次教学设计

2021-02-27崔晓龙王小妹张德政

实验室研究与探索 2021年1期
关键词:组件架构用户

崔晓龙, 张 敏,b, 郭 茜,b, 王小妹, 张德政,b

(北京科技大学a.计算机与通信工程学院;b.材料领域知识工程北京市重点实验室,北京100083)

0 引 言

以Hadoop 为代表的大数据技术目前在数据处理的许多方面已经取得了非常突出的成绩,高校目前越来越多地开设大数据相关课程,以培养学生大数据处理方面的能力。然而大数据技术种类繁多且涉及的应用场景各异,形成了较为庞大的知识体系,很难在一门课程中涵盖所有的技术,故而如何设置大数据课程的教学内容,另外课程如何理顺各种技术之间的关系,使学生对技术的应用场景更加清晰,也是大数据课程的一大挑战[1]。

为了解决上述问题,让学生能够由浅入深的掌握大数据技术并且可以进一步自学相关技术,课程教学过程中需要设计合理的学习路径,面对庞大的大数据知识体系与多种大数据技术,在教学过程中采用多层次课程内容设计(基础层、提高层、综合层),同时针对大数据处理过程(数据采集、数据预处理、数据存储、数据分析、数据可视化)[2],选取各个过程中采用的典型技术进行重点讲述,并合理设计各层次知识点,按照知识点由易到难、涵盖基础操作、开发、运维、优化的原则,让学生最终能对各种技术组件有深刻的认识,在实际应用场景中,学生可根据应用需求进行技术选型并完成架构设计和开发工作[3]。

1 课程知识结构

1.1 大数据知识体系

大数据技术目前已经形成了较庞大的知识体系,如图1 所示。其中学生需要掌握较多的先修知识,如Java基础、Linux基础、数据库原理以及R或Python 语言编程等,故而大数据课程往往作为高年级本科生或研究生课程来讲授。目前主流大数据技术以Hadoop和Spark相关技术为代表,这两部分将作为课程的核心内容来讲授,对于Hadoop生态圈将重点讲授分布式文件系统HDFS、分布式数据库HBase 以及数据仓库工具Hive,对于Spark 生态圈,则需要讲授SparkRDD各种算子的使用、Spark Streaming、Spark SQL 和MLlib的使用,掌握这部分核心知识,能够让学生快速构建出大型的离线或实时的应用项目。另外,要完成完整的大数据分析处理应用,除了上述核心技术,数据采集、数据可视化等过程也是必不可少的,课程将选取相关典型的技术进行讲授,如数据采集中的Kafka、Flume和Sqoop等技术。通过向学生展示大数据知识体系,让学生对大数据技术有宏观的认识,在课程学习过程中,逐渐形成自己的学习路线和建立起自己的大数据知识体系[4]。

图1 大数据知识体系

1.2 多层次课程设计

大数据知识体系涉及的知识较多,由于学时数限制,将根据当前主流技术选择典型的进行讲解,同时为了让学生由浅入深的掌握多种技术,对每一种技术的讲解将划分为基础层、提高层和综合层,如表1 所示。基础层包含对技术组件的基本概念、适用场景、基础操作和编程开发,通过本部分的学习学生可掌握该组件的基本特点和使用,能开发单独的基于该组件的应用程序;提高层则会进一步讲解组件的设计架构,在掌握基本操作的基础上让学生体会安装运维的过程,同时会讲解影响平台和应用程序性能的参数,让学生能够在平台运行出现问题的时候发现错误,并能够对平台运行性能进行参数优化;综合层则在前面知识的基础上,讲授大数据典型应用场景及架构,结合真实案例让学生进行实训,完成大数据工程技术实践环节[5]。

表1 课程层次设计

2 多层次课程设计

大数据技术涵盖了从数据获取、数据存储、数据处理、数据可视化等多个方面,课程中将选择典型技术组件进行讲授,并设计多层次的学习路线,使学生能够由浅入深更加清晰地掌握该技术组件的使用方法及应用场合。

2.1 基础层——HDFS基本操作、编程开发

HDFS提供了多种访问方式,常用的方式有命令行接口、Java API,这些知识将是HDFS使用的基础。

2.1.1 命令行接口方式

命令行接口访问HDFS 的方式较为简单且固定,且非常类似Linux 系统命令,学生可按照表2 的操作命令完成实验以熟悉基本的操作命令[6]。

表2 HDFS命令行基本操作

2.1.2 Java API访问方式

对应于命令行接口的访问方式,HDFS 提供给用户Java API进行访问,同样可以完成文件目录创建、文件上传、下载、删除等操作,在应用开发时需要采取这种访问方式来实现。可让学生通过实现表2 中的基本操作来熟练掌握Java API的访问方式。

2.2 提高层——HDFS安装运维、平台调优

学生在掌握基本操作的基础上,可进一步掌握HDFS的安装运维排错以及平台的调优,这将对日后从事大数据技术运维相关工作奠定基础。在提高层,需要学生掌握安装过程各配置步骤的目的,进而能够准确判断出发生错误的位置并解决问题;同时,了解影响HDFS特性的配置参数,能够对平台参数进行优化配置。

2.2.1 安装

HDFS的安装将让学生掌握Linux 系统中软件的安装配置过程,采用分布式安装模式,主要过程有Linux 系统配置、Hadoop2.0 安装及配置、Hadoop 的启动[7]。

(1)Linux系统配置。Linux系统配置主要完成基础操作系统环境的配置,主要步骤如表3 所示。

表3 Linux系统配置项目

(2)Hadoop2.0 安装及配置。配置完Linux 系统环境后,将安装Hadoop2.0,具体步骤如表4 所示。

表4 Hadoop2.0 安装及配置项目

(3)Hadoop的启动。安装完成之后,Hadoop启动过程如表5 所示。

2.2.2 运维

HDFS运维将涉及的内容较多,课程中将主要讲述一些基本的错误及排错方法,同时将在实验指导过程中设置一些错误让学生去解决,并且熟练掌握一些常用命令的使用及信息的查看,常用管理命令如表6所示[6]。

表5 Hadoop的启动

表6 HDFS管理命令

2.2.3 调优

HDFS调优可从架构、参数等不同角度来进行,架构调优难度较高,需要从源码角度来解决HDFS 存在的一些缺点,如小文件存储问题,课程将主要讲述参数调优,即与HDFS性能相关的配置参数,学生将通过实验来体会不同的配置参数对存储的影响,进一步可绘制性能曲线让学生观察参数对性能的影响以及不同参数之间的相互影响。对HDFS 影响较大的参数有很多,表7 中列举了部分常用配置参数[8]。

表7 HDFS配置参数

2.3 综合层——场景应用架构设计

在学习了基础层和提高层的相关知识后,学生将对单一的大数据技术组件有了较好的理解,在实际生产环境中,往往是多种技术组件的组合使用,这就要求学生掌握面对不同的应用场景时如何进行技术选型和架构设计,课程中将提供多个不同的教学案例让学生进行实践,目前可提供的学习案例如表8 所示。通过这些真实的大数据项目,学生可以把之前学习的各种技术贯穿,学习大数据项目从数据采集、预处理、存储、分析处理到可视化的完整过程,理解整个架构的设计,并在实践过程中解决遇到的问题和难点[9-12]。

表8 教学案例

2.3.1 技术选型

大数据技术选型主要根据应用需求进行各种组件的组合、软件版本的选择,并让各种组件协调起来完成整体的功能,这就需要学生了解不同组件的特点以及适用场景,图2 展示了大数据生态圈从数据聚合层到高级分析应用层所提供的不同技术组件[13]。其中,大数据技术的一大挑战即多源异构数据,如数据库数据、日志数据、网页数据等,针对不同类型的数据,数据聚合层将提供不同的工具进行数据采集,如针对数据库的Sqoop、针对网页的爬虫Nutch 等,通过这些工具采集完数据后将数据存储到数据存储层的HDFS 中,这些数据即可供后续过程进行分析处理,数据处理层提供了基本的数据处理接口供用户编程使用,高层访问接口层则提供了许多易用的数据访问处理方式,如类SQL语句的Hive,最终在应用中由高级分析应用层所提供的工具进行数据挖掘以及数据可视化的工作。

图2 大数据生态圈技术组件

2.3.2 架构设计

架构设计将对典型的大数据架构进行讲述,如离线分析架构、流式架构、Lambda 架构、Kappa 架构等,然后由学生对课程提供的教学案例进行设计与实现,以搜狗搜索日志数据分析为例,该应用场景是非常典型的离线分析架构,其架构设计如图3 所示。

图3 搜狗日志分析架构图

日志数据将通过数据采集工具导入到汇聚服务器中,该过程将对数据质量进行监控并对有问题的数据进行数据预处理,然后将清洗后的数据加载到HDFS存储中,采用计算框架MapReduce 或Spark 可进行数据分析,也可采用Hive 提供的高层接口进行数据访问,此类分析是典型的数据仓库类业务架构,另外可通过数据挖掘技术如Mahout 等对存储在HDFS 中的数据进行分析处理,将挖掘结果保存在HBase 中,满足用户进行在线查询分析的需求。

2.3.3 实验设计

(1)数据预处理。搜狗搜索日志数据的数据格式为中间以“\t”分隔的文本类型,数据记录有500 万条,其字段含义如表9 所示。其中,用户ID是根据用户使用浏览器访问搜索引擎时的Cookie 信息自动赋值,即同一次使用浏览器输入的不同查询对应同一个用户ID。

表9 数据字段及含义

数据预处理过程将解决中文乱码、数据扩展以及数据过滤等问题,具体来说,中文乱码问题完成数据由GBK到UTF-8 的编码转换,数据扩展将访问时间字段拆分为年、月、日、小时4 个字段,数据过滤则过滤掉“用户ID”和“查询词”字段中字段值为空的记录。经过预处理后,将数据加载到HDFS中。

(2)基于Hive 构建数据仓库。在该阶段,基于Hive构建搜狗搜索日志数据仓库,将建立外部表sg_20111230 和根据日期字段建立分区表sg_partition,并根据两张表完成主题分析,分析主题如表10 所示。下面将以比较复杂的几个分析子需求进行描述。

①查询次数大于2 次的用户展示。以“用户UID分析”中的查询次数大于2 次的用户为例,其处理代码和结果展示如图4 所示(该结果为Hue 工具提供的可视化查询界面)。

表10 搜狗搜索日志数据分析需求

图4 搜狗日志数据分析示例

② 点击次数与Rank 之间的关系分析。查询Rank在10 以内的点击次数占比,过程如下:

A:select count(*)from sg_20111230 where rank <11;

B:select count(*)from sg_20111230;

A查询表示数据中Rank 小于11 次的记录条数,B查询表示数据总条数,获取A 和B 的结果后,通过计算A/B即可得到分析结果。学生可以观察到,用户大多数只访问位于搜索结果第一页(即Rank 在10 以内的)的页面,这种用户行为符合大多数搜索引擎使用者的使用习惯,即最常浏览的页面位于搜索结果的前几个。

③直接输入URL作为查询词的比例。直接输入URL查询可通过模糊查询得出,然后在直接输入URL的查询中,访问URL 的总数就是用户输入URL 查询然后访问的数量,分析过程如下:

A:select count(*)from sg_20111230 where keyword like‘%www%’;

B:select SUM(IF(instr(url,keyword)>0,1,0))from(select * from sg_20111230 where keyword like‘%www%’)a;

A查询表示关键字字段中包含“www”的记录条数,B查询表示URL 包含keyword 的查询结果的记录条数,获取A和B 的结果后,通过计算B/A 即可得到分析结果,从这个比例可以看出,很大一部分用户在借助搜索引擎查找时,往往由于不能记住全部的网址,这时用户会对部分URL进行查找,以期找到想要浏览的网页。基于此分析在搜索引擎处理此类查询时,可考虑将包含该查询关键字的完整URL反馈给用户,往往在很大概率上符合用户的查询请求。

3 结 语

通过在大数据工程实践课程中采用多层次教学设计,将厘清大数据各种技术的学习路线,由浅入深、由易到难,让学生可以更好地有针对性地进行学习,同时以实际工程案例为背景作为综合层的学习内容,逼真地模拟了现实大数据分析场景,更加容易激发学生的学习兴趣,学生在“分析问题-实现方案-解决问题”的过程中提高了“解决复杂工程问题”的能力[14]。

猜你喜欢

组件架构用户
基于FPGA的RNN硬件加速架构
无人机智能巡检在光伏电站组件诊断中的应用
功能架构在电子电气架构开发中的应用和实践
新型碎边剪刀盘组件
U盾外壳组件注塑模具设计
基于云服务的图书馆IT架构
桥梁组件搭配分析
关注用户
关注用户
关注用户