2、spark概述

2.1 什么是spark
  • Apache Spark™ is a unified analytics engine for large-scale data processing.

  • apache的spark是一个针对于大规模数据处理的统一分析引擎

    1. spark是基于内存的计算框架,计算速度非常快,但是这里仅仅只涉及到数据的计算,并没有涉及到数据的存储。
      后期需要进行数据的计算,这里就可以对接不同的外部数据源(比如hdfs
2.2 为什么要学习spark
  • 就是由于spark的处理速度比mapreduce要快很多,后期很受企业青睐。

####3、spark的四大特性

3.1、速度快
  • spark比mapreduce在内存中快100倍,比mapreduce在磁盘中快10倍

  • spark比mapreduce快很多的主要的2个原因:

    1. 1mapreduce在处理任务的时候,每一个job的输出结果都会落地到磁盘,后续有其他的job需要依赖于前面job的输出结果,这个时候只能够从磁盘中加载得到,需要大量的磁盘io操作;
      spark在处理任务的时候,每一个job的输出结果可以保存在内存中,后续有其他的job需要依赖于前面job的输出结果,这个时候就可以直接从内存获取得到,大大减少磁盘io操作,最后性能肯定是大大的提升。
    2.  
    3. 例如:hivesql---> select name,age from (select * from user where age >30);
                            job2<-------------------job1
                              map 0%   reduce 0%
                              map 10%   reduce 0%
                             
      (2) mapreduce任务是以进程的方式运行在yarn集群中。比如说一个mapreduce任务中有100MapTask,
      后期要处理这100MapTask就需要开启100个进程;
        spark任务是以线程的方式运行在spark集群中进程里面,比如说一个spark任务有100MapTask,
        这个时候可以极端一点,只需要启动一个进程,在一个进程中运行100个线程中就可以,进程的启动与线程的启动代价肯定是不一样,一个进程的启动需要的调度时间和资源远远大于一个线程。
3.2、易用性
  • 可以快速写一个spark应用程序,通过java、scala、python、R、sql等不同的语言进行代码开发。

3.3、通用性
  • spark框架不再是一个简单的框架,它发展成一个生态系统

    • 就包括了sparksql、sparkStreaming、Mlib、Graphx不同的子项目

    • 后期按照公司当前的业务需求就可以灵活的使用到这些不同的子项目

    • 一站式解决所有应用场景

      • 离线

      • 实时

      • 机器学习算法库

      • 图计算、图挖掘

3.4、兼容性
  • spark任务就是一个计算程序,哪里可以给当前这个任务提供计算资源,我们就可以把这个任务提交到哪里去运行。

    • standAlone

      • 它是spark集群自带的模式,整个任务的资源分配由Master老大去负责

    • yarn

      • 可以把spark程序提交到yarn中运行,整个任务的资源分配由ResourceManager负责

    • mesos

      • 它是一个apache开源的类似于yarn的资源调度平台

MapReduce的缺点:

(1)计算过程较慢,不适应交互式计算,不适应迭代计算;

(2)不是所有的计算都由map和reduce两个阶段构成。

  Spark解决了以上问题:

(1)内存存储中间结果;

(2)提供了更好的API --> 函数式。

Spark和Hadoop的异同:

 

Hadoop

Spark

类型

基础平台, 包含计算, 存储, 调度

分布式计算工具

场景

大规模数据集上的批处理

迭代计算, 交互式计算, 流计算

延迟

易用性

API 较为底层, 算法适应性差

API 较为顶层, 方便使用

价格

对机器要求低, 便宜

对内存有要求, 相对较贵

小结:

  • Spark 提供了 批处理(RDDs), 结构化查询(DataFrame), 流计算(SparkStreaming), 机器学习(MLlib), 图计算(GraphX) 等组件

  • 这些组件均是依托于通用的计算引擎 RDDs 而构建出的, 所以 spark-core 的 RDDs 是整个 Spark 的基础

Spark 集群结构:

Spark 自身是没有集群管理工具的, 但是如果想要管理数以千计台机器的集群, 没有一个集群管理工具还不太现实, 所以 Spark 可以借助外部的集群工具来进行管理

整个流程就是使用 Spark 的 Client 提交任务, 找到集群管理工具申请资源, 后将计算任务分发到集群中运行:

名词解释:(对照上图)

  • Driver

    该进程调用 Spark 程序的 main 方法, 并且启动 SparkContext

  • Cluster Manager

    该进程负责和外部集群工具打交道, 申请或释放集群资源

  • Worker

    该进程是一个守护进程, 负责启动和管理 Executor

  • Executor

    该进程是一个JVM虚拟机, 负责运行 Spark Task

运行一个 Spark 程序大致经历如下几个步骤

  1. 启动 Drive, 创建 SparkContext

  2. Client 提交程序给 Drive, Drive 向 Cluster Manager 申请集群资源

  3. 资源申请完毕, 在 Worker 中启动 Executor

  4. Driver 将程序转化为 Tasks, 分发给 Executor 执行

问题一: Spark 程序可以运行在什么地方?

 
  • 集群: 一组协同工作的计算机, 通常表现的好像是一台计算机一样, 所运行的任务由软件来控制和调度

  • 集群管理工具: 调度任务到集群的软件

  • 常见的集群管理工具: Hadoop Yarn, Apache Mesos, Kubernetes

Spark 可以将任务运行在两种模式下:

  • 单机, 使用线程模拟并行来运行程序

  • 集群, 使用集群管理器来和不同类型的集群交互, 将任务运行在集群中

Spark 可以使用的集群管理工具有:

  • Spark Standalone

  • Hadoop Yarn

  • Apache Mesos

  • Kubernetes

问题二: Driver 和 Worker 什么时候被启动?

  • Standalone 集群中, 分为两个角色: Master 和 Slave, 而 Slave 就是 Worker, 所以在 Standalone 集群中, 启动之初就会创建固定数量的 Worker

  • Driver 的启动分为两种模式: Client 和 Cluster. 在 Client 模式下, Driver 运行在 Client 端, 在 Client 启动的时候被启动. 在 Cluster 模式下, Driver 运行在某个 Worker 中, 随着应用的提交而启动

  • 在 Yarn 集群模式下, 也依然分为 Client 模式和 Cluster 模式, 较新的版本中已经逐渐在废弃 Client 模式了, 所以上图所示为 Cluster 模式

  • 如果要在 Yarn 中运行 Spark 程序, 首先会和 RM 交互, 开启 ApplicationMaster, 其中运行了 Driver, Driver创建基础环境后, 会由 RM 提供对应的容器, 运行 Executor, Executor会反向向 Driver 反向注册自己, 并申请 Tasks 执行

  • 在后续的 Spark 任务调度部分, 会更详细介绍

总结
  • Master 负责总控, 调度, 管理和协调 Worker, 保留资源状况等

  • Slave 对应 Worker 节点, 用于启动 Executor 执行 Tasks, 定期向 Master汇报

  • Driver 运行在 Client 或者 Slave(Worker) 中, 默认运行在 Slave(Worker) 中

==========================================

Spark入门

一、 课程目标

目标1:熟悉Spark相关概念

目标2:搭建一个Spark集群

目标3:编写简单的Spark应用程序

二、 Spark概述

2.1什么是Spark(官网:http://spark.apache.org

Spark是一种快速、通用、可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL、Spark Streaming、GraphX、MLlib等子项目,Spark是基于内存计算的大数据并行计算框架。Spark基于内存计算,提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。Spark得到了众多大数据公司的支持,这些公司包括Hortonworks、IBM、Intel、Cloudera、MapR、Pivotal、百度、阿里、

腾讯、京东、携程、优酷土豆。当前百度的Spark已应用于凤巢、大搜索、直达号、百度大数据等业务;阿里利用GraphX构建了大规模的图计算和图挖掘系统,实现了很多生产系统的推荐算法;腾讯Spark集群达到8000台的规模,是当前已知的世界上最大的Spark集群。

2.2为什么要学Spark

Spark是一个开源的类似于Hadoop MapReduce的通用的并行计算框架,Spark基于map reduce算法实现的分布式计算,拥有Hadoop MapReduce所具有的优点;但不同于MapReduce的是Spark中的Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,因此Spark能更好地适用于数据挖掘与机器学习等需要迭代的map reduce的算法。

Spark是MapReduce的替代方案,而且兼容HDFS、Hive,可融入Hadoop的生态系统,以弥补MapReduce的不足。

2.3 Spark特点

2.3.1 快

与Hadoop的MapReduce相比,Spark基于内存的运算要快100倍以上,基于硬盘的运算也要快10倍以上。Spark实现了高效的DAG执行引擎,可以通过基于内存来高效处理数据流。

2.3.2 易用

Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建不同的应用。而且Spark支持交互式的Python和Scala的shell,可以非常方便地在这些shell中使用Spark集群来验证解决问题的方法。

2.3.3 通用

Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理都可以在同一个应用中无缝使用。Spark统一的解决方案非常具有吸引力,毕竟任何公司都想用统一的平台去处理遇到的问题,减少开发和维护的人力成本和部署平台的物力成本。

2.3.4 兼容性

Spark可以非常方便地与其他的开源产品进行融合。比如,Spark可以使用Hadoop的YARN和Apache Mesos作为它的资源管理和调度器,器,并且可以处理所有Hadoop支持的数据,包括HDFS、HBase和Cassandra等。这对于已经部署Hadoop集群的用户特别重要,因为不需要做任何数据迁移就可以使用Spark的强大处理能力。Spark也可以不依赖于第三方的资源管理和调度器,它实现了Standalone作为其内置的资源管理和调度框架,这样进一步降低了Spark的使用门槛,使得所有人都可以非常容易地部署和使用Spark。此外,Spark还提供了在EC2上部署Standalone的Spark集群的工具。

Spark入门:第1节 Spark概述:1 - 4的更多相关文章

  1. Spark入门(七)--Spark的intersection、subtract、union和distinc

    Spark的intersection intersection顾名思义,他是指交叉的.当两个RDD进行intersection后,将保留两者共有的.因此对于RDD1.intersection(RDD2 ...

  2. Spark入门(六)--Spark的combineByKey、sortBykey

    spark的combineByKey combineByKey的特点 combineByKey的强大之处,在于提供了三个函数操作来操作一个函数.第一个函数,是对元数据处理,从而获得一个键值对.第二个函 ...

  3. Spark入门实战系列--2.Spark编译与部署(上)--基础环境搭建

    [注] 1.该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取: 2.Spark编译与部署将以CentOS 64位操作系统为基础,主要是考虑到实际应用 ...

  4. Spark入门实战系列--3.Spark编程模型(上)--编程模型及SparkShell实战

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark编程模型 1.1 术语定义 l应用程序(Application): 基于Spar ...

  5. Spark入门实战系列--3.Spark编程模型(下)--IDEA搭建及实战

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 . 安装IntelliJ IDEA IDEA 全称 IntelliJ IDEA,是java语 ...

  6. Spark入门实战系列--7.Spark Streaming(上)--实时流计算Spark Streaming原理介绍

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .Spark Streaming简介 1.1 概述 Spark Streaming 是Spa ...

  7. Spark入门实战系列--1.Spark及其生态圈简介

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .简介 1.1 Spark简介 年6月进入Apache成为孵化项目,8个月后成为Apache ...

  8. Spark入门实战系列--2.Spark编译与部署(中)--Hadoop编译安装

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Hadooop 1.1 搭建环境 1.1.1 安装并设置maven 1. 下载mave ...

  9. Spark入门实战系列--2.Spark编译与部署(下)--Spark编译安装

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .编译Spark .时间不一样,SBT是白天编译,Maven是深夜进行的,获取依赖包速度不同 ...

  10. Spark入门实战系列--4.Spark运行架构

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 1. Spark运行架构 1.1 术语定义 lApplication:Spark Appli ...

随机推荐

  1. JS高级---工厂模式创建对象和自定义构造函数创建对象的区别

    创建对象:工厂模式和自定义构造函数的区别 共同点: 都是函数, 都可以创建对象, 都可以传入参数   区别:   工厂模式: 函数名是小写 有new, 有返回值 new之后的对象是当前的对象 直接调用 ...

  2. 分布式系统:CAP 理论的前世今生

    CAP 理论是分布式系统设计中的一个重要理论,虽然它为系统设计提供了非常有用的依据,但是也带来了很多误解.本文将从 CAP 诞生的背景说起,然后对理论进行解释,最后对 CAP 在当前背景下的一些新理解 ...

  3. 制作PPT时的一些技巧记录

    1.当一页PPT上有很多图片,要选择其中一张图片时,发现图片都重叠了,不好选择时该怎么办? 2.对动画的编辑 技巧:与选择窗口配合使用

  4. Bugku-CTF加密篇之贝斯家族(@iH<,{bdR2H;i6*Tm,Wx2izpx2!)

    贝斯家族 @iH<,{bdR2H;i6*Tm,Wx2izpx2!  

  5. CSS3实现魔方动画

    本文将借助css3实现魔方动画效果,设计思路如下: HTML方面采用六个div容器形成六个立方面: CSS方面采用transform-style: preserve-3d;形成三维场景:transfo ...

  6. 纯CSS实现吸顶效果

    position的属性有哪些? {  position: static;  position: relative;  position: absolute;  position: fixed; pos ...

  7. 学习JavaScript数据结构与算法---前端进阶系列

    学习建议 1.视频学习---认知 建议:在中国慕课上找"数据结构"相关的视频教程.中国大学MOOC 推荐清华大学.北京大学.浙江大学的教程,可先试看,然后根据自身的情况选择视频进行 ...

  8. leetcode菜鸡斗智斗勇系列(10)--- Decrypt String from Alphabet to Integer Mapping

    1.原题: https://leetcode.com/problems/decrypt-string-from-alphabet-to-integer-mapping/submissions/ Giv ...

  9. 爬虫必备工具-chrome 开发者工具

    在某个网站上,分析和抓取数据,我们用的最多的工具就是 Chrome 开发者工具 01 元素面板 通过元素(Element)面板,我们能查看发哦想抓取页面渲染内容所在的标签.使用什么 CSS 属性(例如 ...

  10. 《Web安全攻防 渗透测试实战指南》 学习笔记(一)

    Web安全攻防 渗透测试实战指南   学习笔记 (一) 第一章   信息收集     在信息收集中,最重要是收集服务器的配置信息和网站敏感信息(域名及子域名信息目标网站系统.CMS指纹.目标网站真实I ...