Spark概述
当前的大数据技术主要可分为两大快
一类是Hadoop,用来做弹性存储
一类是Spark,用来做计算引擎
Spark组件
- Spark SQL
- Spark Streaming
- MLLib
- GraphX
Spark由scala语言编写, 用Java、Scala、Python、R语言都可以去开发
Spark安装不需要Hadoop环境,需要JDK(Hadoop是基于Java生态的,Spark是基于Scala的)
版本
spark1.6版本是一个很稳定的版本,好的公司,如果很早之前就上了spark的技术,一般都是用的1.6
而如果新公司一般都会选择新的版本2.x版本不同版本之间会有一个API的变化
scala2.10兼容的spark是1.6
scala2.11兼容的spark是2.x
Spark运行架构
数据从磁盘里读出来以后,被封装成一个RDD,可以对RDD里面的数据进行分区。一个RDD可以包含多个分区,这个RDD里面相关的分析数据可以放在不同的分析节点上面并行计算。
Spark不同的RDD之间,会通过各种转换动作等操作,形成一个相互的依赖关系,这个依赖关系就构成了一个有向无环图DAG
RDD
网页爬虫是不能用Spark程序做的,因为RDD原理不支持这种细粒度数据修改,(网页爬虫要不断地增量更新相关数据,要对很细节的数据项进行修改)只支持粗粒度的操作,像map、filter
RDD特性
如果某个RDD坏掉,只要从它上面的父亲RDD重新计算一下,转换一下,就可以得到它丢失的分区,非常简单
RDD的依赖关系和运行过程
宽依赖一般都是存在Shuffle的情况
Stage会划分出两种类型的Satge