运行spark——7. RDD依赖、stage划分、checkpoint

RDD依赖:

窄依赖:每一个父RDD的分区最多被子RDD的一个分区使用

宽依赖:每一个父RDD的分区被多个子RDD分区依赖

 

RDD依赖的作用:

血统(Lineage)会记录RDD的元数据和转换行为,

以便恢复丢失的分区。

 

stage划分:

DAG(有向无环图):RDD的一系列转换组成了DAG

划分stage的目的是生成任务,每个stage对应一种任务,

划分stage的关键因素为是否发生了宽依赖(是否shuffle(洗牌))

如下图,groupBy和join是宽依赖,分别是stage1、stage2,

再加上总的算一个stage,划分了3个stage

 

 

web界面观察stage:

启动spark集群:

启动hadoop:start-all.sh

启动spark:./start-all.sh

使用spark-shell:

spark-shell --master yarn-client

scala> sc.textFile("hdfs://master:9000/test/wordcount.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect

res1: Array[(String, Int)] = Array((scala,2), (python,2), (hello,1), (apple,2), (java,1))

在spark页面观察进程:http://192.168.32.128:8080/

点进去有job、stage可以查看

 

 

 

checkpoint:

检查点checkpoint的作用:

对RDD做checkpoint,可以切断做checkpoint的RDD的依赖关系,

将RDD数据保存到可靠存储(如HDFS)以便数据恢复,保证数据的安全性(HDFS的备份规则)。

 

cache或者persist放到内存或者磁盘中,但是这样也不能保证数据完全不会丢失,存储的这个内存出问题了或者磁盘坏了,也会导致spark从头再根据RDD计算一遍,所以就有了checkpoint,其中checkpoint的作用就是将DAG中比较重要的中间数据做一个检查点将结果存储到一个高可用的地方(通常这个地方就是HDFS里面)

 

checkpoint步骤:

1. 建立checkpoint存储路径

scala> sc.setCheckpointDir("hdfs://master:9000/checkpoint0727")

2. rdd1.cache()

3. rdd1.checkpoint()

 

在checkpoint的时候强烈建议先进行cache,并且当你checkpoint执行成功了,

那么前面所有的RDD依赖都会被销毁

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值