spark的惰性计算_大数据之Spark原理详解

Hadoop存在缺陷:

基于磁盘,无论是MapReduce还是YARN都是将数据从磁盘中加载出来,经过DAG,然后重新写回到磁盘中

计算过程的中间数据又需要写入到HDFS的临时文件

这些都使得Hadoop在大数据运算上表现太“慢”,Spark应运而生。

Spark的架构设计:

d993a706140d2437f359c9f66d6c7820.png

ClusterManager负责分配资源,有点像YARN中ResourceManager那个角色,大管家握有所有的干活的资源,属于乙方的总包。

WorkerNode是可以干活的节点,听大管家ClusterManager差遣,是真正有资源干活的主。

Executor是在WorkerNode上起的一个进程,相当于一个包工头,负责准备Task环境和执行Task,负责内存和磁盘的使用。

Task是施工项目里的每一个具体的任务。

Driver是统管Task的产生与发送给Executor的,是甲方的司令员。

SparkContext是与ClusterManager打交道的,负责给钱申请资源的,是甲方的接口人。

整个互动流程是这样的:

1 甲方来了个项目,创建了SparkContext,SparkContext去找ClusterManager申请资源同时给出报价,需要多少CPU和内存等资源。ClusterManager去找WorkerNode并启动Excutor,并介绍Excutor给Driver认识。

2 Driver根据施工图拆分一批批的Task,将Task送给Executor去执行。

3 Executor接收到Task后准备Task运行时依赖并执行,并将执行结果返回给Driver

4 Driver会根据返回回来的Task状态不断的指挥下一步工作,直到所有Task执行结束。

再看下图加深下理解:

d2beaf7fc7dfa4463bdd33ea94d71bbe.png

Spark的核心组件:

f10755be73080cf1efd4bda7a424e98d.png

核心部分是RDD相关的,就是我们前面介绍的任务调度的架构,后面会做更加详细的说明。

SparkStreaming:

基于SparkCore实现的可扩展、高吞吐、高可靠性的实时数据流处理。支持从Kafka、Flume等数据源处理后存储到HDFS、DataBase、Dashboard中。

MLlib:

关于机器学习的实现库,关于机器学习还是希望花点时间去系统的学习下各种算法,这里有一套基于Python的ML相关的博客教材http://blog.csdn.net/yejingtao703/article/category/7365067。

SparkSQL:

Spark提供的sql形式的对接Hive、JDBC、HBase等各种数据渠道的API,用Java开发人员的思想来讲就是面向接口、解耦合,ORMapping、Spring Cloud Stream等都是类似的思想。GraphX:

关于图和图并行计算的API,我还没有用到过。

RDD(Resilient Distributed Datasets) 弹性分布式数据集

RDD支持两种操作:转换(transiformation)和动作(action)

转换就是将现有的数据集创建出新的数据集,像Map;动作就是对数据集进行计算并将结果返回给Driver,像Reduce。

RDD中转换是惰性的,只有当动作出现时才会做真正运行。这样设计可以让Spark更见有效的运行,因为我们只需要把动作要的结果送给Driver就可以了而不是整个巨大的中间数据集。

缓存技术(不仅限内存,还可以是磁盘、分布式组件等&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值