当前课程知识点:互联网大规模数据分析技术 >  第五章 大数据平台与技术 >  第12讲 大数据处理平台Spark >  第12讲 大数据处理平台Spark

返回《互联网大规模数据分析技术》慕课在线视频课程列表

第12讲 大数据处理平台Spark在线视频

下一节:第13讲 NoSQL数据库

返回《互联网大规模数据分析技术》慕课在线视频列表

第12讲 大数据处理平台Spark课程教案、知识点、字幕

欢迎来到

互联网大规模数据分析技术

的课堂

我是今天的主讲教师李琳

来自武汉理工大学

今天我们一起来学习

第12讲

大数据处理平台Spark

我们将从以下4个方面

给大家讲述一下

Spark大数据处理平台

Spark最初是由

美国加州伯克利大学的

AMP实验室于2009年开发的

是基于内存计算的

大数据并行计算框架

可以构建大型的低延迟的

数据分析应用程序

直到2013年

才加入Apache的孵化器

之后迅速的发展成为

三大分布式计算系统

开源的三大分布式计算系统

也就是我们的

Hadoop、Spark和Storm

2014年的

有一项非常著名的记录

它打破了Hadoop保持的

基准排序记录

是一个什么样的记录呢

大家看一下我这里的数据

Spark在206个计算节点上

只用了23分钟

完成了100TB数据的排序

而同样的数据

Hadoop用了多长时间呢

大家可以看到

Hadoop用了72分钟

而且耗费的计算资源

达到了2000个

也就是说

Spark用1/10的计算资源

获得了比Hadoop快3倍的速度

所以这样一个计算平台

一经推出

获得了

学术界和工业界的广泛关注

Spark有如下几个特点

我们在这里

能用四条给大家进行了总结:

一、运算速度快

它是基于内存的计算

后面的我们会做详细的讲解

二、容易使用

支持多种语言进行编程

三、通用性

Spark提供了完整的

强大的技术栈

包括了SQL的查询、计算

机器学习以及图算法

这样一些组件

同时它的运行模式多样

既可以做集群模式

也可以做单机模式

也可以用到

Amazon的云环境当中

去访问各种数据源

大家看一下

这样一个谷歌的趋势

将Spark与Hadoop

做了一个比较

Spark如今吸引了国内外

各大公司的注意

比如大家熟悉的腾讯

淘宝、百度、亚马逊

在不同程度上都使用了Spark

来构建大规模的数据分析应用

大家可以看到

在2014年这样一个时间点

自从Spark加入了这样一个

开源项目之后呢

它的使用获得了长足的发展

远远超过了Hadoop平台

我们来看一下

Spark支持的编程语言

在这里有一个叫

Scala的编程语言

是一种多范式编程语言

运行于Java平台

并兼容现有的Java程序

这个Scala大家在学习的时候

会遇到一些什么样的特性呢

一、它具有强大的并发性

天生的

就是用来支持分布式计算

二、它的语法非常简捷

等会儿我们会有一个简单的例子

给大家看一下

三、这一个特点非常吸引人

它兼容Java

而且运行速度快

所以可以和基于Java的

Hadoop平台系统

做一个完美的融合

Scala是Spark的主要编程语言

Spark还支持我们

很多熟知的语言

比如说Java、Python和R

所以我们可以看到

Spark平台提供的

多种语言的编程之外

它其实还提供了

这样一个交互式的解释器

对于程序的开发的效率

做了很高的提升

接下来我们看一下一个例子

对比一下Java和Scala

对于我们上一节课

所介绍的WordCount

也就是计数这样一个程序

它的一个编程的

实际代码源代码

可以看到Scala的语法

非常简洁

在这里我们可能只有少数的几行

能够表达了

这样一个分布式的Map计数

Reduce聚合

这样一个聚合操作非常简捷

而我们如果用Java来写呢

会看到这样一大段的源代码

所以相比来Scala简洁明了

那么我们把Spark和Hadoop

做一个对比之后呢

我们发现Hadoop

存在以下一些缺点

主要的一个缺点其实在后面两点

一、IO开销大

接下来我们会用ppt的形式

来跟大家做进一步的讲解

由于它的IO开销

大家注意一下

这IO就是我们计算机当中的

Input和Output

由于这种I/O开销大

会带来延迟高

也就是说任务和任务之间的衔接

涉及到I/O操作

前一个任务完成之前

没有写入硬盘

下一个任务

无法从硬盘当中获取数据

从而导致了这个高延迟

我们来看一下Spark

在这样一些问题上面

它有一些什么样的优点呢

Spark也是MapReduce

大家注意一下

还是我们上一节课讲的

MapReduce的编程

但是它的编程模式

比Hadoop的MapReduce更灵活

而且会支持多种数据集的操作

这个大家在具体的学习当中

再去使用和体会

其次,它不是从磁盘中读数据

它是从内存

我把结果中间结果写到内存

下一步的操作

从内存当中读数据

将远远快于从磁盘

这对于迭代运算的效率非常高

那么我们在后面的课程当中

会给大家介绍谷歌的排序算法

PageRank

它就是一种典型的迭代运算

同时Spark是基于一种

DAG的任务调度

它比Hadoop的迭代机制

执行的效率更高

我们看一下

刚才所讲的

从磁盘当中读数据

和从内存当中读数据

这里我们有一个非常形象的图

来进行对比

这个黑色的部分

就是我们常说的磁盘

大家可以看到

每一次的计算结果要写进磁盘

下一步迭代的时候

要从磁盘当中去读数据

大家记不记得我在上一节课

跟大家讲过

每秒钟从硬盘当中

读数据只有30到35MB

所以这样就大大限制了

计算的速度

而大家可以看到

Spark并不从磁盘当中去读

而是在内存里面

存到内存再从内存当中读

而内存的存取速度

是远远大于我们的磁盘的

所以它的计算速度

显然也就比Hadoop快了很多

在这里我们用一个具体的例子

做了一个对比

一个什么样的对比呢

我们对机器学习当中的

一个最典型的应用

逻辑回归

进行了一次运算

我们发现

用Hadoop进行迭代运算

非常耗资源

而Spark将数据载入内存之后的

迭代运算

可以直接使用内存当中的

中间结果做运算

避免了从磁盘中频繁读取数据

大家可以看到

这样一个时间的差别有多大

我们这个纵轴代表时间

大家可以看到

几乎Spark远小于Hadoop

Hadoop是它的100倍以上

在Spark整个

这样一个生态系统当中

我们作为一个大数据的处理平台

需要解决以下3种类型的运算

一、批量的数据运算

成批成批的处理

二、基于历史数据的交互式查询

交互式

三、基于实时数据流的处理

这三类数据的区别

体现在哪里呢

对于批量数据

你可以在数十分钟到数小时之内

去完成这个计算

而对于交互式的查询

用户没有那么多耐心去等待

你需要在10秒钟到数分钟之内

告诉结果

对于实时的数据流的处理呢

将会对这个实时的要求更高

需要在百毫秒到数秒之间

所以,都是大量的数据

针对数据对时间响应的要求不同

我们以前需要部署

三种不同的计算平台

比如说我们的Hadoop平台

来解决批量数据的处理

比如我们的Impala平台

来解决交互式的处理

比如我们的Storm平台

来解决实时的处理

也就是说当一个应用

面临三种不同的数据处理的时候

需要进行不同平台的整合

这样带来了较高的成本

而且对资源的调度和分配

也带来了困难

Spark的设计遵循一个软件栈

满足不同应用场景的理念

逐渐形成了一整套的生态系统

它在提供内存计算框架的前提下

可以支持SQL的查询

实时流数据的计算

以及我们一些传统的

机器学习算法

它特别在目前流行的

图计算的方面

提供了很好的支持

我们的Spark可以部署在

我们的资源管理器YARN上

提供了一站式的大数据解决方案

所以我们可以看到

spark所提供的生态系统

足以应付我们前面所讲到的

三种应用场景

哪三种应用场景呢

我们再回忆一下

批处理基于内存的计算

交互式查询SQL的查询

流数据的计算

Spark生态系统

已经成为伯克利数据分析栈的

一个重要组成部分

那么在这样组成部分当中

我们可以看到

它的有Spark

和Spark的查询交互式

Spark的流数据

以及Spark的图计算

这样一些计算组件

都已经融入在

这样一个数据分析软件栈当中

我们用这样一个表

来表示一下

Spark生态系统组件的应用场景

大家可以看到复杂的批处理

我们是小时级别

也就是在几个小时内完成计算

与Spark框架相比

我们前面介绍了MapReduce

交互式的查询

大家记住一下

分钟或者是秒

这里Spark的SQL

当然也有其他的

大家可以对比一下

实时数据的查询

对我们的速度要求非常高

毫秒和秒级

除了Spark的Streaming之外

在它之前有非常出名的Storm

和雅虎公司的S4

这个Storm是推特这样一个

大家非常熟悉的公司

所使用的流数据计算框架

那么对于历史数据的挖掘

和机器学习

传统的Hadoop平台上

有Mahout的这样一个工具

我们在课程的后面

也会跟大家做一个介绍

那么我们的Spark提供了

MLlib这样一个组件来完成工作

同时对于图数据

我们有GraphX在Spark当中

那么当然也有Pregel

我们这样一些传统的框架

大家可以在今后的使用当中

对这样一些框架

做一个对比分析之后来决定

针对你的数据

你该采用哪一个框架来

解决你的计算

Hadoop和Spark

可以进行统一的部署

由于Hadoop生态系统的

一些组件所实现的功能

目前还无法用Spark取代

所以我们可以将它们组合在一起

来进行使用

不同的计算框架要统一运行

在一个非常关键的组件YARN

这样一个资源和计算的调度

以及统一的文件系统之上

这样的话

不同的负载应用的混搭

集群的利用效率比较高

而且我们共享底层的存储

避免了数据跨集群的迁移

我们学习了

大数据分析平台Hadoop

又学习了大数据分析平台Spark

有同学会问了

老师那么云计算是什么呢

云计算我们在这里

有一个概念的讲述

当然这个概念不是唯一的概念

我们不同的学者对这个方面

会有他自己不同的理解

我们来看一下

通过整合管理调配

分布在网络各处的计算资源

以互联网统一界面

同时向大量的用户提供服务

这样一种提供服务的方式

用户不需要去部署自己的平台

只需要使用付费

所以我们可以看到云计算本身

也是大数据的一种业务模式

那么大数据是应用需求驱动的

谷歌面临了大规模的数据

它必须要有

相应的大数据处理平台

去解决这个问题

否则它无法提供大数据的运算

无法向大家提供查询

云计算的是一种商业模式

我既然有了这样一些资源

有了这样一些大数据的服务

我能不能向大众去提供

去进行收费

去形成我的商业运营呢

这是很多大数据的公司

正在尝试的一种商业模式

今天的课程我们就到这里

感谢同学们的观看

互联网大规模数据分析技术课程列表:

第一章 大数据与数据挖掘概述

-第1讲 大数据与数据挖掘概述

--第1讲 大数据与数据挖掘概述

第二章 关联规则

-第2讲 频繁项集和关联规则的基本概念

--第2讲 频繁项集和关联规则的基本概念

-第3讲 Apriori算法

--第3讲 Apriori算法

-第4讲 Apriori算法的改进与兴趣度度量

--第4讲 Apriori算法的改进与兴趣度度量

第三章 分类算法

-第5讲 分类的基本概念

--第5讲 分类的基本概念

-第6讲 决策树

--第6讲 决策树

-第7讲 简单贝叶斯分类

--第7讲 简单贝叶斯分类

第四章 聚类算法

-第8讲 聚类的基本概念

--第8讲 聚类的基本概念

-第9讲 K-Means & K-Medoids Clustering

--第9讲 K-Means & K-Medoids Clustering

-第四章 聚类算法--习题

第五章 大数据平台与技术

-第10讲 大数据处理平台Hadoop

--第10讲 大数据处理平台Hadoop

-第11讲 MapReduce编程

--第11讲 MapReduce编程

-第12讲 大数据处理平台Spark

--第12讲 大数据处理平台Spark

-第13讲 NoSQL数据库

--第13讲 NoSQL数据库

第六章 信息检索

-第14讲 Web信息检索简介

--第14讲 Web信息检索简介

-第15讲 信息检索之倒排索引

--第15讲 信息检索之倒排索引

-第16讲 信息检索之TFIDF

--Video

-第17讲 信息检索之相似度排序

--第16讲 信息检索之TFIDF

第七章 Web链接分析

-第18讲 Web搜索之链接分析

--第18讲 Web搜索之链接分析

-第19讲 Web搜索之PageRank

--第19讲 Web搜索之PageRank

-第20讲 Lucene信息检索平台

--第20讲 Lucene信息检索平台

-第七章 Web链接分析--习题

第八章 推荐系统

-第21讲 推荐系统简介

--第21讲 推荐系统简介

-第22讲 推荐系统之协同过滤

--第22讲 推荐系统之协同过滤

-第23讲 Mahout数据挖掘平台

--第23讲 Mahout数据挖掘平台

-第24讲 信息过滤评价体系

--第24讲 信息过滤评价体系

-第八章 推荐系统--习题一

-第八章 推荐系统--习题二

自我提升练习

-综合编程题

第12讲 大数据处理平台Spark笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。