大数据技术架构“课程思政”教学案例 ——分布式数据库HBase应用
日期:2025-04-03  作者:陈亮   来源:  浏览量:215

  

一、基本信息表

教师姓名

(负责人)

陈亮

职称

讲师

课程团队成员姓名

金玮、张湘怡、苏琳

学院

高等职业技术学院

系(部)

人工智能技术系

课程名称

大数据技术架构

课程代码

[52018CC151]

学时

64

学分

4

课程类型

□通识必修课

□通识选修课

□学科基础必修课

☑专业必修课

□专业选修课

□其他

授课对象

大数据技术专业大二

 

二、教学目标与学情分析

(一)学情分析

(1)课程授课对象为大数据技术专业专科二年级学生,授课学期为大二上学期。学生通过大一学年的学习,已经掌握了Python语言、数据库、Linux操作系统等前修基础课程,但是学生并没有使用大数据相关平台和技术进行数据处理。本课程是大数据技术专业的核心专业课,主要介绍Hadoop生态圈相关技术和应用,是后续大数据存储和分析处理实践等相关课程的基础。

(2)高职学生的特点是思维活跃,喜欢动手实践,课堂氛围好,互动性强,善于接受新事物。所以需要利用学生特点有针对性的进行课程设计及案例挑选,提高学生学习兴趣和课堂参与度。

(3)学生经过大一学年的学习,多门课程采用混合式教学方法,学生能够熟练地运用信息化平台。

(4)现阶段学生尚处于世界观、人生观和价值观形成的关键时期,对新兴事物兴趣度高,鉴别能力不强但可塑性强,因此,爱国情怀和职业素养等价值观念需要在这一阶段进行有效引导。

(二)教学目标

1、知识与能力目标

【知识目标】

了解HBase的数据模型。

掌握HBase基本操作。

能够应用HBase完成数据模型的建立和分析。

【能力目标】

培养学生自主学习和探索的能力。

培养学生分析问题、解决问题的能力。

2、思政教学目标

【思政目标】

培养学生的爱国主义精神和文化自信。

宣传法制教育、数据安全的重要性。

培养学生的职业素养和工匠精神。

三、教学内容设计

(一)教学重点与难点

1、教学重点

掌握HBase基本操作。

通过案例应用HBase完成数据模型的建立和分析。

2、教学难点

如何通过案例让学生更好的应用HBase完成数据模型的建立和分析。

(二)课程思政元素

(1)培养学生的爱国主义精神和文化自信。

通过CCTV视频纪录片《大数据时代》,让学生了解大数据行业的发展以及我们国家面临的发展机遇和挑战。通过对我国在大数据领域取得的成果来增强学生的民族自豪感,激发学生的爱国主义精神,提升学生的民族文化自信。

(2)宣传法制教育、数据安全的重要性。

通过介绍数据库隐私数据泄露的安全事件,宣传法制教育,强调在目前的时代数据安全的重要性。

(3)培养学生的职业素养和工匠精神。

通过知识验证的探索方式来修改HBase ApiJava代码。修改过程中强调Java代码编程规范,通过这个过程培养学生的职业素养和工匠精神。

(三)教学内容设计

本次课采用翻转课堂,线上线下混合式教学方式,课前通过让学生观看【大数据时代】纪录片视频进行分享的方式让学生了解我国在大数据领域取得的成果,并来增强学生的民族自豪感,激发学生的爱国主义精神,提升学生的民族文化自信。课中讲解知识点的同时通过真实的数据库隐私数据泄露的安全事件,宣传法制教育,强调在目前的时代数据安全的重要性。在课中和课后具体编写代码过程中强调代码编程规范,培养学生的职业素养和工匠精神。具体设计如下图所示:

教学内容包括:

掌握HBase工作机制与体系结构。

掌握HBase的数据结构、数据存储管理方式。

掌握HBase表及其管理操作。 掌握数据的插入、删除、查询等操作。

掌握如何通过Shell命令进行HBase管理。

利用“HBase安装与配置”文档安装、配置HBase。利用“HBASE 编程实践”文档进行课堂实践。

利用HBase帮助文档查阅HBase的开发技术。

四、教学方法与手段

教学内容

教学方法与手段

思政融入

课程引入

课前通过观看CCTV视频纪录片《大数据时代》,让学生了解大数据行业的发展以及我们国家面临的发展机遇和挑战。通过讲授教学法讲解我国目前取得的相关成就和成果,从而增强学生的民族自豪感,激发学生的爱国主义精神,提升学生的民族文化自信。通过自主学习法,让学生回答课前留的问题,从而引出在大数据领域关系型数据库和非关系型数据库的区别。

爱国主义精神、文化自信。

 

HBase数据模型和基本操作。

教师通过案例教学法来讲解HBase基本操作:启动HadoopHBaseHBase中创建表;HBase数据库基本操作。讲解的过程中引入数据库泄露的事件,宣传法制教育,强调在目前的时代数据安全的重要性。

法律意识、数据安全。

应用HBase完成数据模型的建立和分析

基于真实场景的数据,通过演示教学法采用HBase   shellHBase Java API两种方式进行编程实践。通过知识验证的探究教学法来修改HBase ApiJava代码。修改过程中强调Java代码编程规范,通过这个过程培养学生的职业素养和工匠精神。

职业素养、工匠精神。

 

五、教学过程

【课前】

课前安排学生观看CCTV视频纪录片《大数据时代》,提前思考如下问题:

大数据时代,目前世界发展到了什么程度,我国目前在该领域取得了哪些成就?

大数据时代,传统关系型数据库能否满足海量数据的存储和计算需求?

【课程导入】 讲授教学法 自主学习法 10分钟

通过让学生分享的方式来解答大数据目前的发展趋势和我国目前在该领域取得的成就。

微信图片_20231024082421

通过学生自主学习和分享我国目前在大数据领域取得的相关成就和成果,从而增强学生的民族自豪感,激发学生的爱国主义精神,提升学生的民族文化自信。

通过对课前问题2的解答引出关系型数据库和非关系型数据库的区别。

下方是关系型数据库和非关系型数据库的区别举例。

【课程讲授】 讲授、案例教学法 20分钟

HBase知识点

HBase是GoogleBigTable的开源。

讲授:Bigtable

      BigTable是一个分布式存储系统。

      利用谷歌提出的MapReduce分布式并行计算模型来处理海量数据,使用谷歌分布式文件系统GFS作为底层数据存储,采用Chubby提供协同服务管理,可以扩展到PB级别的数据和上千台机器,具备广泛应用性、可扩展性、高性能和高可用性等特点。

      谷歌的许多项目都存储在BigTable中,包括搜索、地图、财经、打印、社交网站Orkut、视频共享网站YouTube和博客网站Blogger

讲授:HBase

      HBase是一个高可靠、高性能、面向列、可伸缩的分布式数据库。

      是谷歌BigTable的开源,主要用来存储非结构化和半结构化的松散数据。

      HBase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表。

      HBase利用Hadoop MapReduce来处理HBase中的海量数据,实现高性能计算;利用ZooKeeper作为协同服务,实现稳定服务和失败恢复;

       使用HDFS作为高可靠的底层存储,利用廉价机群提供海量数据存储能力。

当然,HBase也可以直接使用本地文件系统而不是HDFS作为底层数据存储方式。不过,为了提高数据可靠性和系统健壮性,大会HBase处理大数据等功能,一般都使用HDFS作为HBase的底层数据存储。

此外,为了方便在HBase上进行数据处理,SqoopHBase提供高效、便捷的关系型数据库系统数据导入功能,PigHiveHBase提供了高层语言支持。

互动:HBase与传统关系型数据库

互动提问:关系数据库已经流行很多年,并且Hadoop已经有了HDFSMapReduce,为什么需要HBase?

答:Hadoop可以很好地解决大规模数据的离线批量处理问题,但是,受限于Hadoop MapReduce编程框架的高延迟数据处理机制,使得Hadoop无法满足大规模数据实时处理应用的需求。

HDFS面向批量访问模式,不是随机访问模式。

传统的通用关系型数据库无法应对在数据规模剧增时导致的系统扩展性和性能问题(分库分表也不能很好解决)。

传统关系数据库在数据结构变化时一般需要停机维护;空列浪费存储空间。

因此,业界出现了一类面向半结构化数据存储和处理的高可扩展、低写入/查询延迟的系统,例如,键值数据库、文档数据库和列族数据库(如BigTableHBase等)。

HBase已经成功应用于互联网服务领域和传统行业的众多在线式数据分析处理系统中。

HBase与传统的关系数据库的区别主要体现在以下几个方面:

1)数据类型:关系数据库采用关系模型,具有丰富的数据类型和存储方式,HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串

2)数据操作:关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接。HBase操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,因为HBase在设计上就避免了复杂的表和表之间的关系

3)存储模式:关系数据库是基于行模式存储的。HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的

4)数据索引:关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。HBase只有一个索引——行键,通过巧妙的设计,HBase中的所有访问方法,或者通过行键访问,或者通过行键扫描,从而使得整个系统不会慢下来

5)数据维护:在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留

6)可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBaseBigTable这些分布式数据库就是为了实现灵活的水平扩展而开发的,能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩

讲授:HBase数据模型

数据泄露事例:

通过介绍数据库隐私数据泄露的安全事件,宣传法制教育,强调在目前的时代数据安全的重要性。

【实践教学】 讲授、演示、实践、互动教学方法 50分钟

HBase shell

演示:启动HadoopHBase

HBase建表插入数据等操作,课堂案例用案例,先用简单案例,再用疫情数据案例。

回忆HBase启动:

start-dfs.sh

start-hbase.sh

hbase shell

exit

stop-hbase.sh

stop-dfs.sh

演示:HBase中创建表

创建完“student”表后,可通过describe命令查看“student”表的基本信息。命令执行截图如下:

演示:HBase数据库基本操作

本小节主要介绍HBase的增、删、改、查操作。在添加数据时,HBase会自动为添加的数据添加一个时间戳,故在需要修改数据时,只需直接添加数据,HBase即会生成一个新的版本,从而完成“改”操作,旧的版本依旧保留,系统会定时回收垃圾数据,只留下最新的几个版本,保存的版本数可以在创建表的时候指定。

添加数据

删除数据

查看数据

实践:疫情数据开发案例

image-20221013183707777

image-20221013183729680

互动:其他数据的处理方式

互动提问:如果是考虑中国的所有省所有城市的疫情数据呢?Hbase表结构是什么样子?怎么插入数据?

学生分组讨论,自行思考解决办法。

微信图片_20231024082432

微信图片_20231010081232

答:create 'COVID-19_China','provinceEnglishName','province_zipCode','cityEnglishName','city_zipCode','updateDate',{NAME=>'city_confirmedCount',VERSIONS=>5},{NAME=>'city_curedCount',VERSIONS=>5}

数据插入繁琐,一般采用编程手段插入数据。

演示:退出HBase数据库表操作

最后退出数据库操作,输入exit命令即可退出,注意:这里退出HBase数据库是退出对数据库表的操作,而不是停止启动HBase数据库后台运行。

HBase Java API编程实践

实践:HBase Java API编程示例

启动进入Eclipse以后的程序开发界面如下图所示。



点击界面顶部的“File”菜单,在弹出的子菜单中选择“New”,再选择子菜单中的“Java Project”。这时会弹出一个Java工程创建对话框(如下图所示),在“Project name”文本框中输入“HBaseExample”,在“JRE”选项卡中选中第2项“Use a project specific JRE”,然后点击界面底部的“Next”按钮。


image-20221013180709137

在弹出的界面中,用鼠标点击“Libraries”选项卡,然后,点击界面右侧的“Add External JARs…”按钮。在弹出的“JAR Selection”界面中(如下图所示),进入到“/usr/local/hbase/lib”目录,选中该目录下的所有jar文件(注意,不要选中client-facing-thirdpartyrubyshaded-clientszkcli这四个目录),然后,点击界面底部的“OK”按钮。


image-20221013180900730

在界面(如下图所示)左侧的“HBaseExample”工程名称上单击鼠标右键,在弹出的菜单中选择“New”,再在弹出的子菜单中选择“Class”。


image-20221013181142919

在弹出的“New Java Class”对话框(如下图所示)中,在“Name”文本框中输入“ExampleForHBase”,然后,点击界面底部的“Finish”按钮。


image-20221013181505222

在代码窗口中(如下图所示),ExampleForHBase.java代码内容输入。


image-20221013181750418

在开始运行程序之前,需要启动HDFSHBase。然后,如下图所示,点击界面中的运行图标右侧的“倒三角”,在弹出的菜单中选择“Run As”,再在弹出的菜单中点击“1 Java Application”,开始运行程序。


image-20221013181838817

这时,可以到HBase Shell交互式环境中,使用如下命令查看student表是否创建成功:

hbase> list

该命令执行效果如下图所示:

再在HBase Shell交互式环境中,使用如下命令查看student表中的数据:

hbase> scan ‘student

该命令执行效果如下图所示:


image-20221013182043298

讲授:代码规范

编写 Java 程序时,应注意以下几点:

大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello hello 是不同的。

类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass

方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。

源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。

主方法入口:所有的 Java 程序由 public static void main(String[] args) 方法开始执行。

注释

      单行注释,用的最多的一种注释。

 //  适用于注释一行

      多行注释,通常用于解释一段代码的。

/*多行注释    
*
适用于同时注释很多行
*/

最后,强调一下,注释对于一个程序、一个项目来讲,非常的重要,我们要习惯添加注释。

在企业真实场景中,上述编码规范都是需要严格执行的。

通过上述实践过程和规范讲解潜移默化的培养学生的职业素养和工匠精神。

【课后】 互动教学法 10分钟

互动:布置课后任务

      使用API编程完成疫情数据的插入,思考可否实现多版本?

六、教学评价

1)思政元素融入到课程考核中,采用课前视频观看,课上分享,数据泄露新闻事件,分组讨论等活动潜移默化的将思政元素融入其中。引导学生自主学习和感受,学生课堂效果良好,取得不错的效果。

2)学生参与度高,课堂活跃,回答问题的质量较好,学习积极性被调动起来;

3)由于学生基础存在差异,分组讨论和分享的时候有少部分学生参与度不够,没有从被动的学习变成主动的学习。

七、思政教学反思

(一)思政教学的意义与价值

本次课程设计主要培养学生的民族自豪感,激发学生的爱国主义精神,提升学生的民族文化自信。宣传法制教育、数据安全的重要性。培养学生的职业素养和工匠精神。将相关技术知识点与思政元素全面有机融合,在学生技术的同时潜移默化的将思政元素融入其中。从而实现学生的自我价值塑造和能力提升。

(二)思政教学的成效和特色

本课程将思政教育与知识技能教育进行了有机的融合,效果良好。

(1)潜移默化的将思政元素融入到课程设计中:课程设计采用翻转课堂的方式,线上线下混合式教学,通过让学生分享、分组讨论、回答问题等多种方式让学生参与到课程中来,通过这种方式让学生刚好的理解要掌握的内容,特别是思政元素内容。

(2)潜移默化的将思政元素融入到课程内容中:课程中通过观看视频和分享的方式让学生了解我国在大数据领域取得的成果来增强学生的民族自豪感,激发学生的爱国主义精神,提升学生的民族文化自信。通过真实的数据库隐私数据泄露的安全事件,宣传法制教育,强调在目前的时代数据安全的重要性。在具体编写代码过程中强调代码编程规范,通过这个过程培养学生的职业素养和工匠精神。

(三)思政教学的改进措施

进一步挖掘思政内容,丰富各部分思政元素融入方式,精心设计,让思政元素的融入更巧妙,更自然。切实的做到潜移默化的将思政元素融入到课堂中来,避免生硬的思政元素插入。

八、教学资源拓展

1)授课PPT课件。

2Hadoop生态系统组件安装与配置指导手册。

3)课程视频。

4)课程项目源代码及报告。

5)课程案例数据集。

6)满足不同应用开发要求的系统镜像。

7)【央视】《大数据时代》纪录片:https://www.bilibili.com/video/BV1px411X7RZ/?spm_id_from=333.337.search-card.all.click&vd_source=537fff9aa49eb0a34d69f8f4ea0e0579

8)《大数据技术原理与应用(3)》,林子雨,人民邮电出版社,ISBN:978-7-115-54405-620211月第3版。

九、其他

 


收藏本页