【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

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

  • 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对象

<!-- li { list-style: none; margin: 0; } p { margin: 0; } span.l { color: red; font-weight: bold; } a.mapnode:link {text-decoration: none; color: black; } a.mapnode:visited {text-decoration: none; color: black; } a.mapnode:active {text-decoration: none; color: black; } a.mapnode:hover {text-decoration: none; color: black; background: #eeeee0; } -->

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

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

2、创建SparkContext对象

<!-- li { list-style: none; margin: 0; } p { margin: 0; } span.l { color: red; font-weight: bold; } a.mapnode:link {text-decoration: none; color: black; } a.mapnode:visited {text-decoration: none; color: black; } a.mapnode:active {text-decoration: none; color: black; } a.mapnode:hover {text-decoration: none; color: black; background: #eeeee0; } -->

          集群的唯一入口

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

<!-- li { list-style: none; margin: 0; } p { margin: 0; } span.l { color: red; font-weight: bold; } a.mapnode:link {text-decoration: none; color: black; } a.mapnode:visited {text-decoration: none; color: black; } a.mapnode:active {text-decoration: none; color: black; } a.mapnode:hover {text-decoration: none; color: black; background: #eeeee0; } -->

          由SparkContext创建RDD

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

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏美图数据技术团队

RDD原理与基本操作 | Spark,从入门到精通

欢迎阅读美图数据技术团队的「Spark,从入门到精通」系列文章,本系列文章将由浅入深为大家介绍 Spark,从框架入门到底层架构的实现,相信总有一种姿势适合你,...

2.1K1
来自专栏Albert陈凯

3.0Spark RDD实现详解

Spark技术内幕:深入解析Spark内核架构设计与实现原理 第三章 Spark RDD实现详解 RDD是Spark最基本也是最根本的数据抽象,它具备像MapR...

3297
来自专栏知识分享

串口通信DMA中断

这是以前学32的时候写的,那时候学了32之后感觉32真是太强大了,比51强的没影。关于dma网上有许多的资料,亲们搜搜,这里只贴代码了,其实我也想详详细细地叙述...

3247
来自专栏Albert陈凯

Spark对比Hadoop MapReduce 的优势

与Hadoop MapReduce相比,Spark的优势如下: ❑ 中间结果:基于MapReduce的计算引擎通常将中间结果输出到磁盘上,以达到存储和容错的目...

3094
来自专栏Spark学习技巧

视频:RDD的特性介绍及源码阅读必备基础

1 - A list of partitions 2 - A function for computing each split 3 - A list o...

1215
来自专栏行者悟空

Spark RDD的Shuffle

1873
来自专栏王小雷

Spark学习之基础相关组件(1)

Spark学习之基础相关组件(1) 1. Spark是一个用来实现快速而通用的集群计算的平台。 2. Spark的一个主要特点是能够在内存中进行计算,因而更快。...

2088
来自专栏猿人谷

分布式计算Hadoop简介

Hadoop是什么:Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量...

26610
来自专栏涂小刚的专栏

【Spark教程】核心概念RDD

RDD全称叫做弹性分布式数据集(Resilient Distributed Datasets),它是一种分布式的内存抽象,表示一个只读的记录分区的集合,它只能通...

2K0
来自专栏大数据学习笔记

Spark2.x学习笔记:11、RDD依赖关系与stage划分

11、 RDD依赖关系与stage划分 Spark中RDD的高效与DAG图有着莫大的关系,在DAG调度中需要对计算过程划分stage,而划分依据就是RDD之间的...

2785

扫码关注云+社区

领取腾讯云代金券