Spark RDD解密

1.RDD:基于工厂集的应用抽象
MapReduce基于数据集的:从物理存储上加载数据,然后操作数据 然后写入物理存储设备
基于数据集的操作不适应的场景:
1,不适合于大量的迭代
2,交互式查询
重点是:基于数据流的方式 不能够复用曾经的结果或者中间计算结果
RDD基于工作集的
工作集特点:位置感知(Spark区别于Hadoop:Partitioner后确定stage位置),自动容错,负载均衡
RDD:Resilient Distributed Dataset
弹性之一:自动的进行内存和磁盘数据存储的切换
弹性之二:基于Lineage的高校容错
弹性之三:Task如果失败会自动进行特定次数的重试
弹性之四:Stage如果失败会自动进行特定次数的重试 ,而且只计算失败的分片
弹性之五:checkpoint,(计算比较笨重,把数据都放在磁盘上)和persist(数据在内存到硬盘切换)检查点和持久化
弹性之六:数据调度弹性:DAG,TASK和资源管理无关
弹性之七:数据分片的高度弹性,repartition,内存不大,Block大,分成更小的分片,提高并行度,不会出现OOM
1万到10万个数据分片-》shuffle
coalesce
sparkstreaming经常要checkpoint,patition数据,经常用到以前的东西,1s为一个时间窗口,30s会用到以前的数据
如果一个stage有1000个步骤,只会产生一次中间结果

RDD是一个List 或者是Array,
RDD是分布式函数式编程的抽象
RDD lazy级别,不算,只做标记
2.RDD内幕解密
spark1,2以前不适合大数据集,因为内存限制shuffle,但是3以后就没有这个问题了
spark容错:
常规容错的方式:数据检查点和记录数据的更新

数据中心的网络,检查所有节点,需要有一个拷贝,是通过网络,网络带宽是分布式瓶颈,对存储资源很大消耗
不适合频繁更新,(复杂),重算比较难处理
new MapPartitionsRDD[U, T](this, (context, pid, iter) => iter.flatMap(cleanF)) 其中this表示父RDD
那RDD通过记录数据更新的方式为何很高效
1.Rdd是不可变+lazy
RDD不可变,无法全局修改
每个RDD都会知道它的上一级RDD是什么,如果本RDD出现错误,会去再次调用上级的RDD
stage结束,写磁盘
没有中间结果,就不需要维护
2,RDD是粗粒度,RDD的写操作是粗粒度的!但是 RDD读操作既可以是粗粒度的也可以是细粒度的
如果更新粒度太细太多,那么记录更新成本也不低
分布式大规模,批处理,数据挖掘,—-粗粒度(大多场景粗粒度)
RDD上所有数据分片计算逻辑都是一样的,
每个数据分片compute
Partition到下一个stage,可以调整并行度
lazy,链式展开,不会产生那么多数据结果
getPreferredLocations,spark集群上有数据库集群或数据库集群上有spark集群,数据本地性,知道数据在哪里(数据不动,代码动,spark可以处理一切数据,一切文件格式,spark-一体化多元化的数据处理框架,1。计算更快2.算子更丰富,3.使用更简单,一统数据天下IBM,一切可以被JVM做的,spark都可以做,除了实时事务性处理,银行转账例如,spark计算框架粗粒度,spark streaming实时处理)
Tachyon可以有不同来源的数据,数据可以不同的数据中心
所有的RDD都是返回一个迭代器
好处:(1)sparksql提取数据之后产生新的RDD,不知道它是来源于sparksql,让所有框架无缝结合,
hasNext读取下一个元素
this.type使的scala让接口访问子类
(2)Java面向接口编程,肯定不能调用具体子类的方法, this.type,运行时,指向具体的子类,调用子类的方法
总结:1.无论是sql操作机器学习,机器学习操作sql,流处理sql,流处理图计算,基于RDD
2.调用子类,机器学习的算法,Runtime,将具体实例赋给RDD,

子框架直接在代码中调用机器学习,图计算,调用sql数据挖掘,
转过来写了一个子框架遵循RDD规范,机器学习就可以调金融框架,卖商品的框架,无缝集成,电商支付直接可以调金融框架,每增强一个,所有功能都增强,每当提出了一个新的框架,可使用其所有功能(核裂变)
3.RDD思考
RDD缺陷:不支持细粒度的更新操作以及增量迭代计算
增量迭代计算:计算过程中只计算部分数据,RDD不管

Flink支持(Flink是可扩展的批处理和流式数据处理的数据处理平台。Flink是可扩展的批处理和流式数据处理的数据处理平台,设计思想主要来源于Hadoop、MPP数据库、流式计算系统等,支持增量迭代计算)

spark streaming完全取代storm,和kafka ms级别;spark streaming可以用机器学习
jstorm阿里提供的修改了原来的storm,支持增量迭代计算,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值