1.首先针对hadoop的数据存储做个总结:

每个块存在三个备份----------------磁盘IO,而且是永久化进行保存,shuffle过程因为需要全局进行排序,中间数据需要溢出持久化写到磁盘中去,这个是十分容易导致磁盘的瓶颈卡顿的,磁盘一边读一边写速度是十分慢的,因此hadoop比较适合做离线处理。

2.spark特点:

1.快速处理的能力,hadoop的MR把中间件结果存储到磁盘,每次都需要读写磁盘,spark允许中间数据放在内存,spark自身由一个个DAG(有向无环图),spark的计算速度要比hadoop块100倍(内存充足的情况下),内存不足的情况下,需要借助磁盘进行部分数据的缓存以及调度,可以使用磁盘计算资源比纯磁盘进行调度速度块10倍。

2.spark是是十分容易使用的,spark支持java,shell.scala以及R,python以及shell。

3.支持查询,自身实现了SQL,因此还支持HIVESQl,直接进行操作。

4。流式计算:这个作为实时

分析,spark使用的是spark streaming.这个hadoop的storm要强很多。

5.saprk的可用性高,saprk的集群模式,可以配置多个master

6.支持的数据源是十分多的,除了自己本身的文件系统,访问HDFS,还支持HIVE,hbase,Tachyon等数据格式。

spark各方面都是十分好的,但是存在很明显的问题是,使用的是内存,因此,成本非常的高。很多情况下,要求数据不用非常及时的给过来,数据量一旦上升到PB,最好使用hadoop,现在HDFS数据的存储,数据分析使用spark。

Spark:

RDD:分布式的弹性数据集

Task:具体的执行任务

JOB:用户提交的作业

Stage:Job分成的不同的阶段

partition:数据的分区,一个RD可以分成很多个Partition

DAG:有向无环图

spark学习的步骤以及几大组件介绍:

Spark Core:是spark的核心,主要是使用SparkContext,

Spark SQL:交互式查询

spark Streaming:流式计算

Grphax:图计算

MLlib:定义众多的算法,定义了机器学习的统计,分类,回归实现,调用了API的接口,节省了学习的成本。

具体过程如下图所示:

spark的特性 spark有哪些特点_数据

1.对于使用spark的用户而言,只需要去初始化sparkContext,当然对应其他的也有自己的Context,Sqlcontext,HiveContext,stramingContext。

2.其中saprkContext通过blockManager和broadCastmanager广播hadoop的配置,DAGscheduler把任务转换为RDD,并且组成了DAG,并且组成了DAG,再进行划分stage.最后由taskcheduler和actorsystem最终把任务交给了clusterManager.

3.集群管理者分配好资源,把具体的任务分配到worker上,worker创建executor来运行具体的task.