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。

  • 相关阅读:
    反转链表 16
    CodeForces 701A Cards
    hdu 1087 Super Jumping! Jumping! Jumping!(动态规划)
    hdu 1241 Oil Deposits(水一发,自我的DFS)
    CodeForces 703B(容斥定理)
    poj 1067 取石子游戏(威佐夫博奕(Wythoff Game))
    ACM 马拦过河卒(动态规划)
    hdu 1005 Number Sequence
    51nod 1170 1770 数数字(数学技巧)
    hdu 2160 母猪的故事(睡前随机水一发)(斐波那契数列)
  • 原文地址:https://www.cnblogs.com/LHWorldBlog/p/8401148.html
Copyright © 2011-2022 走看看