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

厦门大学林子雨编著《大数据技术原理与应用

教材配套教师备课指南

本指南是“大数据课程教师服务站”一个子栏目,服务站为教师开展大数据教学提供全方位、一站式服务

教材配套教学视频已经录制,欢迎点击这里观看

作者:厦门大学计算机科学系 林子雨(ziyulin@xmu.edu.cn, http://www.cs.xmu.edu.cn/linziyu)

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

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

点击这里下载教材配套讲义PPT | 当当网购买本书|京东商城购买本书|亚马逊购买本书

面向教师的大数据课程教师服务站 | 与教材各章节配套在线教学视频

大数据技术原理与应用教材教师备课指南网页二维码

扫一扫手机访问本主页


开课条件|讲义PPT|课程介绍|第1章|第2章|第3章|第4章|第5章|第6章|第7章|第8章|第9章|第10章|第11章|第12章|第13章|第14章|第15章|第16章


林子雨-大数据技术原理与应用教材封面2015年6月1日开课条件

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

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

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

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

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

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

林子雨编著的《大数据技术原理与应用》,属于入门级大数据教材,是专门面向大数据初学者量身定制的,教材不涉及高难度的知识,可以实现“零基础”学习,因此,学生在大三下学期开始学习这门课程,不会遭遇障碍,可以顺利完成课程学习和上机实验。课程上机所需要的Linux操作系统知识和Java语言编程知识,都是入门级的,而且,与教材配套的“大数据课程教师服务站”和“大数据课程学生服务站”中,给出了学习每个章节内容的全套学习指南,为教师开设大数据课程和学生学习大数据课程全面扫除障碍,真正实现了该课程的“零基础”学习,即使初学者没有任何Linux操作系统知识,也没有任何大数据技术知识,依然能够在课程服务站各种指南教程的帮助下,顺利完成理论学习和上机操作。

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

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

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

大数据课程都会学习Hadoop平台,大多数情况下,Hadoop是运行在Linux环境下的,因此,需要教师和学生在电脑上安装Linux系统。但是,特别需要强调的是,厦门大学数据库实验室团队撰写了非常详细的上机指导教程(查看其中一个教程案例),帮助初学者一步步从零开始安装和使用Linux和Hadoop,里面对一些初学者可能不懂的问题,都做了解释,为初学者扫除了学习Hadoop的障碍。所以,即使没有学习过Linux系统,也完全可以顺利学习本课程。

6、教师开课需要多长时间来备课?

因为厦门大学数据库实验室已经构建了与《大数据技术原理与应用》教材配套的、完备的大数据课程服务体系(欢迎访问:大数据课程教师服务站),因此,大大缩减了教师开设大数据课程所需投入的时间。即使一个教师从来没有接触过大数据技术知识,也没有学习和使用过Linux操作系统,只需要全职投入一个月时间备课,就可以顺利实现大数据课程的开设与讲解。也就是说,数据库实验室团队投入大量时间撰写各种学习指南教程、课后习题、讲义PPT等资料,已经可以让其他高校教师完全避免备课过程遭遇的各种障碍,不用自己花费宝贵时间去摸索,让备课时间至少缩减半年以上。

课时安排

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

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

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

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

章节 安排课时 备注
第1章 大数据概述 2学时
第2章 大数据处理架构Hadoop  2学时
第3章 Hadoop分布式文件系统  4学时 2节理论知识,2节回答学生在学习第2、3两章遇到的各种问题
第4章 分布式数据库HBase  4学时
第5章 NoSQL数据库  2学时
第6章 云数据库  2学时
第7章 MapReduce 4学时
基于Hadoop的数据仓库Hive 2学时 第14章 基于Hadoop的数据仓库Hive

第1版教材只有13章,本章为新增章节,不在当前第1版教材中,将放入第2版教材

Hadoop架构再探讨 2学时 第15章 Hadoop架构再探讨

第1版教材只有13章,本章为新增章节,不在当前第1版教材中,将放入第2版教材

Spark 2学时 第16章 Spark

第1版教材只有13章,本章为新增章节,不在当前第1版教材中,将放入第2版教材

第8章 流计算  2学时
第9章 图计算  2学时
第10章 数据可视化 2学时
第11章 大数据在互联网领域的应用  2学时
第12章 大数据在生物医学领域的应用 自学,不讲
第13章 大数据的其他应用 自学,不讲

上述所有授课内容,在“大数据课程教师服务站”相关栏目可以找到所需的所有教学资料。

在线教学资源(免费

在实践教学环节,只靠一本纸质教材,是远远不够的。教学过程需要不断融入不断涌现出来的新的大数据知识,并且根据教学实践效果,不断调整授课内容,同时,还要为学生提供相关大数据知识自学的指南。因此,打造在线教学资源十分必要。为此,厦门大学数据库实验室为本课程打造了完备的、免费的、课程服务体系——“中国高校大数据课程公共服务平台”(访问平台主页)。

(1)大数据课程教师服务站访问入口):为中国高校从事大数据课程教学的教师,提供备课指南、课程教材、讲义PPT、课程习题、经验交流、技术资料等全方位、一站式服务,减轻教师备课负担,提高备课效率,促进经验交流,提升教学水平,促进中国高校大数据课程教学不断发展。下面列出教师服务站的几个重要教学资源的快捷访问方式:

  • 访问“教师备课指南”(即本主页的内容,与《大数据技术原理与应用教材》配套)
  • 访问“学习指南”(与《大数据技术原理与应用教材》配套)
  • 访问“课后上机练习题目”(与《大数据技术原理与应用教材》配套,学生自己在宿舍或实验室上机练习)
  • 访问“机房上机实验指南”(与《大数据技术原理与应用教材》配套,学生统一在机房一起上机做题目)
  • 访问“讲义PPT”(与《大数据技术原理与应用教材》配套)
  • 访问“林子雨主讲在线课程视频”(与《大数据技术原理与应用教材》配套)
  • 访问“拓展阅读材料集锦”(与《大数据技术原理与应用教材》配套)

上面只列出了大数据课程教师服务站几个重要的教学资源的访问方式,服务站还包含了大量其他资源,欢迎访问大数据课程教师服务站获取更多教学资料。

(2)大数据课程学生服务站访问入口):为学生学习入门级大数据课程提供课程教材、讲义PPT、技术资料、进阶学习指南等全方位、一站式服务,帮助学生形成知识体系、开展基本编程实践、明确进阶学习方向,提高学习效率,提升学习效果。

(3)林子雨主讲入门级大数据在线课程视频访问入口):本在线视频课程由厦门大学计算机科学系林子雨老师主讲,为入门级大数据课程,适合大数据初学者。目前已经完成录制的在线视频课程包括入门级大数据公开课(知识体系型)和入门级大数据公开课(专题技术型)。2016新版教材配套教学视频正在录制并陆续发布。

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

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

课程讲义PPT

请点击这里下载与林子雨编著《大数据技术原理与应用》教材配套的讲义PPT,这些讲义PPT都是用可编辑的PPT格式,教师下载后,用PowerPoint软件打开PPT以后,可以自由编辑PPT内容,比如更换PPT顶部的厦大校徽和底部的文字,方法是选择菜单中“视图”,然后点击“幻灯片母版”,就可以编辑幻灯片母版,把幻灯片中的厦大校徽替换成教师所在学校的校徽,并且修改PPT底部文字。下面的备课指南内容,都是围绕讲义PPT来进行说明的。

第0章 课程介绍 备课指南

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

【配套讲义】请到“林子雨编著《大数据技术原理与应用》教材配套讲义PPT” 下载本章讲义PPT。

【课程视频】欢迎访问“林子雨主讲厦门大学2016春季学期《大数据技术原理与应用》课程视频”,观看本章配套教学视频。

【备课说明】

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

大数据教学需要大量上机实践,这些实践内容的详细步骤,是无法通过课堂的短短几节课时间介绍清楚的,往往需要学生在课后进行摸索实践。因此,线上线下相结合的O2O教学方式,在这门课程中可以得到很好的应用。厦门大学数据库实验室为本课程打造了完备的课程服务体系,可以为学生开展课后上机实践和相关内容自学,提供全方位、一站式免费服务。学生通过在线访问服务站的学习指南,完全可以按部就班地顺利完成课程各个上机实践操作,不需要教师的现场指导,这样可以大大减轻教师的工作量。因此,强烈建议教师在备课期间,详细了解“大数据课程学生服务站”的相关资源,然后,在第一次上课时,向学生介绍服务站教学资源的使用方法。

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

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

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

【配套讲义】请到“林子雨编著《大数据技术原理与应用》教材配套讲义PPT” 下载本章讲义PPT。

【课程视频】欢迎访问“林子雨主讲厦门大学2016春季学期《大数据技术原理与应用》课程视频”,观看本章配套教学视频。

【学习指南】无。

【备课说明】

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

本章中,PPT中给出了几个大数据应用案例(根据时间安排,几个案例可讲、可不讲):

(1)大数据应用到好莱坞影视剧《纸牌屋》的拍摄。这个案例的讲解,可以参考《大数据技术原理与应用》教材第13章第13.9.2投拍影视作品(第242页)的内容。

(2)谷歌浏览趋势预测。这个案例的讲解,可以参考《大数据技术原理与应用》教材第12章第12.1.2节基于大数据的流行病预测(第216页)的内容。

(3)基于大数据的机器翻译。这个案例的讲解,可以参考下面这个网络资料:大数据应用之机器翻译

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

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

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

第2章 大数据处理架构Hadoop

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

【配套讲义】请到“林子雨编著《大数据技术原理与应用》教材配套讲义PPT” 下载本章讲义PPT。

【课程视频】欢迎访问“林子雨主讲厦门大学2016春季学期《大数据技术原理与应用》课程视频”,观看本章配套教学视频。

【学习指南】请访问“林子雨编著《大数据技术原理与应用》教材配套学习指南”,查看本章的学习指南。

【备课说明】

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

在《大数据技术原理与应用》教材中,本章内容比较简练,因为,作为入门级教材,一个基本原则是“化繁为简、去粗取精”,不能让读者在阅读教材环节产生概念理解障碍,如果在教材中加入各种琐碎的操作内容,不仅破坏了教材的精炼性,也会让读者阅读产生烦躁情绪。

教材的精炼写作,只是出于阅读学习的目的,但是,要想真正实现无障碍上机实践,搭建起完整的Hadoop上机环境,仅有教材,还会遇到不少障碍。因此,为了帮助《大数据技术原理与应用》教材的使用者顺利搭建起Hadoop上机环境,厦门大学数据库实验室撰写了配套的上机操作指南。教师备课和学生学习,二者都可以参考这些指南,一步步完成操作。

教师在阅读完《大数据技术原理与应用》教材的本章内容后,请访问《大数据技术原理与应用 第二章 大数据处理架构Hadoop 学习指南》,完成Hadoop上机环境的搭建。在课堂教学中,也请把该学习指南推荐给学生,让学生在课后在自己的电脑上完成Hadoop上机环境搭建。《大数据技术原理与应用 第二章 大数据处理架构Hadoop 学习指南》本着“零基础”原则撰写,即假设初学者没有任何Linux操作系统知识,也没有任何大数据技术知识,依然能够在指南的帮助下,顺利完成各种上机操作。

本章内容,Hadoop平台的安装非常重要,直接影响到后面其他章节内容的学习。教师在课堂授课时,需要把Hadoop平台的大概安装过程介绍一遍,并且把可能出现的一些问题做一下讲解。但是,在讲解Hadoop环境搭建过程时,也没有必要每个命令和每个细节都介绍,在课堂上,学生也没有电脑,即使有电脑,在短时间内也不可能跟得上老师讲课的节奏去操作实践,因此,讲每个命令和每个细节的意义是不大的。教师只要把主要安装过程和遇到的问题讲清楚即可,其他细节问题,都可以让学生在课后参考《大数据技术原理与应用 第二章 大数据处理架构Hadoop 学习指南》,自己动手去完成Hadoop环境搭建。

另外,本章的PPT(2016年1月23日版本)中,增加了一些教材没有的内容:

(1)2.1.4 Apache Hadoop版本演变:Hadoop已经从1.0发展到2.0以上版本,教材作为入门级书籍,只介绍了Hadoop1.0。在授课时,有必要补充介绍Hadoop2.0的一些新变化,比如,HDFS2.0中就比HDFS1.0增加了NN Federation和HA,MapReduce1.0进化到了MapReduce2.0(也被称为YARN)。到底什么是YARN?可以给学生简要介绍。要了解什么是YARN,教师可以下载并查看《Hadoop架构再探讨》这个PPT中有关YARN的部分内容。

(2)2.1.5 Hadoop各种版本:学生上机实验都使用使用Apache Hadoop,但是,教师也有必要让学生了解一些公司发行的Hadoop版本及其各方面性能。可以参考网络文献《Hadoop版本选择探讨》。

(3)2.2 Hadoop项目结构:这个PPT中放置的Hadoop生态系统结构图,已经不是教材上的图2-2Hadoop项目结构,而是用了一张具有更多组件的图,图中各个组件的功能,已经在PPT中给出了说明。这个部分,关于Pig、Hive、HBase等关键组件的相互关系,可以参考网络文献《Hadoop生态上几个技术的关系与区别:hive、pig、hbase 关系与区别》。

(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

作业下载:请到“林子雨编著《大数据技术原理与应用》教材配套上机练习题目”中下载“习题2-1 安装Hadoop”2016年1月24日版本。

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

作业目的:

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

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

作业说明:学生在完成该作业之前,一定要仔细阅读《大数据技术原理与应用 第二章 大数据处理架构Hadoop 学习指南》,可以一边阅读,一边按照指南来一步步完成操作。

【机房上机实验指南】(学生在学校机房进行统一上机做题,安排连续四节课上机时间)

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

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

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

实验指南下载:请到厦门大学林子雨编著《大数据技术原理与应用》教材配套机房上机实验指南下载

 

第3章 Hadoop分布式文件系统

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

【配套讲义】请到“林子雨编著《大数据技术原理与应用》教材配套讲义PPT” 下载本章讲义PPT。

【课程视频】欢迎访问“林子雨主讲厦门大学2016春季学期《大数据技术原理与应用》课程视频”,观看本章配套教学视频。

【学习指南】请访问“林子雨编著《大数据技术原理与应用》教材配套学习指南”,查看本章的学习指南。

【备课说明】

本章的讲义PPT(请下载2016年1月23日版本)中,在“3.3.2 名称节点和数据节点”部分,增加了对FsImage和EditLog的背后机制的一些介绍,这个是教材中没有的内容,教师只要看PPT介绍就可以理解该内容。

在上机实践操作方面,教师可以阅读《大数据技术原理与应用 第三章 Hadoop分布式文件系统 学习指南》,从中可以了解到:如何用Shell命令操作HDFS以及如何利用Java API和HDFS进行交互。需要注意的是,在第2章中,已经安装了Hadoop,里面已经包含了HDFS和MapReduce组件,因此,本章可以直接在第2章已经安装好的环境下执行操作,不要额外安装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 fs = FileSystem.get(conf);

FSDataInputStream in = fs.open(new Path(uri));

客户端调用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 fs = FileSystem.get(conf);

FSDataOutputStream out = fs.create(new Path(uri));

客户端调用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操作

作业下载:请到“林子雨编著《大数据技术原理与应用》教材配套上机练习题目”中下载“习题3-1 熟悉常用的HDFS操作”2016年1月24日版本。

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

作业目的:

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

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

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

作业说明:学生在完成该作业之前,一定要仔细阅读《大数据技术原理与应用 第三章 Hadoop分布式文件系统 学习指南》,可以一边阅读,一边按照指南来一步步完成操作。

 

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

作业下载:请到“林子雨编著《大数据技术原理与应用》教材配套上机练习题目”中下载“习题3-2 HDFS Java API编程实践”2016年3月2日版本。

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

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

作业说明:学生在完成该作业之前,一定要仔细阅读《大数据技术原理与应用 第三章 Hadoop分布式文件系统 学习指南》,可以一边阅读,一边按照指南来一步步完成操作,同时,可以到“林子雨编著《大数据技术原理与应用》教材配套讲义PPT”中下载第三章HDFS讲义PPT(2016年3月2日版本),参考PPT里面的介绍。

【机房上机实验指南】(学生在学校机房进行统一上机做题,安排连续四节课上机时间)

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

实验目的:

  1. 理解HDFS在Hadoop体系结构中的角色;
  2. 熟练使用HDFS操作常用的Shell命令;
  3. 熟悉HDFS操作常用的Java API。

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

实验指南下载:请到厦门大学林子雨编著《大数据技术原理与应用》教材配套机房上机实验指南下载

第4章 分布式数据库HBase

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

【配套讲义】请到“林子雨编著《大数据技术原理与应用》教材配套讲义PPT” 下载本章讲义PPT。

【课程视频】欢迎访问“林子雨主讲厦门大学2016春季学期《大数据技术原理与应用》课程视频”,观看本章配套教学视频。

【学习指南】请访问“林子雨编著《大数据技术原理与应用》教材配套学习指南”,查看本章的学习指南。

【备课说明】

本章内容教材介绍已经比较详细,因此,理论内容只要阅读教材即可。HBase是BigTable的开源实现,对BigTable感兴趣的老师,作为拓展知识,可以阅读林子雨翻译的Google公司论文《Google BigTable(中文版)》。本章的上机实践,情参考《大数据原理与应用 第四章 分布式数据库HBase 学习指南》,里面详细介绍了如何安装HBase以及如何进行简单编程。

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

典型互联网搜索问题:BigTable发明的原因

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

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

建立互联网索引

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

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

搜索互联网

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

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

5 搜索结果提交给用户。 

讲完典型HBase使用场景以后,我们来看看其他使用HBase的地方。愿意使用HBase的用户数量在过去几年里迅猛增长。部分原因在于HBase产品变得更加可靠和性能更好,更多原因在于越来越多的公司开始投入大量资源来支持和使用它。随着越来越多的商业服务供应商提供支持,用户越发自信地把HBase应用于关键应用系统。一个设计初衷是用来存储互联网持续更新网页副本的技术,用在互联网相关的其他方面也很是合适的。例如,HBase在社交网络公司内部和周围各种各样的需求中找到了用武之地。从存储个人之间的通信信息,到通信信息分析,HBase成为FacebookTwitter,和StumbleUpon等公司里的关键基础架构。(了解更多HBase应用场景,请参考网络文献《HBase 使用场景和成功案例》)

 

本章讲义PPT的“4.1.2HBase简介”中,增加了“Hadoop已经有了HDFS和MapReduce,为什么需要HBase?”这个问题的解答,让学生明白一个产品诞生的背景。那么,为什么传统关系数据库无法满足现有需求,需要使用HBase数据库呢?关于这个问题,作为拓展知识,有兴趣的教师,可以加入“大数据课程教师交流群(QQ群号 461510122)”,在群共享文件中,下载电子书《代志远-HBase权威指南中文版.pdf》,阅读第5页(纸上的页码第5页)“1.2 关系数据库系统的问题”。

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

  • 4.6.1 HBase实际应用中的性能优化方法
  • 4.6.2 HBase性能监视
  • 4.6.3 在HBase之上构建SQL引擎
  • 4.6.4 构建HBase二级索引

其中,关于“4.6.1 HBase实际应用中的性能优化方法”,介绍了行键、列族、缓存、最大版本和生存周期等HBase性能参数优化方法,这些内容来自网络文献《HBase性能优化方法》。

“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.3 在HBase之上构建SQL引擎”的内容,可以阅读网络文章《为啥HBase需要搭建SQL引擎层》。

“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构建二级索引:

  • Hindex二级索引:华为公司开发的纯 Java 编写的HBase“二级索引”,兼容 Apache HBase 0.94.8,可以支持多个表索引和多个列索引;(备注:每个表都有一个聚簇索引clustered index,除此之外的表上的每个非聚簇索引都是二级索引,又叫辅助索引secondary indexes);
  • HBase+Redis:;利用HBase0.92版本之后引入的协处理器(Coprocessor)功能,完成二级索引构建,同时采用Redis数据库来缓存索引。Redis是一款键值数据库产品,一般直接运行在内存中,可以作为HBase的客户端缓存,可以将索引实时更新到Redis中,然后定时从Redis更新索引到Hbase的Indexing Table中,这样可以加快写负载的执行效率;这里可以参考网络文章《HBase二级索引方案总结》和《Hbase中的Coprocessor》,看完这两篇文章后,就可以理解这种解决方案的原理了;
  • HBase+solr:基于Solr的HBase多条件查询原理很简单,将HBase表中涉及条件过滤的字段和rowkey在Solr中建立索引,通过Solr的多条件查询快速获得符合过滤条件的rowkey值,拿到这些rowkey之后在HBase中通过指定rowkey进行查询。这里可以参考网络文章《基于Solr的HBase多条件查询原理》、《HBase高性能复杂条件查询引擎》和《基于solr实现hbase的二级索引》。

在讲解本章编程内容时,可以参考厦大数据库实验室编写的教程《大数据原理与应用 第四章 分布式数据库HBase 学习指南》。

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

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

作业下载:请到“林子雨编著《大数据技术原理与应用》教材配套上机练习题目”中下载“习题4-1 熟悉常用的HBase操作”2016年1月24日版本。

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

作业目的:

  1. 理解HBase在Hadoop体系结构中的角色;
  2. 熟练使用HBase操作常用的Shell命令;
  3. 熟悉HBase操作常用的Java API。

作业说明:学生在完成该作业之前,一定要仔细阅读《大数据原理与应用 第四章 分布式数据库HBase 学习指南》,可以一边阅读,一边按照指南来一步步完成操作。

【机房上机实验指南】(学生在学校机房进行统一上机做题,安排连续四节课上机时间)

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

实验目的:

  1. 理解HBase在Hadoop体系结构中的角色;
  2. 熟练使用HBase操作常用的Shell命令;
  3. 熟悉HBase操作常用的Java API。

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

实验指南下载:请到厦门大学林子雨编著《大数据技术原理与应用》教材配套机房上机实验指南下载

第5章 NoSQL数据库

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

【配套讲义】请到“林子雨编著《大数据技术原理与应用》教材配套讲义PPT” 下载本章讲义PPT。

【课程视频】欢迎访问“林子雨主讲厦门大学2016春季学期《大数据技术原理与应用》课程视频”,观看本章配套教学视频。

【学习指南】请访问“林子雨编著《大数据技术原理与应用》教材配套学习指南”,查看本章的学习指南。

【备课说明】

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

关于为什么要使用NoSQL数据库,推荐阅读网络文章《NoSQL开篇——为什么要使用NoSQL》。

关于四种不同类型的NoSQL数据库到底各自适用于哪些情形,建议阅读网络王章《如何选择键值型数据库和文档型数据库》和《如何选择列族数据库和图形数据库》。

文档数据库是NoSQL数据库中非常受欢迎的一类产品,关于文档数据库,可以阅读网络文章《关系型到文档型的跨越:颠覆你对数据库数据模型的认识》。

关于不同类型的数据库产品的特点比较,建议阅读NoSQL专家颜开撰写的网络文章《NoSQL反模式 – 文档数据库篇》。

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

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

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

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

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

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

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

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

关于最终一致性,可以参考《Eventually Consistent:最终一致性》,这是Werner Vogel在2008年发布在ACM  Queue上的一篇数据库方面的重要文章,阐述了NoSQL数据库的理论基石--最终一致性,对传统的关系型数据库(ACID,Transaction)做了较好的补充。

在学习完本章内容后,如果教师或学生对相关的NoSQL数据库感兴趣,可以阅读《七天七数据库》这本书,可以到网络购买正版教材。

如果想简单了解一下NoSQL数据的使用方法,教师可以阅读厦门大学数据库实验室制作的学习指南《MongoDB简易安装和操作教程》和《Redis安装与运行》,其中,MongoDB是文档数据库,Redis是键值数据库,二者都属于NoSQL数据库。

关于文档数据库MongoDB,可以参考网络文献《MongoDB 概念解析》。

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

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

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

作业下载:请到“林子雨编著《大数据技术原理与应用》教材配套上机练习题目”中下载“习题5-1 关系数据库和NoSQL数据库操作实践”2016年1月24日版本。

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

作业目的:

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

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

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

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

作业下载:请到“林子雨编著《大数据技术原理与应用》教材配套上机练习题目”中下载“习题5-2 熟悉MongoDB的基本操作”2016年3月14日版本。

习题目的:

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

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

【机房上机实验指南】(学生在学校机房进行统一上机做题,安排连续四节课上机时间)

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

实验目的:

  1. 理解四种数据库(MySQL,HBase,Redis,MongoDB)的概念以及不同点;
  2. 熟练使用四种数据库操作常用的Shell命令;
  3. 熟悉四种数据库操作常用的Java API。

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

实验指南下载:请到厦门大学林子雨编著《大数据技术原理与应用》教材配套机房上机实验指南下载

 

第6章 云数据库

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

【配套讲义】请到“林子雨编著《大数据技术原理与应用》教材配套讲义PPT” 下载本章讲义PPT。

【课程视频】欢迎访问“林子雨主讲厦门大学2016春季学期《大数据技术原理与应用》课程视频”,观看本章配套教学视频。

【学习指南】请访问“林子雨编著《大数据技术原理与应用》教材配套学习指南”,查看本章的学习指南。

【备课说明】

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

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

关于Amazon AWS的更多介绍,可以阅读网络文章《Amazon RDS介绍》、《云中的MySQL 亚马逊RDS初体验》、《AWS平台与EC2介绍》。

本章在上机实践阿里云RDS数据库时,如果碰到一些小问题,请参考《大数据技术原理与应用 第六章 云数据库 学习指南》。

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

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

作业下载:请到“林子雨编著《大数据技术原理与应用》教材配套上机练习题目”中下载。

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

作业目的:

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

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

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

作业说明:学生在完成该作业之前,一定要仔细阅读教材中的“第6.4节云数据库实践”内容,并同时阅读《大数据技术原理与应用 第六章 云数据库 学习指南》。

第7章 MapReduce

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

【配套讲义】请到“林子雨编著《大数据技术原理与应用》教材配套讲义PPT” 下载本章讲义PPT。

【课程视频】欢迎访问“林子雨主讲厦门大学2016春季学期《大数据技术原理与应用》课程视频”,观看本章配套教学视频。

【学习指南】请访问“林子雨编著《大数据技术原理与应用》教材配套学习指南”,查看本章的学习指南。

【备课说明】

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

在讲义PPT中,还增加了第7.2节“MapReduce体系架构”,这是教材中没有的内容,教师可以根据PPT上文字进行消化理解,或者也可以阅读网络文献《MapReduce的体系结构》。增加了这个小节内容后,教材中的内容在PPT中的章节编号都要顺序推延。

讲义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任务的几种方式”,这是教材中没有的。这里简单解释一下:

  • Hadoop jar:在Hadoop平台上编译、打包、运行 Hadoop MapReduce 程序,可以参考厦门大学数据库实验室撰写的教程《使用命令行编译打包运行自己的MapReduce程序 Hadoop2.6.0》。
  • Pig:Pig为Hadoop应用程序提供了更加接近结构化查询语言SQL的接口。Pig就是为了屏蔽MapReduce开发的繁琐细节,为用户提供Pig Latin这样近SQL语言处理能力,让用户可以更方便地处理海量数据。Pig将SQL语句翻译成MR的作业的集合,并通过数据流的方式将其组合起来。关于Pig,可以参考IBM公司的网络文章《使用 Apache Pig 处理数据》。
  • Hive:Hive提供了Hadoop上的数据仓库功能,Hive的各种操作都会被Hive系统自动转换成一系列MapReduce任务来运行。
  • Python:可以使用Python实现Hadoop MapReduce程序,可以参考网络文章《使用Python实现Hadoop MapReduce程序》。
  • Shell脚本:用Shell脚本也可以实现MapReduce程序,可以参考网络文章《用PHP和Shell写Hadoop的MapReduce程序》。

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

本章的上机实践内容,请教师阅读厦门大学数据库实验室撰写的学习指南《大数据原理与应用 第七章 MapReduce 学习指南》,里面介绍了两种编译运行MapReduce程序的方法,一种是用Eclipse编译运行,另一种是使用命令行编译打包运行。

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

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

作业下载:请到“林子雨编著《大数据技术原理与应用》教材配套上机练习题目”中下载。

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

作业目的:

  • 理解Hadoop中MapReduce模块的处理逻辑
  • 熟悉MapReduce编程

作业说明:学生在完成该作业之前,一定要仔细阅读教材中的“第7.5节MapReduce编程实践”内容,并同时阅读厦门大学数据库实验室撰写的学习指南《大数据原理与应用 第七章 MapReduce 学习指南》。

备注:在“林子雨编著《大数据技术原理与应用》教材配套上机练习题目”页面中,还提供了“习题7-1 MapReduce编程初级实践”和“习题7-2 用MapReduce实现数据集连接(Join)操作”,这两道习题有一定难度,可做,可不做,教师可以自己决定是否让学生做该习题。

【机房上机实验指南】(学生在学校机房进行统一上机做题,安排连续四节课上机时间)

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

实验目的:

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

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

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

实验指南下载:请到厦门大学林子雨编著《大数据技术原理与应用》教材配套机房上机实验指南下载

第8章 流计算

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

【配套讲义】请到“林子雨编著《大数据技术原理与应用》教材配套讲义PPT” 下载本章讲义PPT。

【课程视频】欢迎访问“林子雨主讲厦门大学2016春季学期《大数据技术原理与应用》课程视频”,观看本章配套教学视频。

【学习指南】请访问“林子雨编著《大数据技术原理与应用》教材配套学习指南”,查看本章的学习指南。

【备课说明】

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

本章的讲义PPT中,增加了“8.5 Storm安装和运行实例”,这个内容教材中没有,这个部分PPT的内容来自厦门大学数据库实验室制作的教程《章节配套专题博客8-1 Storm安装教程》。关于如何安装 Storm和运行Storm实例程序,可以参考厦门大学数据库实验室制作的教程《章节配套专题博客8-1 Storm安装教程》和《使用Maven编译运行Storm入门代码(Storm starter)》。

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

另外,本章讲义PPT和授课视频中增加了Spark Stream和Samza流计算的介绍,这两部分内容的介绍可以参考教材新增第16章Spark的电子书,请点击这里下载PDF格式电子书

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

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

作业下载:请到“林子雨编著《大数据技术原理与应用》教材配套上机练习题目”中下载“习题8-1 大数据技术与流量分析-网络攻击检测”2016年1月24日版本。

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

作业目的:

  • 了解DDoS攻击,了解DDoS攻击的原理与检测方法;
  • 掌握基于Storm的实时流量日志处理流程。

作业说明:请学生在完成作业之前,需要学习基本的 Python编程,并且仔细阅读厦门大学数据库实验室制作的教程《章节配套专题博客8-1 Storm安装教程》和《使用Maven编译运行Storm入门代码(Storm starter)》。

第9章 图计算

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

【配套讲义】请到“林子雨编著《大数据技术原理与应用》教材配套讲义PPT” 下载本章讲义PPT。

【课程视频】欢迎访问“林子雨主讲厦门大学2016春季学期《大数据技术原理与应用》课程视频”,观看本章配套教学视频。

【学习指南】请访问“林子雨编著《大数据技术原理与应用》教材配套学习指南”,查看本章的学习指南。

【备课说明】

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

如果上课时间不够用,那么,讲义PPT中“第9.7节Pregel和MapReduce实现PageRank算法的对比”这个内容可以不讲,让学生自学。

关于上机实践图计算软件,由于Pregel是商业软件,不提供免费试用,所以,在实际教学中,无法直接上机实践Pregel。幸运的是,Hama是开源实现了Pregel的图计算框架,免费安装使用。因此,教师可以阅读厦门大学数据库实验室制作的教程《章节配套专题博客9-1  图计算框架Hama的基础操作实践》,了解Hama的安装配置以及如何用Hama解决一些算法问题。

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

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

作业下载:请到“林子雨编著《大数据技术原理与应用》教材配套上机练习题目”中下载“习题9-1 图计算框架Hama的基础操作实践”2016年1月24日版本。

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

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

作业说明:学生在完成该作业之前,请先阅读厦门大学数据库实验室制作的教程《章节配套专题博客9-1  图计算框架Hama的基础操作实践》。

第10章 数据可视化

【课程内容】介绍了数据可视化的概念、发展历程、重要作用,并介绍了几种重要的可视化工具,包括入门级工具、信息图表工具、地图工具、时间线工具、高级分析工具,最后给出了一些可视化典型案例

【配套讲义】请到“林子雨编著《大数据技术原理与应用》教材配套讲义PPT” 下载本章讲义PPT。

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

【学习指南】请访问“林子雨编著《大数据技术原理与应用》教材配套学习指南”,查看本章的学习指南。

【备课说明】

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

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

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

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

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

作业下载:请到“林子雨编著《大数据技术原理与应用》教材配套上机练习题目”中下载“习题10-1 D3可视化库安装和使用”2016年1月24日版本。

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

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

作业说明:学生在完成作业之前,请仔细阅读厦门大学数据库实验室制作的实践教程《章节配套专题博客10-1:D3可视化库使用指南》。实际上,本章中,厦门大学数据库实验室还设计了另外几道作业,包括习题10-2、10-3和10-4等,这些习题供教师选择,比如,在不同年份让学生完成不同作业,但是,在第一年授课,让学生完成上面的“习题10-1 D3可视化库安装和使用”即可。

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

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

【配套讲义】请到“林子雨编著《大数据技术原理与应用》教材配套讲义PPT” 下载本章讲义PPT。

【课程视频】欢迎访问“林子雨主讲厦门大学2016春季学期《大数据技术原理与应用》课程视频”,观看本章配套教学视频。

【备课说明】

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

本章安排2个课时,如果讲完教材内容后,上课时间有剩余,教师可以讲解一下“习题11-1 大数据推荐系统”中的天池大数据竞赛的相关知识。

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

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

作业下载:请到“林子雨编著《大数据技术原理与应用》教材配套上机练习题目”中下载“习题11-1 大数据推荐系统”2016年1月24日版本。

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

作业目的:

  • 了解大数据在互联网领域的应用——推荐系统;
  • 了解推荐系统原理以及常用的推荐算法;
  • 掌握推荐算法的实践流程。

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

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

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

 

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

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

 

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

说明:第14章基于Hadoop的数据仓库Hive,是2016年新增章节,不在2015年8月1日由人民邮电出版社出版的《大数据技术原理与应用》(第1版)教材中,本章将被放入到第2版教材中。

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

【配套讲义】请到“林子雨编著《大数据技术原理与应用》教材配套讲义PPT” 下载本章讲义PPT。

【课程视频】欢迎访问“林子雨主讲厦门大学2016春季学期《大数据技术原理与应用》课程视频”,观看本章配套教学视频。

【学习指南】请访问“林子雨编著《大数据技术原理与应用》教材配套学习指南”,查看本章的学习指南,里面包含了详细Hive安装配置和编程实践内容。

【教材电子书】本章内容属于2016年林子雨新编写的章节,不在第1版教材中,请点击这里下载本章教材PDF格式电子书

【备课说明】

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

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

 

第15章 Hadoop架构再探讨

第15章Hadoop架构再探讨,是2016年新增章节,不在2015年8月1日由人民邮电出版社出版的《大数据技术原理与应用》(第1版)教材中,本章将被放入到第2版教材中。

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

【配套讲义】请到“林子雨编著《大数据技术原理与应用》教材配套讲义PPT” 下载本章讲义PPT。

【课程视频】欢迎访问“林子雨主讲厦门大学2016春季学期《大数据技术原理与应用》课程视频”,观看本章配套教学视频。

【教材电子书】本章内容属于2016年林子雨新编写的章节,不在第1版教材中,请点击这里下载本章教材PDF格式电子书

【备课说明】

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

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

第16章 Spark

第16章Spark,是2016年新增章节,不在2015年8月1日由人民邮电出版社出版的《大数据技术原理与应用》(第1版)教材中,本章将被放入到第2版教材中。

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

【配套讲义】请到“林子雨编著《大数据技术原理与应用》教材配套讲义PPT” 下载本章讲义PPT。

【课程视频】欢迎访问“林子雨主讲厦门大学2016春季学期《大数据技术原理与应用》课程视频”,观看本章配套教学视频。

【学习指南】请访问“林子雨编著《大数据技术原理与应用》教材配套学习指南”,查看本章的学习指南。

【教材电子书】本章内容属于2016年林子雨新编写的章节,不在第1版教材中,请点击这里下载PDF格式电子书

【备课说明】

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

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

作业题目:习题16-1 熟悉常用的Spark操作

作业下载:请到“林子雨编著《大数据技术原理与应用》教材配套上机练习题目”中下载“习题16-1 熟悉常用的Spark操作”2016年4月20日版本。

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

作业目的:

  1. 熟悉Spark Shell的使用;
  2. 熟悉常用的Spark RDD API、Spark SQL API和Spark DataFrames API。

————–备课指南全部结束————-