zoukankan      html  css  js  c++  java
  • 【Spark篇】---Spark初始

    一、前述

    Spark是基于内存的计算框架,性能要优于Mapreduce,可以实现hadoop生态圈中的多个组件,是一个非常优秀的大数据框架,是Apache的顶级项目。One stack  rule  them all  霸气。

    但不同于MapReduce的是Job中间输出结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的MapReduce的算法

    二、具体细节

    1、Spark与MapReduce的区别

     都是分布式计算框架,Spark基于内存,MR基于HDFS。Spark处理数据的能力一般是MR的十倍以上,Spark中除了基于内存计算外,还有DAG有向无环图来切分任务的执行先后顺序。

    2、Spark运行模式

    • Local

                 多用于本地测试,如在eclipse,idea中写程序测试等。

    • Standalone

                  StandaloneSpark自带的一个资源调度框架,它支持完全分布式。

    • Yarn

                   Hadoop生态圈里面的一个资源调度框架Spark也是可以基于Yarn来计算的。

    • Mesos

              资源调度框架。

    注意:要基于Yarn来进行资源调度,必须实现AppalicationMaster接口,Spark实现了这个接口,所以可以基于Yarn

    3、SparkCore

    概念

    RDD(Resilient Distributed Dateset),弹性分布式数据集。

    RDD的五大特性:(比较重要)

    1. RDD是由一系列的partition组成的。
    2. 函数是作用在每一个partition(split)上的。
    3. RDD之间有一系列的依赖关系。
    4. 分区器是作用在K,V格式的RDD上。
    5. RDD提供一系列最佳的计算位置。Partiotion对外提供数据处理的本地化,计算移动,数据不移动。

     

    备注:

    1、textFile方法底层封装的是读取MR读取文件的方式,读取文件之前先split,默认split大小是一个block大小。每个split对应一个partition。

     

    2、RDD实际上不存储数据,存储的是计算逻辑这里方便理解,暂时理解为存储数据。

     

    3、什么是K,V格式的RDD?

    • 如果RDD里面存储的数据都是二元组对象,那么这个RDD我们就叫做K,V格式的RDD。

    4、 哪里体现RDD的弹性(容错)?

    • partition数量,大小没有限制,体现了RDD的弹性。Partiotion个数可以控制。可以提高并行度。
    • RDD之间依赖关系,可以基于上一个RDD重新计算出RDD。

    5、哪里体现RDD的分布式?

    • RDD是由Partition组成,partition是分布在不同节点上的。 RDD提供计算最佳位置,体现了数据本地化。体现了大数据中“计算移动数据不移动”的理念。

    4、Spark任务执行原理

     

    以上图中有四个机器节点,Driver和Worker是启动在节点上的进程,运行在JVM中的进程。

    • Driver与集群节点之间有频繁的通信。
    • Driver负责任务(tasks)的分发和结果的回收任务的调度。如果task的计算结果非常大就不要回收了。会造成oom。
    • Worker是Standalone资源调度框架里面资源管理的从节点。也是JVM进程。
    • Master是Standalone资源调度框架里面资源管理的主节点。也是JVM进程。

    5、Spark代码流程

       1、创建SparkConf对象

           SparkConf conf = new SparkConf().setMaster("local").setAppName("xxx")

    • 1.设置运行模式
    • 2.设置application name
    • 3.设置spark运行参数

       2、创建SparkContext对象

              集群的唯一入口

       3、基于Spark的上下文创建一个RDD,对RDD进行处理。

              由SparkContext创建RDD

       4、应用程序中要有Action类算子来触发Transformation类算子执行。

       5、关闭Spark上下文对象SparkContext。

  • 相关阅读:
    设计模式(二十)---迭代器模式
    设计模式(十九)---观察者模式
    设计模式(十八)---模板方法模式
    设计模式(十七)---策略模式
    ElasticSearch 安装
    MongoDB进击 Linux单机安装
    List集合去除重复对象。。。记录一下
    Springboot整合mybatisPlus实现分页
    git记录
    Springboot异常处理errorController
  • 原文地址:https://www.cnblogs.com/LHWorldBlog/p/8401148.html
Copyright © 2011-2022 走看看