欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

【Spark篇】---Spark初始

发布时间:2025/7/25 编程问答 47 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【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的五大特性:(比较重要)

  • RDD是由一系列的partition组成的。
  • 函数是作用在每一个partition(split)上的。
  • RDD之间有一系列的依赖关系。
  • 分区器是作用在K,V格式的RDD上。
  • 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。

     

    转载于:https://www.cnblogs.com/LHWorldBlog/p/8401148.html

    总结

    以上是生活随笔为你收集整理的【Spark篇】---Spark初始的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。