spark day01

目录

1.spark基本信息

1.生产背景

2.什么是spark

1.官网

2.计算引擎

3.功能

4.特点

5.运行作业的地方

3.hadoop生态圈 vs spark生态圈

1.Batch

2.SQL

3.stream

4.MLLib

5.real 存储

6.hadoop 和 spark 不同点

1.​​​​​​​​​​​​​​应用场景不同

2.处理速度不同

3.容错性不同

4.spark版本

5.编程模型(RDD)

  1.Spark编程模型的最主要抽象

  2.mr和spark使用区别

  3.什么是RDD

1.RDD:弹性分布式数据集

2.数据集

3. partitions解释     

  4.RDD计算方式

1.弹性、

2.分布式

1.RDD分布式计算的需求

2.存储方式

3.计算方式

4.RDD五大特性

2.spark在idea中使用

1.勾选maven

2.version选择1.0​编辑

3.选择正确scala版本(2.12.14)   ​​​​​​​​​​​​​​​编辑​编辑​编辑​编辑​编辑​编辑

4.添加依赖:

3.spark部署【分布式计算框架】

1.安装

2.spark使用

1.启动

2.网页

3.创建RDD

1.集合模式

2.查看job

4.spark参数内容

spark-she11:

yarn 参数补充

4.命令使用

1.修改名字 --name


1.spark基本信息

  • 1.生产背景

    • mr、hive批处理、离线处理 存在一些局限性
      • 1.mr、api开发复杂
      • 2.只能做离线计算不能做实时计算
      • 3.性能不高
  • 2.什么是spark

    • 1.官网

      • https://spark.apache.org/
    • 2.计算引擎

      •  Spark 是一种专门用于交互式查询、机器学习和实时工作负载的开源框架。 它没有自己的存储系统,但会在其他存储系统
    • 3.功能

      • 1.批处理/流式数据  Batch/streaming data
      • 2.SQL分析  soL analytics
      • 3.大规模数据科学  Data science at scale
      • 4.机器学习  Machine learning
    • 4.特点

      • 1.速度快
        • 1.spark基于内存计算
        • 2.DAG
                    mr1=>mr2=>mr3
        • 3.pipline 【通道的】
        • 4.编程模式 线程级别
      • 2.易用性
        • 1.开发语言:java、scala、python】、sql
        • 2.外部数据源
        • 3.80多个高级算子:scala算子
      • 3.通用性
        •  子模块
          • sparkcore  离线计算
          • sparksql 离线计算
          • sparkstreaming、structstreaming  实时计算
          • mllib  机器学习
          • 图计算  图处理
    • 5.运行作业的地方

      • 1.yarn
      • 2.messos
      • 3.k8s
      • 4.standalone【spark本身集群】
  • 3.hadoop生态圈 vs spark生态圈

    • 1.Batch

      • mr、hive  
      • spqrkcore、sparksql
    • 2.SQL

      • hive、impala
      • sparksql
    • 3.stream

      • storm
      • sparkstreaming、sss
    • 4.MLLib

      • Mahout
      • MlLlib
    • 5.real 存储

      • HNase、cassandra
      • DataSource、Api
    • spqrk不能替换hadoop,spark可以替换mr
    • 6.hadoop 和 spark 不同点

      • 1.​​​​​​​​​​​​​​应用场景不同

        • Hadoop是一个分布式数据存储架构,将巨大的数据集分派到一个由普通计算机组成的集群中的多个节点进行存储,降低了硬件的成本。
        • Spark是一个专门用来对那些分布式存储的大数据进行处理的工具,它要借助hdfs的数据存储。
      • 2.处理速度不同

        • hadoop的MapReduce是分步对数据进行处理的,从磁盘中读取数据,进行一次处理,将结果写到磁盘,然后在从磁盘中读取更新后的数据,再次进行的处理,最后再将结果存入磁盘,这存取磁盘的过程会影响处理速度。
        • spark从磁盘中读取数据把中间数据放到内存中,完成所有必须的分析处理,将结果写回集群,所以spark更快。
      • 3.容错性不同

        • Hadoop将每次处理后的数据都写入到磁盘上,基本没有错数据丢失的情况。
        • Spark的数据对象存储在弹性分布式数据集 RDD,RDD是分布在一组节点中的只读对象集合,如果数据集一部分丢失,则可以根据于数据衍生过程对它们进行重建。而且RDD 计算时可以通过 CheckPoint 来实现容错。
  • 4.spark版本

    • spark 1.x
    • spark 2.x (主流)
    • spark 3.x (主流)
  • 5.编程模型(RDD)

    • 1.Spark编程模型的最主要抽象

      • 第一个抽象是 RDD(弹性分布式数据集)
      • 第二个抽象是两种共享变量,即支持并行计算的广播变量和累加器。​​​​​​​
    • 2.mr和spark使用区别

      • low  level  => mapreduce  
      • high level  => spark 高级算子
        RDD开发比mapreduce降低开发人员的开发成本​​​​​​​ .
    • 3.什么是RDD

      • RDD全称:resilient distributed dataset

      • 1.RDD:弹性分布式数据集

      • 2.数据集

        • 这个数据集的全部或部分可以缓存在内存中,并且可以在多次计算时重用。RDD其实就是一个分布在多个节点上的数据集合。

      • 3. partitions解释     

        • partition 是RDD的最小单元

        • RDD是由分布在各个节点上的partition 组成的。

    • 4.RDD计算方式

      • 1.弹性、

        • 容错 => 计算的时间可以重试
      • 2.分布式

        • 1.RDD分布式计算的需求

          • 分区控制
          • Shuffle控制
          • 数据存储\序列化\发送
          • 数据计算API
          • 一个统一的数据抽象对象,来实现上述分布式计算所需的功能,这个抽象对象就是RDD
        • 2.存储方式

          • RDD: 1 2 3 4 5 6           (举例)
                      partition1: 1 2 3             
                      partition2: 4 5             
                      partition3: 6         
              bigdata13:partition1         
              bigdata14:partition2         
              bigdata15:partition3
        • 3.计算方式

          • 对rdd进行操作实际上是操作rdd分区中的数据
             rdd: 1 2 3 4 5 6          + 1             
                   partition1:1 2 3    + 1           
                   partition2:4 5       + 1             
                   partition3:6          + 1
        • 4.RDD五大特性

          • 1.A list of partitions
            • rdd底层存储一系列partition
            • RDD是一个由多个partition(某个节点里的某一片连续的数据)组成的的list;将数据加载为RDD时,一般会遵循数据的本地性(一般一个hdfs里的block会加载为一个partition)。
          • 2.A function for computing each split
            • 针对rdd做计算/操作其实就是对rdd底层的partition进行计算
            • 一个函数计算每一个分片,RDD的每个partition上面都会有function,也就是函数应用,其作用是实现RDD之间partition的转换。
          • 3.A list of dependencies on other RDDs
            • rdd之间的依赖关系(血缘关系)
              • ​​​​​​​​​​​​​​rdda => rddb => rddc
                rddb对rdda有依赖关系
            • 依赖还具体分为宽依赖和窄依赖,但并不是所有的RDD都有依赖。为了容错(重算,cache,checkpoint),也就是说在内存中的RDD操作时出错或丢失会进行重算。
          • 4.Optionally,a Partitioner for Key-value RDDs  
            • partitioner => kv类型的rdd
                 rdd:1 2 3 4 5 6
                           partition1: 1 2 3
                           partition1: 1 2 3
                           partition1: 1 2 3
            • 如果RDD里面存的数据是key-value形式,则可以传递一个自定义的Partitioner进行重新分区,例如这里自定义的Partitioner是基于key进行分区,那则会将不同RDD里面的相同key的数据放到同一个partition里面
          • 5.Optionally, a list of preferred locations to compute each split on
            • 最优的位置去计算,也就是数据的本地性。
              • 优点:减少数据传输的网络io
              • 好处
                • 有限吧作业调度在数据所在节点【理想状态】
                • 常见计算:
                  作业调度在别的节点上 ,数据在另外一台节点上吗,只能把数据通过网络把数据传输到 作业所在节点上去进行计算
        • 3.数据集 
          • 构建rdd本身的数据
      • RDD操作
        • 1.构建sparkcore作业
          • mapreduce:程序入口 job
          • Initializing Sprak 
            • 1.SparkContext => sparkcore 程序入口
            • 2.SpartConf => 指定 spark APP详细信息
              • 1.AppName:作业名字
              • 2.Master:作业运行在什么地方 spark作业的运行模式
                • 工作中
                  • yarn
                  • k8s
                  • local
                • code编写测试阶段
                  • local
        • 2.如何指定Master spark作业运行模式
          • 1.local模式
          • 2.

2.spark在idea中使用

构建sparkcore 作业 【idea】

  • 1.勾选maven

    • org.scala-tools.archetypes:scala-archetype-simple
  • 2.version选择1.0

  • 3.选择正确scala版本(2.12.14)
       ​​​​​​​​​​​​​​

  • 4.添加依赖:

    
    
       org.apache.spark
       spark-core_2.12
       3.2.1
    

  •  

3.spark部署【分布式计算框架】

  • spark部署部署分布式的 ,spark支持分布式
  • 1.安装

    • 1.解压
         [hadoop@bigdata13 software]$ tar -zxvf ./spark-3.3.1-bin-hadoop3.tgz -C ~/app/
    • 2.软连接
         [hadoop@bigdata13 app]$ ln -s spark-3.3.1-bin-hadoop3 spark
    • 3.环境变量
      • [hadoop@bigdata13 app]$ vim ~/.bashrc
        #SPARK_HOME
        export SPARK_HOME=/home/hadoop/app/spark
        export PATH=${PATH}:${SPARK_HOME}/bin
        [hadoop@bigdata13 app]$ source ~/.bashrc
  • 2.spark使用

    • 1.启动

      • [hadoop@bigdata13 app]$ spark-shell --master local[2]
        spark day01_第1张图片
    • 2.网页

    • http://bigdata13:4040
      spark day01_第2张图片

    • 3.创建RDD

      • 1.集合模式

        • 1.创建Array

          • val data = Array(1,2,3,4,5,6)
        • 2.生成RDD

          • val distData = sc.parallelize(data)
      • 2.查看job

        • distData.collect
          spark day01_第3张图片
    • 4.spark参数内容

      • spark-she11:

        • masterspark作业运行环境--deploy-mode yarn模式 运行选择
        • classspark作业包 运行主类mainclass 包名
        • name指定spark作业的名字
        • jars 指定第三方的依赖包
        • conf 指定spark作业配置参数
      • yarn 参数补充

        • num-executors指定申请资源的参数
        • executor-memory 指定申请资源的参数
        • executor-cores指定申请资源的参数
        • queue 指定作业 运行在yarn的哪个队列上

4.命令使用

  • 1.修改名字 --name

  • [hadoop@bigdata13 ~]$ spark-shell --master local[2] --name "spark-dl2262"
    spark day01_第4张图片spark day01_第5张图片

你可能感兴趣的:(spark,spark,大数据,hive)