林子雨编著《大数据技术原理与应用》教师备课指南

工信部”全国云计算及大数据应用技术人才培训考试项目”唯一指定大数据教材

全国多所高校大数据课程选用本教材

扫一扫手机访问本主页

1、本科生阶段开课,还是研究生阶段开课?

随着大数据技术的不断普及,社会对大数据人才的需求日益旺盛,在未来几年高校本科教学必将开设入门级大数据课程,满足社会发展对高校人才培养工作提出的新要求。因此,本科生阶段(大三下学期或者大四上学期)开设大数据课程,是今后高校本科教学改革的一个趋势。林子雨编著《大数据技术原理与应用》教材为入门级大数据教材,把庞杂高深的大数据知识体系进行系统梳理,化繁为简,去粗取精,大大降低了教师授课和学生学习的门槛,非常适合高校本科教学。

由于目前很多高校本科阶段尚未开设大数据课程,因此,《大数据技术原理与应用》教材用于研究生阶段(研究生一年级)的教学,在目前阶段也是可行的,比如,林子雨编著《大数据技术原理与应用》教材目前就应用于厦门大学信息科学与技术学院研究生选修课“大数据处理技术”中。

2、开大数据课程是否需要建设大数据实训实验室?

在本科阶段开设入门级大数据课程,大数据实训实验室(统一建设的机房)不是必须的。对于有条件建设大数据实训实验室的学校,可以考虑建设一个统一的机房,方便教师对学生上机实验进行统一现场指导。暂时没有条件建设大数据实训实验室的学校,也不会对授课过程和授课效果产生影响,教师可以顺利完成授课,学生也可以在自己电脑上顺利完成上机实验。

3、开设大数据课程对基础知识储备有什么要求?

4、完成课程配套上机实验需要什么样的个人电脑配置?

《大数据技术原理与应用》教材的每个章节,都安排了配套的课后上机实验。这些实验都可以在教师和学生的个人电脑上顺利完成。建议个人电脑具备4GB以上内存,否则,运行Linux系统和开展相关实验,速度会慢一些,尤其是在Windows系统上安装Linux虚拟机时,如果内存小于4GB,电脑速度会比较慢。

5、没有学习过Linux系统知识也可以学习该课程吗?

课时安排

《大数据技术原理与应用》在课时安排方面比较灵活,可以根据教学计划课时长度,自由决定每个章节的时间分配。可以单独设置机房集中上机实验的课时,也可以不用设置机房上机,而是让学生自己在课后在自己电脑上完成上机实验。

(1)方案一:理论授课24学时+上机实验8学时。在理论授课环节,教材第1章到第11章(除第7章MapReduce安排4个学时以外),各个章节都安排2个学时,总计理论授课24个学时。在上机实验环节,每次安排连续4节课上机,第一次的4节上机课,完成Hadoop的安装和使用以及分布式文件系统HDFS的使用方法,第二次的4节上机课,完成MapReduce编程实验。

(2)方案二:单纯理论授课32学时,没有安排统一上机实验,上机实验由学生自己课后在自己电脑上完成。如果缺少可用的大数据实训机房,建议采用该方案,具体课时安排如下:

(备注:下面每章内容需要花费的课时安排仅供参考,教师可根据自己课时安排,调整内容安排,比如,不在第1版教材(共13章)中的拓展内容第14章、第15章和第16章,可以不讲)

在线教学资源(免费)

教师在主讲这门课程时,可以访问“大数据课程教师服务站”获得各种免费资源。

建议教师在授课时,教会学生如何使用“大数据课程学生服务站”的各种教学资源,尤其是里面包含的各种上机操作指南,这样可以大大节省教师授课负担。

课程讲义PPT

第0章 课程介绍 备课指南

【课程内容】对于课程的基本介绍,包括课程特色、教材介绍、篇章安排、中国高校大数据课程公共服务平台各种教学资源使用方法、主讲教师和助教等

【备课说明】

本章内容放在开学第一次课进行介绍,旨在让学生了解课程内容体系、教学资源使用方式,为开展本课程学习铺平道路。

【课后作业】本章无课后作业。

第1章 大数据概述 备课指南

【课程内容】首先介绍了大数据发展历程、基本概念、主要影响、应用领域、关键技术、计算模式和产业发展,并阐述了云计算、物联网的概念及其与大数据之间的紧密关系

【学习指南】无。

【备课说明】

本章侧重于从概念层面一点点引导学生进入大数据的世界,内容没有难度。本章重点在于梳理清楚云计算、大数据、物联网三者之间的关系,对于三者的关系问题,不少企业员工、高校教师和学生在没有学习大数据课程之前,都不是很清晰,因此,阐明三者的关系非常重要。实际上,三者的关系问题,尤其是云计算与大数据的关系问题,也很困扰各个高校。因为,各个高校目前都有开设云计算和大数据课程的计划,但是,云计算课程应该讲解哪些内容?大数据课程应该讲解哪些内容?如何对相关知识进行切割,从而不会让云计算和大数据这两门课程之间的内容有冲突,是一个需要审慎决定的事情。

当然,教师也可以根据自己的情况,灵活加入或替换成其他应用案例,教材第13章有很多应用案例可供参考。

在PPT的“第1.8.1云计算”这个部分内容中,放置了几张林子雨在中国国际信息技术(福建)产业园数据中心的照片,其他教师可以删除这些照片,换成其他数据中心的照片,让学生对数据中心有个形象的认识。

【课后作业】本章无课后作业。

第2章 大数据处理架构Hadoop

【课程内容】介绍Hadoop的发展历史、重要特性和应用现状,并详细介绍Hadoop项目结构及其各个组件,最后,演示如何在Linux操作系统下安装和配置Hadoop

【备课说明】

Hadoop这章的内容,是学习整个大数据技术课程的非常关键的一章。从理论层面来讲,这章是对Hadoop技术框架的一个概览,为后面其他章节学习Hadoop框架里面的各个功能组件(比如HDFS、HBase、MapReduce等各个功能组件),奠定基础。从实践操作层面来讲,通过本章的上机实践,将搭建起基础的上机环境,为后续各个章节开展上机实践操作,奠定基础。

(4)2.4 Hadoop集群的部署与使用:学生都是在自己的单机上部署Hadoop环境,教师有必要让学生了解实际的Hadoop集群是如何部署的。当然,这个部分的PPT中会出现NameNode、Datanode、JobTracker和TaskTracker等概念,NameNode、Datanode属于HDFS中的概念,JobTracker和TaskTracker属于MapReduce中的概念,学生在这时还没有学习过HDFS和MapReduce,到了后面章节才会学习到,所以,这时,教师需要用简单的几句话,把NameNode、Datanode、JobTracker和TaskTracker等概念给学生普及一下。

【课后作业】(学生在宿舍或实验室电脑上自己开展上机练习)

作业题目:习题2-1 安装Hadoop

作业性质:上机练习,必做作业,需要提交实验报告。本章作业,必须让学生认真完成,因为,本章搭建好Hadoop环境,是开展后续章节学习的基础。

作业目的:

1.掌握Linux虚拟机安装方法或者双操作系统安装方法。Hadoop在Linux操作系统上运行可以发挥最佳性能,鉴于目前很多读者可能正在使用Windows操作系统,因此,为了完成本书的后续实验,这里有必要通过本实验让读者掌握在Windows操作系统上搭建Linux虚拟机的方法,以及安装双操作系统的方法(同时安装Windows和Linux系统,电脑开机时,可以选择登录哪个系统)。

2.掌握Hadoop的伪分布式安装方法。很多读者并不具备集群环境,需要在一台机器上模拟一个小的集群,因此,需要通过本实验让读者掌握在单机上进行Hadoop的伪分布式安装方法。

与教材对应的章节:第2章 大数据处理架构Hadoop

实验目的:为后续上机实验做准备,熟悉常用的Linux操作和Hadoop操作

实验题目:实验1:熟悉常用的Linux操作和Hadoop操作

第3章 Hadoop分布式文件系统

【课程内容】首先介绍分布式文件系统的基本概念、结构和设计需求,然后介绍Hadoop分布式文件系统HDFS,详细阐述它的重要概念、体系结构、存储原理和读写过程,最后,介绍了一些HDFS编程实践方面的知识。

【备课说明】

在上课时,关于HDFS编程实践内容,不需要过多介绍,只要在课堂上稍微介绍一下有多种方式可以操作HDFS:第一,利用Shell命令操作HDFS;第二,利用WEB界面查看HDFS相关信息;第三,利用Java API与HDFS进行交互。另外,在使用Shell命令操作HDFS时,需要给学生介绍一下有三种不同的命令方式:

(1)hadoop fs:适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统;(2)hadoop dfs:只能适用于HDFS文件系统;(3)hdfs dfs:跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统。

上述三种命令方式,可以根据具体应用场景(本地文件系统?还是HDFS文件系统?)来选择,只要能够实现操作目的即可。

本章一个比较难理解的内容是教材第49页第3.6 HDFS的数据读写过程,对于一个问题,不同的人,可能会从不同的角度去阐述。林子雨在写这个部分内容的时候,采用的视角和描述方法,可能和其他人稍有不同。为了帮助教师更好地理解HDFS数据读写过程,下面给出网络上其他人写的介绍,他是从另外一种稍微不同的方式来描述这个过程,教师可以在读完教材中的描述后,再对照理解下面的内容:

(1)HDFS读数据过程

Configuration conf = newConfiguration();

客户端调用FileSystem的get()方法得到一个实例fs(即分布式文件系统DistributedFileSystem),然后fs调用open()打开希望读取的文件(步骤1)

DistributedFileSystem(fs)通过使用RPC调用NameNode以确定文件起始block的位置(步骤2)。(Block位置信息存储在namenode的内存中)。对于每一个bolck,NameNode返回block所有复本的DataNode地址(并根据与client的距离排序)。

DistributedFileSystem(fs).open()返回一个FSDataInputStream对象给client用来读数据。FSDataInputStream封装了分布式文件输入流(DFSInputStream)用于管理NameNode和DataNode的I/O. client调用对这个输入流调用read()方法(步骤3)。

此输入流DFSInputStream has stored the datanode addresses for the first few blocks in the file, then connects to the first(closest) datanode for the first block in the file.通过对数据流反复的调用read()可以将数据从datanode传输到client(步骤4).

对一个block读完时DFSInputStream会关闭与datanode的连接,然后寻找下一个block的最佳datanode(步骤5).当一批blocks读完时,DFSInputStream会询问namenode下一批所需blocks的datanode地址。读取blocks的切换对于client是透明的。

当client完成读取,调用FSDataInputStream的close()方法(步骤6)。

在读的过程中,如果DFSInputStream和datanode通信时出错,它会尝试连接下一个最近的datanode。DFSInputStream也会通过校验和确认从datanode读取的数据是否完整,如果发现某个block有损坏,就回报告给namenode,然后从其它复本读取此block。

(2)HDFS写数据过程

Configuration conf = newConfiguration();

客户端调用FileSystem的get()方法得到一个实例fs(即分布式文件系统DistributedFileSystem),然后fs调用create()创建文件(步骤1),

DistributedFileSystem(fs)通过RPC调用NameNode在命名空间中创建一个新文件,此时该文件还没有相应的数据块(步骤2)。namenode会检查此文件是否已存在及client是否有权限新建文件,如果检查不通过,则创建失败并向client抛出IOException异常,否则namenode就会创建一条记录。

然后DistributedFileSystem(fs)向client返回一个FSDataOutputStream(封装了DFSOutputStream)对象来写数据。在client写数据时(步骤3),DFSOutputStream将它分成一个个的数据包并写入内部队列,称作数据队列(data queue).

DFSOutputStream会请求namenode在合适的datanodes(默认3个)上分配blocks来存储数据队列。3个datanodes形成一个管线DataStreamer将数据包流式的传输到管线中第一个datanode,第一个datanode存储数据包并发送的第二个datanode, 第二个datanode存储数据包并发送的第三个datanode(步骤4).

DFSOutputStream也维护了一个确认队列(ack queue),当收到管道中所有datanodes的确认信息后对应数据包才会从确认队列中删除(步骤5)。

Client完成数据的写入后便对FSDataOutputStream调用close()方法(步骤6)。

该操作将所有剩余的数据包写入管线,并等待确认,最后向namenode报告写完成(步骤7)。

【课后作业】(学生在宿舍或实验室电脑上自己开展上机练习)

说明:本章作业,习题3-1 熟悉常用的HDFS操作,难度较高,不适宜作为入门级课程的习题,所以,实际教学中,可以采用习题3-2  HDFS Java API编程实践。

作业题目:习题3-1 熟悉常用的HDFS操作

作业性质:上机练习,必做作业,需要提交实验报告。

作业目的:

(1)     理解HDFS在Hadoop体系结构中的角色;

(2)     熟练使用HDFS操作常用的Shell命令;

(3)     熟悉HDFS操作常用的Java API。

作业题目:习题3-2 HDFS Java API编程实践

作业性质:上机练习,必做作业,需要提交实验报告。

作业目的:(1) 熟悉HDFS操作常用的Java API。

与教材对应的章节:第3章 Hadoop分布式文件系统

实验目的:

实验题目:实验2:熟悉常用的HDFS操作

第4章 分布式数据库HBase

【课程内容】首先介绍了HBase的由来及其与关系数据库的区别,然后,介绍了HBase访问接口、数据模型、实现原理和运行机制,并在最后介绍了HBase编程实践方面的一些知识

【备课说明】

关于为什么会出现BigTable这样的产品?教师可以阅读下面的应用场景说明:

搜索是一个定位你所关心的信息的行为:例如,搜索一本书的页码,其中含有你想读的主题,或者网页,其中含有你想找的信息。搜索含有特定词语的文档,需要查找索引,该索引提供了特定词语和包含该词语的所有文档的映射。为了能够搜索,首先必须建立索引。Google和其他搜索引擎正是这么做的。他们的文档库是整个互联网;搜索的特定词语就是你在搜索框里敲入的任何东西。

BigTable,和模仿出来的HBase,为这种文档库提供存储,BigTable提供行级访问,所以爬虫可以插入和更新单个文档。搜索索引可以基于BigTable 通过MapReduce计算高效生成。如果结果是单个文档,可以直接从BigTable取出。支持各种访问模式是影响 BigTable设计的关键因素。

建立互联网索引

1 爬虫持续不断地抓取新页面,这些页面每页一行地存储到BigTable里。

2 MapReduce计算作业运行在整张表上,生成索引,为网络搜索应用做准备。

搜索互联网

3 用户发起网络搜索请求。

4 网络搜索应用查询建立好的索引,或者直接从BigTable直接得到单个文档。

5 搜索结果提交给用户。

本章讲义PPT中,增加了教材中没有的“4.6HBase应用方案”,包括:

“4.6.2 HBase性能监视”,用来监视HBase集群性能,分别是Master-status、Ganglia、OpenTSDB、Ambari:

(1)Master-status:HBase自带的组件,用来查看各种性能参数;

(2)Ganglia:是UC Berkeley发起的一个开源集群监视项目,设计用于测量数以千计的节点。Ganglia的核心包含gmond、gmetad以及一个Web前端。主要是用来监控系统性能,如:cpu 、mem、硬盘利用率, I/O负载、网络流量情况等,通过曲线很容易见到每个节点的工作状态,对合理调整、分配系统资源,提高系统整体性能起到重要作用。

(3)OpenTSDB:一个开源监控系统OpenTSDB,它可以解决上面的问题,它用HBase存储所有的时序(无须采样)来构建一个分布式、可伸缩的时间序列数据库。它支持秒级数据采集所有metrics,支持永久存储,可以做容量规划,并很容易的接入到现有的报警系统里。OpenTSDB可以从大规模的集群(包括集群中的网络设备、操作系统、应用程序)中获取相应的metrics并进行存储、索引以及服务,从而使得这些数据更容易让人理解,如web化,图形化等。

(4)Ambari: Ambari 的作用就是创建、管理、监视 Hadoop 的集群,这里的 Hadoop 是广义的,指的是 Hadoop 整个生态圈(例如 Hive,HBase,Sqoop,Zookeeper 等),而并不仅是特指 Hadoop。用一句话来说,Ambari 就是为了让 Hadoop 以及相关的大数据软件更容易使用的一个工具。

“4.6.4 构建HBase二级索引”的内容,介绍了HBase在企业中具体应用时需要采用其他索引来辅助。为什么需要其他索引来辅助HBase呢?这是因为,HBase只有针对行健的单一索引,访问HBase表中的行,只有三种方式:

也就是说,HBase和传统的关系数据库(比如MySQL、Oracle、SQL Server、IBM DB2等)有很大的区别。传统的关系数据库,都可以针对各个字段建立复杂的索引,可以通过索引,进行高效的条件查询,比如,select * from table where col1=val1 and col2=val2。而HBase不存在复杂的索引,其本身只对rowkey支持毫秒级的快速检索,对于多字段的组合查询却无能为力,因此,本身无法支持高效的条件查询。为了解决这个问题,可以采用其他产品为HBase构建二级索引:

【课后作业】(学生在宿舍或实验室电脑上自己开展上机练习)

作业题目:习题4-1 熟悉常用的HBase操作

作业性质:上机练习,必做作业,需要提交实验报告。

作业目的:

与教材对应的章节:第4章 分布式数据库HBase

实验目的:

实验题目:实验3:熟悉常用的HBase操作

第5章 NoSQL数据库

【课程内容】首先介绍NoSQL兴起的原因,比较NoSQL数据库与传统的关系数据库的差异;然后,介绍NoSQL数据库的四大类型以及NoSQL数据库的三大基石;最后,简要介绍与NoSQL数据库同样受到关注的NewSQL数据库

【备课说明】

本章内容相对比较简单,只要阅读教材即可理解。

关于CAP理论,这一理论首先把分布式系统中的三个特性进行了如下归纳:

(1)一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。

(2)可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。

(3)分区容忍性(P):集群中的某些节点在无法联系后,集群整体是否还能继续进行服务。

而CAP理论是指,在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容忍性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。

要保证数据一致性,最简单的方法是令写操作在所有数据节点上都执行成功才能返回成功。而这时如果某个结点出现故障,那么写操作就成功不了了,需要一直等到这个节点恢复。也就是说,如果要保证强一致性,那么就无法提供7×24的高可用性。

而要保证可用性的话,就意味着节点在响应请求时,不用完全考虑整个集群中的数据是否一致。只需要以自己当前的状态进行请求响应。由于并不保证写操作在所有节点都写成功,这可能会导致各个节点的数据状态不一致。

CAP理论导致了最终一致性和强一致性两种选择。当然,事实上还有其它的选择,比如在Yahoo! 的PNUTS中,采用的就是松散的一致性和弱可用性结合的方法。

MongoDB是一个基于分布式文件存储的数据库,介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的。MongoDB最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。MongoDB支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。MongoDB是高性能开源文档数据库,也是目前最受关注的NoSQL技术之一,以敏捷、可扩展和对企业应用友好(支持事务,一致性和数据完整性保证,有大企业应用案例)而著称。有人甚至认为LAMP中的M应该用MongoDB取代MySQL,其火热程度可见一斑。使用MongoDB的公司包括Foursquare, Craiglist, 迪士尼,SAP,Intuit,EA等,国内淘宝、大众点评、视觉中国等公司有应用。

【课后作业】(学生在宿舍或实验室电脑上自己开展上机练习)

作业题目:习题5-1 关系数据库和NoSQL数据库操作实践

作业性质:上机练习,必做作业,需要提交实验报告。

作业目的:

旨在让学生了解关系数据库、键值数据库、列族数据库和文档数据库的基本操作,比较同样的数据库操作在不同类型的数据库产品中的实现方法,体会其中的异同点,从而加深对关系数据库和NoSQL数据库的认识。

作业说明:该旨在让学生了解关系数据库、键值数据库、列族数据库和文档数据库的基本操作,比较同样的数据库操作在不同类型的数据库产品中的实现方法,体会其中的异同点,从而加深对关系数据库和NoSQL数据库的认识。

如果在实际教学中,教师觉得习题5-1的任务量较大,也可以采用比较简单的习题5-2 熟悉MongoDB的基本操作。

作业题目:习题5-2 熟悉MongoDB的基本操作

习题目的:

1.理解NoSQL数据库和关系型数据库的区别;

2.熟练使用MongoDB操作常用的Shell命令。

与教材对应的章节:第5章 NoSQL数据库

实验目的:

实验题目:实验4:NoSQL和关系数据库的操作比较

第6章 云数据库

【课程内容】首先介绍云数据库的概念、特性及其与其他数据库的关系,然后,介绍云数据库的代表性产品和厂商,最后,以阿里云数据库RDS为实例演示如何使用云数据库

【备课说明】

本章内容较为简单,阅读教材即可理解。

为了让学生更好理解云数据库概念以及云数据库运行所在的底层云计算环境,在讲课中,除了教材内容,建议增加对Amazon AWS云计算产品的介绍,AWS提供的服务包括:亚马逊弹性计算网云(Amazon EC2)、亚马逊简单储存服务(Amazon S3)、亚马逊简单数据库(Amazon SimpleDB,一种云数据库)、Amazon RDS(云中的关系数据库服务,提供三种实例引擎,分别是:Mysql、Oracle和SQL Server)等。

【课后作业】(学生在宿舍或实验室电脑上自己开展上机练习)

作业题目:习题6-1 使用RDS for MySQL数据库

作业性质:上机练习,需要提交实验报告。本作业为选做作业,因为可能遇到无法成功申请阿里云RDS的情况,导致作业无法顺利完成。

作业目的:

1.以阿里云RDS为实例了解云数据库的使用方法;

2.熟练使用MySQL数据库操作命令;

3.熟悉连接RDS for MySQL数据库的方法。

第7章 MapReduce

【课程内容】介绍MapReduce模型,阐述其具体工作流程,并以单词统计为实例介绍 MapReduce程序设计方法,同时,还介绍了MapReduce的具体应用,最后讲解MapReduce编程实践

【备课说明】

本章讲义PPT第7.1.2“MapReduce模型简介”部分,要重点给学生介绍MapReduce的两大设计理念:一个是“分而治之”,即把大数据集切分成许多小数据集,进行分布式并行处理;另一个是“计算向数据靠拢”,而不是“数据向计算靠拢”,因为,移动数据需要大量的网络传输开销。

讲义PPT第7.3.2“MapReduce各个执行阶段”,里面有一张PPT介绍了Block和Split的关系,这是教材中没有的内容。HDFS 以固定大小的block 为基本单位存储数据,而对于MapReduce 而言,其处理单位是split。split 是一个逻辑概念,它只包含一些元数据信息,比如数据起始位置、数据长度、数据所在节点等。它的划分方法完全由用户自己决定。但需要注意的是,split 的多少决定了Map Task 的数目,因为每个split 只会交给一个Map Task 处理。另外,一个大的数据集不能被切分成过多的Split,因为,每个split 只会交给一个Map Task 处理,如果过多的split交给一个机器,而一个机器能够同时启动运行的Map任务是有限制的,这意味着,其他split必须排队等待前面的spit被处理结束后,再启动新的Map任务处理新的split,而每次启动一个Map任务,都会有初始化开销,过多的split,会导致多次Map任务启动切换开销。

教材第7.3.3节MapReduce的具体执行过程,在讲义PPT中,被调整放到了“MapReduce的工作流程”这节中,讲完“Shuffle过程详解”后,就讲MapReduce的具体执行过程。

本章教材中的第7.4节“MapReduce的具体应用”可以根据教学进度安排,可讲可不讲,如果教学课时足够,就讲,如果教学课时不够,就不讲,让学生自学如何采用MapReduce计算模型来实现各种运算,包括关系代数运算、分组与聚合运算、矩阵-向量乘法、矩阵乘法。

在讲义PPT第7.5节“MapReduce编程实践”中,增加了第“7.5.6 Hadoop中执行MapReduce任务的几种方式”,这是教材中没有的。这里简单解释一下:

在解决问题的过程中,开发效率、执行效率都是要考虑的因素,不要太局限于某一种方法

【课后作业】(学生在宿舍或实验室电脑上自己开展上机练习)

作业题目:习题7-3 编写MapReduce程序实现词频统计

作业性质:上机练习,必做作业,需要提交实验报告。

作业目的:

与教材对应的章节:第7章 MapReduce

实验目的:

1.通过实验掌握基本的MapReduce编程方法;

2.掌握用MapReduce解决一些常见的数据处理问题,包括数据去重、数据排序和数据挖掘等。

实验题目:实验5:MapReduce编程初级实践

第8章 流计算

【课程内容】首先介绍流计算的基本概念和需求,分析了MapReduce框架为何不适合处理流数据;然后,阐述了流计算的处理流程和可应用的场景;接着介绍了流计算框架Storm的设计思想和架构设计;最后,通过实例来加深对Storm框架的了解

【备课说明】

本章内容只要阅读教材即可。

需要注意的是,本章部分代码是采用Python编写的,需要教师到网络上搜索一下基本Python教程,了解基础编程知识,不过,由于教材中用到的Python语句都比较简单易懂,所以,即使不另外学习Python编程知识,也不会影响授课。

【课后作业】(学生在宿舍或实验室电脑上自己开展上机练习)

作业题目:习题8-1 大数据技术与流量分析-网络攻击检测

作业性质:上机练习,选做作业(需要学习基本的Python编程,有一定难度,可做,可不做),需要提交实验报告。

作业目的:

第9章 图计算

【课程内容】首先介绍传统图计算解决方案的不足,然后详细介绍了Pregel图计算模型、C++ API、体系结构和应用实例,最后,对PageRank算法在Pregel和MapReduce中的不同实现方式进行了比较,从而说明Pregel在处理图计算问题方面的优势

【备课说明】

本章内容只要阅读教材即可。

【课后作业】(学生在宿舍或实验室电脑上自己开展上机练习)

作业题目:习题9-1 图计算框架Hama的基础操作实践

作业性质:上机练习,选做作业(有一定难度,可做,可不做),需要提交实验报告。

作业目的:旨在让学生了解Pregel图计算模型,并学会用Pregel的开源实现Hama实现一些基本操作。

第10章 数据可视化

【课程视频】本章无授课视频。

【备课说明】

本章理论部分比较简单,只要阅读教材即可。

因为理论部分内容很少,不到一节课就可以讲完,而本章安排了2个课时,所以,讲义PPT中增加了“10.4 可视化工具实践”,这个是教材中没有的内容。讲义PPT中增加的“10.4 可视化工具实践”,内容都来自厦门大学数据库实验室制作的实践教程,请教师阅读网页版教程来备课,具体如下:

在具体授课“10.4 可视化工具实践”时,教师可以使用PPT讲解,也可以直接打开上述教程的网页版直接讲解,如果教师对某种可视化技术比较熟悉,也可以直接打开开发环境一边敲入代码一边演示效果进行讲解。总体而言,在讲解时,其实也没有必要把可视化编程中的每句编程语言用法都讲得那么清楚,只要告诉学生这条语句可以实现什么功能即可,作为入门课程,主要是起到引导作用,让学生知道有哪些可视化技术可以使用,大概的可视化方法是什么样的,如果学生对于某种可视化技术比较感兴趣,愿意深入学习,那么,学生可以自己查阅相关资料进行深入学习。

【课后作业】(学生在宿舍或实验室电脑上自己开展上机练习)

作业题目:习题10-1 D3可视化库安装和使用

作业性质:上机练习,必做作业,需要提交实验报告。

作业目的:旨在让学生了解D3可视化库,并掌握最基本的使用方法,会生成一些比较简单的图表。

第11章 大数据在互联网领域的应用

【课程内容】首先介绍推荐系统的概念,描述长尾理论与推荐系统的内在联系,并介绍不同的推荐方法以及推荐系统的应用;然后,重点介绍协同过滤算法的基本思想;最后,通过实例来讲述如何实现一个简易的推荐系统

【备课说明】

本章内容只要阅读教材即可。

【课后作业】(学生在宿舍或实验室电脑上自己开展上机练习)

作业题目:习题11-1 大数据推荐系统

作业性质:上机练习,选做作业,可做可不做,需要提交实验报告。

作业目的:

作业说明:学生在完成作业之前,请一定仔细阅读“习题11-1 大数据推荐系统”文档中前面关于大数据推荐系统算法的介绍内容。

第12章 大数据在生物医学领域的应用

第12章介绍大数据在生物医学领域的应用知识,内容比较简单,属于学生自学范畴,不用授课,不需要备课指南。

第13章 大数据在其他领域的应用

第13章介绍大数据在各个其他领域的应用知识,内容比较简单,属于学生自学范畴,不用授课,不需要备课指南。

第14章 基于Hadoop的数据仓库Hive

【课程内容】本章首先介绍了数据仓库的概念、Hive的基本特征、与其他组件之间的关系、与传统数据库的区别以及它在企业中的具体应用;接着详细介绍了Hive的系统架构,包括基本组成模块、工作原理和几种外部访问方式,描述了Hive的具体应用及Hive HA原理;同时,介绍了新一代开源大数据分析引擎Impala及其与Hive的比较分析;最后,以单词统计为例,介绍了如何使用Hive进行简单编程,并说明了Hive编程相对于MapReduce编程的优势。

【备课说明】

本章内容属于2016年林子雨新编写的章节,不在第1版教材中。教师可以根据授课视频进行备课。

【课后作业】本章内容一般为企业应用,许多学生对数据仓库细节不是很了解,所以,只需要了解基本原理即可,不需要开展上机练习,所以,无课后作业。

第15章 Hadoop架构再探讨

【课程内容】本章首先介绍Hadoop的局限与不足,并从全局视角系统总结针对Hadoop的改进与提升;然后,介绍Hadoop在自身核心组件方面的新发展,包括HDFS2.0新特性和新一代资源管理调度框架YARN框架;最后,介绍Hadoop推出之后陆续涌现的具有代表性的新功能组件,包括Pig、Tez、Spark和Kafka等,这些组件对Hadoop的局限进行了有效的改进,进一步丰富和发展了Hadoop生态系统。

【备课说明】

本章内容属于2016年林子雨新编写的章节,不在第1版教材中。教师可以根据授课视频进行备课。

【课后作业】都是基本概念,不需要课后上机作业。

第16章 Spark

【课程内容】本章首先简单介绍Spark与Scala编程语言,接着分析Spark与Hadoop的区别,认识Hadoop MapReduce计算模型的缺陷与Spark的优势;然后讲解了Spark的生态系统和架构设计,并介绍了Spark SQL以及Spark的部署和应用方式;最后介绍Spark的安装与基本的编程实践。

【备课说明】

本章内容属于2016年林子雨新编写的章节,不在第1版教材中。教师可以根据授课视频进行备课。

THE END
0.SQL基础练习:数据库操作实战指南简介:SQL是操作关系型数据库的标准语言,包含创建、查询、更新和删除数据的能力。本练习题旨在引导初学者学习基本SQL语法和操作,包括数据查询、聚合函数、条件过滤、排序与分组、数据插入、更新和删除、连接查询和子查询。通过掌握这些基础语句,读者将能够更好地理解和应用SQL,为后续学习更高级的数据库概念和技能打下jvzquC41dnuh0lxfp0tfv8|gkzooa<9947=578ftvkimg8igvcomu866;:;92@=
1.sql查询语句教程之插入更新和删除数据实例Mysql如果要在程序运行过程中操作数据库中的数据,那得先学会使用SQL语句,下面这篇文章主要给大家介绍了关于sql查询语句教程之插入、更新和删除数据的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下+ 目录 GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!【 如果你想靠AI翻身,你先需要一个靠谱的工具!jvzquC41yy}/lk:30pku1jwvkerf1;:272:/j}r
2.sqlserver练习handsomecui1.基本表的练习: createtableTest( namevarchar(4), ageint, sexvarchar(2) )altertableTestaddidchar(16)altertableTestaltercolumnidvarchar(16)altertableTestdropcolumniddroptableTestselect*fromTest 2.记录操作DML: createtableTest( namevarchar(4), ageint, idchar(16) )altertableTestaltercolumnnamevarcharjvzquC41yy}/ewgnqiy/exr1jcteuxrgewo0r8;227>887mvon+32
3.SQLServer审计(数据库引擎)“服务器审核规范”对象属于审核。 可以为每个审核创建一个服务器审核规范,因为它们都是在 SQL Server 实例范围内创建的。 服务器审核规范可收集许多由扩展事件功能引发的服务器级操作组。 您可以在服务器审核规范中包括“审核操作组”。 审核操作组是预定义的操作组,它们是数据库引擎中发生的原子事件。 这些操作将jvzquC41vgiipny0okisq|thv0ipo8j/et0nrgtct0el7:25>70jxrz
4.java中sql如何嵌套查找SQL查询嵌套使用[通俗易懂]因为查询分组group by 的特性是分组 并取各组第一条查询到的数据信息(a和b是第一组,如果a排前面,那么就分组就拿a的那条信息,如果是b则拿b的信息),我们单纯进行分组能查到各分组的最高分,但是不一定能相应查询到对应的最高分的名称、年龄等信息。所以,先将全部数据进行降序排列,然后班级分组(group by classjvzquC41enuvf7ygpekov7hqo1jfxnqqrgx0c{ykenk04:69;;;
5.SQL数据库实战训练:从零到熟练简介:本文是一个关于SQL数据库训练的资源,提供了完整的数据库实例和相关脚本,适合初学者进行基础训练。内容涵盖了SQL语言的基础知识、数据库结构设计、数据操作、查询优化和安全性等关键技能。通过实践操作,学习者将能够掌握创建数据库、插入、查询、更新、删除数据等核心技能,并了解数据库设计、事务处理、索引使用、备份jvzquC41dnuh0lxfp0tfv8|gkzooa=7737>548ftvkimg8igvcomu86723<22>6
6.SQLServer2008数据库操作实战:卡哥实例练习本实例练习通过动手操作学生成绩管理系统数据库,涵盖SQL语句的核心功能及多表操作、关联查询、聚合函数等进阶概念。用户将通过实际操作加强SQL语言的应用能力,为数据库管理打下坚实基础。配套文件包括详细说明的README.md和数据库文件,可用于SQL Server Management Studio或其他数据库管理工具。 1. SQL jvzquC41dnuh0lxfp0tfv8|gkzooa=78279:98ftvkimg8igvcomu86722?9;@5
7.SQL数据库操作练习(2)ch0bitsSQL数据库操作练习(2) 新增一些列(略) 删除列 删除表、数据库 重新创建表 单行查询,limit 参数1,参数2(参数1表示从第几行开始,参数2表示取几行) 重命名表、列名 (记得在堆叠注入的题里遇到过这种问题,就是将无法查询的表修改为可以查询的表) 在mysql中操作无需加引号,但是在浏览器注入的时候需要给名称加jvzquC41yy}/ewgnqiy/exr1genpFnygevke1y4358;52<90jvsm
8.Asp.NetOracle数据的通用操作类实用技巧在一个项目中,可能用到2种数据,比如说ORACLE ,MS_SQLSERVER 同时要用到,MS-SQL的数据通用类在很多的教程中都有现成的例子和代码,但是ORACLE比较少见,但是本次项目中正好用到,贴出来和大家一起共享。 这里用OraDbHelper.cs做常见的四种数据操作 一ExecuteDataTable 返回到内存数据表 二SqlDatajvzquC41yy}/lk:30pku1jwvkerf1;67364ivv
9.TSQL语句操作数据库——基本操作一条成仙路需求:创建一个people数据库,有一个10MB和一个20MB的数据文件people1.mdf,people2.ndf,还有两个10MB的日志文件。 主文件people1由primary指定,两个数据文件的最大尺寸为无限大和100MB,增长速度为10%和1MB。日志文件people1_log和 people2_log,物理文件名为people1_log.ldf和people2_log.ldf,最大尺寸均为50MB,jvzquC41yy}/ewgnqiy/exr1fhog1y4342>17:80jvsm
10.SQL基础与实践:数据库操作示例大全简介:SQL是关系数据库管理和操作的关键语言,本主题深入解析SQL的基础概念和核心语法,包括创建数据库、定义数据表、插入、查询、更新和删除数据等基本操作。通过实例代码展示如何在SQL Server环境下高效执行这些操作,并讨论创建索引以优化查询性能的重要性。本资料旨在为初学者提供完整的数据库操作实践案例,帮助他们掌握SQLjvzquC41dnuh0lxfp0tfv8|gkzooa=782497:8ftvkimg8igvcomu86727=52::
11.SQL数据库操作:创建插入与查询实践Mysql 50道练习题 一、创建数据库和数据表 1.创建数据库 sql语句:create database 数据库名称; 2.创建数据表 1)创建学生表(student) sql语句: createtablestudent( student_id varchar(255) primary key, student_name varchar(255) not null, studenjvzquC41dnuh0lxfp0tfv8~qwa}fnu4ctvodnn4fgvgjn|4352625@5;
12.新手如何练习SQL?掌握本文为初学者提供了一套完整的SQL学习路径,包括理论基础、SQL语句结构(DML操作、SELECT、INSERT、UPDATE、DELETE)、实战训练(CRUD操作和查询技巧)、性能优化策略以及如何利用在线资源进行实践和持续学习。 对于新手想要练习SQL语句,可以从以下几个方面入手: 1. 建立理论基础 jvzquC41dnuh0lxfp0tfv8vsa6;23@8591gsvrhng1jfvjnnu1748=9528:
13.MySQLSQL语句练习实例详解mysqlsql练习在开始练习之前,我们先回顾一下 SQL 的基础知识。 1.1 什么是 SQL? SQL(Structured Query Language,结构化查询语言)是一种用于管理关系型数据库的标准语言。它支持对数据库中的数据进行增删改查(CRUD)操作,以及数据的统计、排序、分组等功能。 1.2 常用的 SQL 语句 jvzquC41dnuh0lxfp0tfv8|gkzooa=737:6348ftvkimg8igvcomu86678>85>7
14.数据库SQL语言实践:基础到高级练习题大全本练习题集为初学者设计,详细涵盖了SQL基础语法、查询操作、数据插入与更新、表的创建与修改、联接与子查询、视图与索引、存储过程与触发器、事务处理以及数据库备份与恢复等多个方面。通过实践这些练习题,初学者能够熟练掌握SQL语言的核心概念和应用,为日后解决实际问题打下坚实基础。jvzquC41dnuh0lxfp0tfv8|gkzooa=7744>698ftvkimg8igvcomu86699676>=