第一周3月1日
- 区分spark和mapreduce
- Mapreduce计算流程
- Spark特征
- 装环境
一、区分spark和mapreduce
- spark是一个分布式的计算框架,和mapreduce作用一样,都是用于数据的计算。
集群(划龙舟,多个人做相同的事情) 分布式(汉堡,多个人做不同的事情)
- Spark和mapreduce区别:
Spark基于内存的计算,会将中间结果放到内存中;mapreduce基于磁盘的,内存>磁盘,spark速度大于mapreduce。
Spark基于线程来完成计算的; mapreduce(map+reduce)基于进程来完成计算的,线程切换任务要比进程快,spark(多步)>mapreduce(2步)
- spark用scala语言来编写的,mapreduce HDFS java语言开发的。Scala基于java的派生语言,在一定程度上优于java语言的。
- spark基于apach基金会下的项目,开源 apach.org
二、mapreduce的计算流程
当我们使用mapreduce进行计算任务,首先会将计算任务提交给yarn进行资源调度;
在yarn中使用ResourceManager这个主服务,ResourceManager接收到以后会随机找到一个NodeManager,创建一个container容器,congtainer就是资源空间,在容器上运行一个ApplicationMaster的进程,该进程用于管理计算任务。
ApplicationMaster创建之后会和ResourceManager保持通信,同时向ResourceManager申请资源;
资源申请成功后,找到NodeManager创建container资源空间运行map进程,map获取HDFS上存储的文件数据,进行计算处理。
Map处理完成后,会继续进行reduce进程计算,最终将最终的数据保存在HDFS上。
三、spark特性
高效性:计算速度快(基于内存+线程)
易用性:支持多种语言开发的(java python scala r)
通用性:支持多种计算方式
(sql计算(离线计算) 图计算 机器学习计算 流式数据计算(实时数据仓的计算) )
支持多种开发方式
(交互式方式 脚本式方式 )
兼容性:
支持第三方工具的接入:
存储工具:HDFS Hbase kafaka
资源调度:yarn standalone
支持多种操作系统:linux windows mac
四、spark架构
第一层叫做工具层:主要让大家了解使用什么工具来操作spark,都是操作spark的工具。
第二层叫做核心计算层:RDD执行计算,所有上边的工具都是用RDD来进行计算的。
第三层叫做资源调度层:yarn或者使用spark自带的standalone都可以,除了资源调度还有一层叫做存储层,实现的数据的读取和写入,可以写入或者读取到hdfs hbase kafaka中。
五、spark部署
1.本地模式部署(local 单机模式部署)
使用一台服务器进行部署;只有一个进程,通过内部的多个线程模拟spark的运行环境。
一个进程mapreduce(map+reduce线程?no)
2.集群模式部署:standalone yarn 云服务
集群使用多台服务器
多台服务器需要统一的管理,使用资源调度服务(yarn standalone)
3.云服务
阿里云 腾讯云 谷歌云 亚马逊等等
云服务的隐私?数据放到本地,需要计算云服务计算,再把数据放到本地。
六、spark的架构角色
Yarn的角色—4类角色
资源管理层面:
集群资源的管理者—ResourceManager
单机资源的管理者—NodeManager
ResourceManager是集群资源的管理者,管理的是整个集群的资源。
NodeManager是管理的单机资源—当前服务器资源的管理者,管一个机器。
他们两个一块管理整个集群的资源,多个NodeManager把多个机器的资源都管理起来,他们统一去向ResourceManager汇报,这样资源管理就是一个ResourceManager配合多个NodeManager完成了。
任务计算层面:
单计算任务管理者:ApplicationMaster
单计算任务执行者:Task
Yarn最终要实现的功能就是计算,ApplicationMaster就是计算任务的管家,Task就是计算任务的工人。
Spark角色
我们之所以学习yarn就是为了对比yarn来学习spark
Spark的角色:
资源层面:
集群资源的管理者—Master
单机资源的管理者—worker
任务计算层面:
单任务管理者:Driver
单任务执行者:Executor
注意,正常情况下Executor就是干活的,但是在特殊情况下(local模式)Driver既作为管理者,又作为工人,local模式是单一模式,只有一个进程。
一个进程
Mapreduce:一个进程 无线程(map+reduce)
Spark:一个进程 多线程