Spark整理(一):Spark是啥以及能干啥

一、Spark是什么

1、与Hadoop的关系

如今Hadoop已经不能狭义地称它为软件了,Hadoop广泛的说可以是一套完整的生态系统,可以包括HDFS、Map-Reduce、HBASE、HIVE等等。。

而Spark是一个计算框架,注意,是计算框架

其可以运行在Hadoop之上,绝大部分情况下是基于HDFS

说代替Hadoop其实是代替Hadoop中的Map-Reduce,用来解决Map-Reduce带来的一些问题

更具体地讲,Spark是基于内存的 大数据并行计算框架,可以完美的融入到Hadoop的生态系统中去

而既然是分布式框架必须要解决的两个问题:

1、可扩展性

2、容错性

Spark是如何解决这两个问题待之后整理发布

2、相对于Map-Reduce的迭代模型,Spark的计算模型有何优缺点?

优势:

(1)基于内存,计算速度快

迭代过程中,通过RDD算子生产DAG图的方式,无须将中间数据写入磁盘中

(2)DAG图的执行策略

只有Action操作才会触发执行Job,记录了每个Job的执行流程,形成Lineage和划分Stage等

(3)使用AKKA作为事件驱动来调度任务,开销小

(4)全栈支持

缺陷:

(1)机器配置要求比Map-Reduce高

(2)牺牲硬件提高性能

3、Spark能带来什么?

(1)全栈多计算范式,不仅仅只是简单的Map-Reduce操作,SQL查询、流计算、机器学习、图算法

这里有你想要的一切~

(2)轻量级快速处理:基于内存

(3)支持多语言,丰富的算子,允许在Shell中进行交互式计算,像书写单机程序一样书写分布式程序(这就是Spark诞生的目的)

(4)与HDFS等存储层兼容,可以独立运行,可以运行与Yarn等集群管理系统,可以读取和使用任何Hadoop数据

没天理了~

二、Spark生态系统BDAS(数据分析栈)

Spark也可以脱离Hadoop而存在,它也有自己的生态系统

主要的组件如下列表:

1、核心框架为Spark

提供分布式编程框架

提供除了MR之外的丰富算子以及计算模型

将分布式数据抽象为弹性分布式数据集(RDD)

2、结构化数据SQL查询和分析引擎Spark SQL

可直接执行SQL语句

可执行Spark SQL提供的丰富的API

基于RDD操作

3、分布式机器学习库Mllib

4、并行图计算框架GraphX

5、流计算框架Spark Streaming

将实时数据按照指定时间片划分为流数据

6、近似计算查询引擎BlinkDB

交互式SQL的近似查询

允许用户在查询精确度和查询响应时间之间做出权衡

7、内存分布式文件系统Tachyon

内存中的HDFS

8、资源管理框架Mesos

提供类似Yarn的功能

9、1.4新特性SparkR

三、Spark构架

1、构架组成

Spark集群中一些核心概念:

(1)Master

集群中含有Master进程的节点

负责集群的协作和管理

本身不参与计算任务

在Yarn上运行时表现为ResourceManager

(2)Slaves

集群中含有Worker进程的节点

接受Master命令和进行状态汇报

Worker本身并不是处理计算任务的

在Yarn上运行时表现为NodeManager

(3)Driver

负责控制Client提交的任务的执行

执行程序的main函数并创建SparkContext

分发Task到具体的Worker上的Executor

分发任务执行所需要的file和jar包(序列化后)给Worker节点

(4)SparkContext:整个应用的上下文,控制应用的生命周期

RDD:基本计算单元,提供丰富的算子,一组RDD可执行成DAG图

DAGScheduler:输入DAG图,根据RDD之间的依赖关系划分为Stages输出

TaskScheduler:输入Stages,将其划分为更小的Task分发给具体的Executor执行

SparkEnv:存储运行时的重要组件的引用,包括:

=>MapOutPutTracker:负责Shuffle元信息的存储

=>Broadcastmanager:负责广播变量的控制与元信息的存储

=>BlockManager:负责存储管理、创建和查找块

=>MetricsSystem:监控运行时性能指标信息

=> SparkConf:负责存储配置信息

(5)Client

用户提交任务的工具

2、Spark执行任务流程(简略版)

(1)Client提交应用

(2)Master找到Worker并启动Driver

(3)Driver向Master申请资源

(4)操作RDD形成DAG图交给DAGScheduler

(5)DAGScheduler将DAG图划分为Stages输出给TaskScheduler

(6)TaskScheduler划分Task分发给Worker节点上的Executor执行

四、 Spark分布式构架与单核构架的异同

基本概念:

(1)Spark是分布式计算框架

(2)在上面可以编写分布式程序和软件

编写分布式程序需要注意的点:

内存和磁盘共享问题

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-14 03:07:41

Spark整理(一):Spark是啥以及能干啥的相关文章

整理对Spark SQL的理解

Catalyst Catalyst是与Spark解耦的一个独立库,是一个impl-free的执行计划的生成和优化框架. 目前与Spark Core还是耦合的,对此user邮件组里有人对此提出疑问,见mail. 以下是Catalyst较早时候的架构图,展示的是代码结构和处理流程. Catalyst定位 其他系统如果想基于Spark做一些类sql.标准sql甚至其他查询语言的查询,需要基于Catalyst提供的解析器.执行计划树结构.逻辑执行计划的处理规则体系等类体系来实现执行计划的解析.生成.优化

Spark 教程:Spark的体系架构

最近看到一篇关于Spark架构的博文,作者是 Alexey Grishchenko.看过Alexey博文的同学应该都知道,他对Spark理解地非常深入,读完他的 “spark-architecture” 这篇博文,有种醍醐灌顶的感觉,从JVM内存分配到Spark集群的资源管理,步步深入,感触颇多(腾云科技ty300.com).因此,在周末的业余时间里,将此文的核心内容译成中文,并在这里与大家分享.如在翻译过程中有文字上的表达纰漏,还请大家指出. 首先来看一张Spark 1.3.0 官方给出的图片

Spark学习笔记——Spark Streaming

许多应用需要即时处理收到的数据,例如用来实时追踪页面访问统计的应用.训练机器学习模型的应用, 还有自动检测异常的应用.Spark Streaming 是 Spark 为这些应用而设计的模型.它允许用户使用一套和批处理非常接近的 API 来编写流式计算应用,这样就可以大量重用批处理应用的技术甚至代码. Spark Streaming 使用离散化流( discretized stream)作为抽象表示, 叫作 DStream. DStream 是随时间推移而收到的数据的序列.在内部,每个时间区间收到

一、spark入门之spark shell:wordcount

1.安装完spark,进入spark中bin目录: bin/spark-shell scala> val textFile = sc.textFile("/Users/admin/spark/spark-1.6.1-bin-hadoop2.6/README.md") scala> textFile.flatMap(_.split(" ")).filter(!_.isEmpty).map((_,1)).reduceByKey(_+_).collect().

spark配置(4)-----Spark Streaming

Spark Streaming Spark Streaming 使用 Spark API 进行流计算,这意味着在 Spark 上进行流处理与批处理的方式一样.因此,你可以复用批处理的代码,使用 Spark Streaming 构建强大的交互式应用程序,而不仅仅是用于分析数据. Spark Streaming 示例(基于流的单词统计)来演示一下 Spark Streaming:本地服务器通过 TCP 接收文本数据,实时输出单词统计结果. nc -l -p 9999 # 需要另外开启一个终端,记为终

[pySpark][笔记]spark tutorial from spark official site在ipython notebook 下学习pySpark

+ Spark Tutorial: Learning Apache Spark This tutorial will teach you how to use Apache Spark, a framework for large-scale data processing, within a notebook. Many traditional frameworks were designed to be run on a single computer. However, many data

Spark(十二) -- Spark On Yarn & Spark as a Service & Spark On Tachyon

Spark On Yarn: 从0.6.0版本其,就可以在在Yarn上运行Spark 通过Yarn进行统一的资源管理和调度 进而可以实现不止Spark,多种处理框架并存工作的场景 部署Spark On Yarn的方式其实和Standalone是差不多的,区别就是需要在spark-env.sh中添加一些yarn的环境配置,在提交作业的时候会根据这些配置加载yarn的信息,然后将作业提交到yarn上进行管理 首先请确保已经部署了Yarn,相关操作请参考: hadoop2.2.0集群安装和配置 部署完

Spark教程-构建Spark集群(1)

对于90%以上想学习Spark的人而言,如何构建Spark集群是其最大的难点之一,为了解决大家构建Spark集群的一切困难,家林把Spark集群的构建分为了四个步骤,从零起步,不需要任何前置知识,涵盖操作的每一个细节,构建完整的Spark集群. 从零起步,构建Spark集群经典四部曲: 第一步:搭建Hadoop单机和伪分布式环境: 第二步:构造分布式Hadoop集群: 第三步:构造分布式的Spark集群: 第四步:测试Spark集群: 本文内容为构建Spark集群经典四部曲的第一步,从零起步构建

Spark机器学习:Spark 编程模型及快速入门

http://blog.csdn.net/pipisorry/article/details/52366356 Spark编程模型 SparkContext类和SparkConf类 我们可通过如下方式调用 SparkContext 的简单构造函数,以默认的参数值来创建相应的对象.val sc = new SparkContext("local[4]", "Test Spark App") 这段代码会创建一个4线程的 SparkContext 对象,并将其相应的任务命

Spark 定制版~Spark Streaming(二)

本讲内容: a. 解密Spark Streaming运行机制 b. 解密Spark Streaming架构 注:本讲内容基于Spark 1.6.1版本(在2016年5月来说是Spark最新版本)讲解. 上节回顾: 上节课谈到技术界的寻龙点穴,Spark就是大数据的龙脉,而Spark Streaming就是Spark的穴位.假如要构建一个强大的Spark应用程序 ,Spark Streaming 是一个值得借鉴的参考,Spark Streaming涉及多个job交叉配合,几乎可以包括spark的所