Spark
Posted languid
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spark相关的知识,希望对你有一定的参考价值。
大数据追求相关性,不追求因果性。
一、Spark目的
map reuce:先写入磁盘,再从网络读取磁盘数据,mapreduce只适合处理对速度不敏感的离线批量处理。
spark:在一个物理节点,用内存完成各种各样的计算。(有时也用磁盘)
storm:流式,纯粹实时计算框架,吞吐量不高,每条数据过来直接处理这样每次传输校验通信。
sparkstreaming :分布式,准实时框架,把例如秒里的数据都成绩,然后一次性作为batch计算,吞吐量远高于storm。
二、sprk基本工作原理
从hadoop里的hive等读取数据------分布式的放到多个节点上(内存上)----处理好的数据可能移动到其他节点的内存-----迭代式计算(计算操作多个节点并行计算操作)----放入hive,mysql。
PS:mapreduce于spark最大不同在于迭代式计算,map+Reduce就结束了,sprak可以分为n个阶段,因为他是迭代式的。
三、RDD:核心抽象
一个RDD在抽象上代表一个hdfs文件,
分布式数据集:元素集合包含数据,实际上是被分区的,分为多个分区散落在spark集群中的不同节点(一批节点上的一批数据就是RDD)。
最重要特性:提供了容错性,节点失败中自动恢复。默认放在内存,内存不够,被写入磁盘。
四、架构
Spark核心编程:1)定义初始RDD,从哪里读取数据2)定义对RDD的计算操作(算子)
3)循环往复的过程
Spark架构
Driver:编写的spark程序就再driver上,节点之一(进程)
Master:资源调度和分配,集群监控
worker:用自己内存存储RDD的某个或某些partition
Executor:进程
task:线程,启动在executor上(e和t对partitioon进行并行计算,也执行我们定义的map,flatmap等算子操作)
SPRK基本运行架构:
1)driver进程启动,初始化操作,发送请求到master进行注册
2)master接受spark注册申请,发送请求给worker,进行executor调度分配
3)worker接收到请求,启动executor
4)master接受到申请向driver进行反注册,driver就知道哪些executor为它服务
5)注册executor后,正式执行spark程序(创建RDD,读取数据源)
6)hdfs文件被读取到多个worker,也就是初始rdd
6)driver根据rdd定义提交task去executor
7)executor接受task后,启动多个线程执行task
8)task 对rdd的partition数据进行算子操作 形成新的RDDpartition
以上是关于Spark的主要内容,如果未能解决你的问题,请参考以下文章
SparkSpark ShuffleSpark SQL 及 Spark MLlib