Spark-01

一、必须知道

        SparkContext

        sparkContext在Spark应用程序的执行过程中起着主导作用,它负责与程序和spark集群进行交互,包括申请集群资源、创建RDD、accumulators及广播变量等。sparkContext与集群资源管理器、work节点交互图如下:


    sparkContext构建的顶级三大核心:DAGScheduler,TaskScheduler,SchedulerBackend.


    DAGScheduler:是面向Job的Stage的高层调度器。
    TaskScheduler:是一个接口,是低层调度器,根据具体的ClusterManager的不同会有不同的实现。Standalone模式下具体实现的是TaskSchedulerlmpl。
    SchedulerBackend:是一个接口,根据具体的ClusterManger的不同会有不同的实现,Standalone模式下具体的实现是SparkDeloySchedulerBackend。

        RDD

        worker里有很多Excutor,真正完成计算的是Excutor,Excutor计算都是在内存进行计算,
Excutor里面有partitioner,partitioner里面的数据如果内存足够大的话放到内存中,它是一点一点读的
RDD是分布式数据集,所说RDD就是这个,
RDD有5个特点:
        1.a list of partiotioner有很多个partiotioner(这里有3个partiotioner),可以明确的说,
        一个分区在一台机器上,一个分区其实就是放在一台机器的内存上,
        一台机器上可以有多个分区。
        2.a function for partiotioner一个函数作用在一个分区上。
        比如说一个分区有1,2,3 在rdd1.map(_*10),把RDD里面的每一个元素取出来乘以10,每个分片都应用这个map的函数
        3.RDD之间有一系列的依赖
        rdd1.map(_*10).flatMap(..).map(..).reduceByKey(...)
        构建成为DAG,这个DAG会构造成很多个阶段,这些阶段叫做stage,RDDstage之间会有依赖关系,后面根据前面的依赖关系来构建,如果前面的数据丢了,它会记住前面的依赖,从前面进行重新恢复。每一个算子都会产生新的RDD.
textFile 与flatMap会产生两个RDD.
        4.分区器hash & Integer.Max % partiotioner 决定数据到哪个分区里面,可选,这个RDD是key-value 的时候才能有

        5.最佳位置。数据在哪台机器上,任务就启在哪个机器上,数据在本地上,不用走网络。不过数据进行最后汇总的时候就要走络。(hdfs file的block块)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值