当前课程知识点:互联网大规模数据分析技术 > 第五章 大数据平台与技术 > 第12讲 大数据处理平台Spark > 第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讲 大数据与数据挖掘概述
-第2讲 频繁项集和关联规则的基本概念
-第3讲 Apriori算法
-第4讲 Apriori算法的改进与兴趣度度量
-第5讲 分类的基本概念
-第6讲 决策树
--第6讲 决策树
-第7讲 简单贝叶斯分类
-第8讲 聚类的基本概念
-第9讲 K-Means & K-Medoids Clustering
--第9讲 K-Means & K-Medoids Clustering
-第四章 聚类算法--习题
-第10讲 大数据处理平台Hadoop
-第11讲 MapReduce编程
-第12讲 大数据处理平台Spark
-第13讲 NoSQL数据库
-第14讲 Web信息检索简介
-第15讲 信息检索之倒排索引
-第16讲 信息检索之TFIDF
--Video
-第17讲 信息检索之相似度排序
-第18讲 Web搜索之链接分析
-第19讲 Web搜索之PageRank
-第20讲 Lucene信息检索平台
-第七章 Web链接分析--习题
-第21讲 推荐系统简介
-第22讲 推荐系统之协同过滤
-第23讲 Mahout数据挖掘平台
-第24讲 信息过滤评价体系
-第八章 推荐系统--习题一
-第八章 推荐系统--习题二
-综合编程题