Spark总结

  • 一、SparkCore

    • Spark是一个计算框架,可以基于内存处理数据

    • Spark & MR区别

      • 1.Spark可以基于内存处理数据,MR基于磁盘处理数据
      • 2.Spark有DAG有向无环图
    • Spark技术栈

      • Spark
        • Core, SQL,Streaming
      • Hadoop
        • MR,Hive, Storm ,HDFS,Yarn
    • Spark 运行模式

      • Local
        • 多用于本地,IDEA,Eclipse 代码测试运行
      • Standalone
        • Spark自带的资源调度框架,支持分布式搭建
      • Yarn
        • Hadoop 生态圈中资源调度框架,Spark可以基于Yarn运行
      • Mesos
        • 资源调度框架
    • Spark 核心RDD

      • RDD: 弹性分布式数据集

      • RDD五大特性

        • 1.RDD由一系列partition组成
        • 2.算子(函数)作用在partition上
        • 3.RDD之间有依赖关系
        • 4.分区器是作用在K,V格式的RDD上
        • 5.partition对外提供最佳的计算位置,利于数据处理的本地化
      • 问题

        • 1.sc.textFile(…)读取HDFS文件的方法,底层调用的就是MR读取HDFS文件的方法,首先split,每个split对应HDFS中一个block,这里的split也对应RDD中的一个partition

          2.什么是K,V格式的RDD?

          • RDD中的数据如果是一个个的tuple2 ,当前这个RDD就是K,V格式的RDD

          3.哪里体现RDD的分布式?

          • RDD中的partition是分布在多个节点上的

          4.哪里体现RDD的弹性?

          • 1.RDD之间有依赖关系
          • 2.RDD中的分区数可多可少
    • Spark代码执行流程

      • 1.val conf = new SparkConf() ; conf.setMaster… ;conf.setAppName()
      • 2.val sc = new SparkContext(conf)
      • 3.val rdd = sc.textFile…
      • 4.对RDD使用RDD的Transformation类算子进行转换
      • 5.对RDD要使用Action类算子触发Transformation类算子执行
      • 6.sc.stop()
    • Spark 算子

      • Transformations

        • 又叫转换算子,懒执行,需要Action算子触发执行
        • flatMap
        • map
        • filter
        • reduceByKey
        • sortBy
        • sortByKey
        • sample
      • Action

        • action叫做行动算子,触发Transformations类算子执行,一个Spark Application中有一个Action算子,就有一个job
        • foreach
        • count
        • collect()
        • take
        • first
        • reduce
      • 持久化算子

        • cache

          • 默认将数据持久化到内存中
          • cache() = persist() = persist(StorageLevel.MEMORY_ONLY)
        • persist

          • 可以手动指定持久化级别
          • 常用的持久化级别
            • MEMORY_ONLY
            • MEMORY_ONLY_SER
            • MEMORY_AND_DISK
            • MEMORY_AND_DISK_SER
          • 避免使用DISK_ONLY 和 “_2” 级别
        • checkpoint

          • 当job的lineage非常长,计算非常复杂时,可以对RDD进行checkpoint,将RDD的数据持久化到磁盘
          • checkpoint & persist(DISK_ONLY)
            • 1.persist 将数据持久化起来之后,当application执行完成之后,持久化的数据会被清空
            • 2.checkpoint将数据持久化到磁盘,数据由外部的存储系统管理,当application执行完成之后,数据不会被清空
            • 3.checkpoint常用作保存状态,在SparkStreaming有更好体现
          • checkpoint懒执行,持久化单位也是partition
        • 注意

          • cache & persist

            • 1.cache() persist() 都是懒执行,需要action算子触发执行

              2.对RDD进行持久化时,可以直接cache或者persist之后赋值给一个变量,下次直接使用这个变量就是使用的持久化的数据,当然,这里也可以直接对RDD进行cache 或者persist,下次直接使用RDD就可以

              3.如果对RDD进行持久化之后,赋值给了一个变量,那么不要在后面紧跟action算子

          • checkpoint执行流程

            • 1.当job执行完成之后,Spark会从后往前回溯,找到checkpointRDD进行标记
            • 2.回溯完成之后,Spark会启动一个job,对CheckpointRDD进行计算,将计算的结果保存在磁盘上
            • 优化:对哪个RDD进行checkpoint之前最好先cache()下
    • Spark集群搭建

      • Standalone集群
      • 客户端搭建
      • Yarn
    • 基于Standalone提交Spark Pi任务

      • ./spark-submit --master spark://node01:7077 --class org.apache.spark.examples.SparkPi jar … 参数
    • Spark任务提交

      • Standalone
      • Yarn
  • 二、SparkSQL

  • 三、SparkStreaming

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值