美文网首页
spark基础

spark基础

作者: 小太阳may | 来源:发表于2018-12-14 10:34 被阅读0次

    hadoop生态圈:分布式存储-hdfs;分布式批处理-mapreduce

    将大量数据进行处理,获取我们需要的有价值的信息

    弊端:频繁的写磁盘;网络磁盘io

    1 hadoop已经远远无法满足对于数据的处理效率的需求

    2 原先是将数据在批判中进行转移,能不能放到内存中

    spark处理引擎

    RDD:分布式的弹性数据集。虽然是数据集但是内部不存储数据,工作地点:内存

    RDD特性:

    1 是由一个个的partition

    2 每一个partition在计算的时候都有一个函数作用在其上

    val rdd=sc.textfile()

    rdd.map

    3 rdd之间有依赖关系,分为宽依赖和窄依赖,有算子来区分依赖

    4 rdd内部是一些KV格式的rdd(1,echo)(key,value)

    5 自己寻找最佳计算位置

    大数据的计算原则:::计算找数据,,移动计算比移动数据容易

    任务调度:

    spark提供了80多个算子供使用,算子可理解为我们已经写好的一些函数,封装在spark中,我们只需要调用

    算子,三类:

    1 转换算子,将数据进行格式化的转换。如rdd1:string-rdd2:int

    2 action算子

    3 cache persist(控制类算子)就是数据持久化的过程

    宽窄依赖

    窄依赖:父与子的对应关系是1对1

    val rdd=sc.textfile()

    val filterRDD=rdd.filter()转换算子

    val mapRDD=filterRDD.map()

    宽依赖:父与子的对应关系是1对多--shuffle

    val rdd=sc.textfile()

    val reduceRDD=rdd.reduceByKey聚合

    val groipRDD=reduceRDD.groupByKey分组

    为甚会有依赖?

    1 避免数据丢失。。即使数据丢失、我可以根据依赖关系找到上一个RDD,重新进行计算。

    2会根据RDD依赖关系划分job。切割stage

    注:apllication(任务)--写的程序

    job进程---action类算子(她两的个数一致)

    stage--一组task

    task---spark计算的最小单位,他的内部其实 是一个个的线程

    每遇见宽依赖就会划分一次stage

    DAG有向无环图

    task其实就是将我们的partition进行一个关联和整合

    fun2(fun1(tex))

    这个函数知道遇见action算子结束

    stage==taskset

    RDD---- DAGScheduler高层调度器:根据我们的宽窄依赖切割job划分stage(重试3次)----taskScheduler底层调度器:将我们的stage的task根据数据的位置发送到该执行的地点(重试3次)

    重试机制:task失败后,就是重新运行。基本可以保证任务能够完成

    感谢echo老师

    相关文章

      网友评论

          本文标题:spark基础

          本文链接:https://www.haomeiwen.com/subject/axmwhqtx.html