简单的讲,Apache Spark是一个快速且通用的集群计算系统。

  Apache Spark 历史:

    2009年由加州伯克利大学的AMP实验室开发,并在2010年开源,13年时成长为Apache旗下大数据领域最活跃的开源项目之一。2014年5月底spark1.0.0发布,2016年6月spark2.0发布,至今最近的版本是xxx(看官网)。

  Spark的使用场景:

    实时查看浏览统计信息,流式计算,SQL查询,图计算,机器学习。

  Spark特点:

    1. 快速的处理能力。由于spark可以将中间输出和最后结果存储在内存中,不像hadoop MR那样需要大量的磁盘I/O的开销,同时spark的DAG执行引擎也支持数据在内存中的计算。
    2. 使用方便。spark支持Java、Scala、Python和R编写的应用程序,同时提供了80多个高等级操作符,可以用Scala、Python和R shell进行交互查询。
    3. 通用性强。Spark提供了一组库,其中包括SQL和DataFrames、用于机器学习的MLlib、GraphX和Spark Straming,在同一个应用程序中无缝地组合这些库。
    4. 随处运行。spark能够访问HDFS、Cassandra、HBase、S3、Hive、Techyon以及任何Hadoop的数据源。

  Spark运行模式:

运行环境         模式                      描述
 Local      本地模式 本地线程方式运行,分local单线程和local-cluster多线程,主要用于开发调试spark应用程序。
Standalone      集群模式 利用spark自带的资源管理器和调度器运行spark集群,采用Master/Slave模式,为解决单点故障可采用ZK实现HA。
ApacheMesos     集群模式      运行在Mesos资源管理器框架之上,由Mesos负责资源管理,spark负责任务调度和计算。
Hadoop Yarn     集群模式 运行在Yarn资源管理器框架之上,由Yarn负责资源管理,spark负责任务调度和计算。

    在实际的应用中,spark应用程序的运行模式取决于传递给sparkcontext的master环境变量的值,目前该值由特定的字符串或是URL组成,如下所示:

      • Local[N]:使用N个线程。
      • Local cluster[worker,core,Memory]:伪分布式模式,可以配置所需要启动的虚拟工作节点,以及每个节点所管理的CPU数量和内存大小。
      • Spark://hostname:port:Standalone模式,需要将spark部署到相关节点,URL为Spark master的主机地址和端口。
      • Mesos://hostname:port:Mesos模式,需要将spark和mesos部署到相关节点,URL为Mesos的主机地址和端口。
      • Yarn standalone/Yarn cluster:Yarn模式一,主程序逻辑和任务都运行在Yarn集群中。
      • Yarn client:Yarn模式二,主程序逻辑运行在本地,具体任务运行在Yarn集群中。

  Spark术语:

    • Application:Spark应用程序,包含一个Driver program和若干Executor。
    • SparkContext:Spark应用程序的入口,负责调度各个运算资源,协调各个Woker Node上的Executor。
    • Driver Program:运行Application的main()函数并创建SparkContext。
    • Executor:Worker Node上的进程,该进程负责运行Task,并负责任务间数据维护(数据是存在内存中还是磁盘上)。
    • Cluster Manager:为任务分配资源。
    • Worker Node:集群中运行spark application的节点。
    • Task:运行在Executor上的工作单元。
    • Job:SparkContext提交的具体Action操作。
    • Stage:每个Job会被拆分很多组task,每组task被称为Stage,也称TaskSet。
    • RDD:弹性分布式数据集。
    • DAGScheduler:根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler。
    • TaskSchedule:将Taskset提交给WorkerNode集群运行并返回结果。

  Spark Job运行原理:

    1. 创建SparkContext对象,然后SparkContext向Cluster Manager申请资源;
    2. Cluster Manager在WokerNode上创建Executor并分配资源(CPU,内存等),后期Executor定期向ClusterManager发送心跳信息;
    3. SparkContext启动DAGSchudler,将提交的任务分解为若干Stage,各个Stage构成DAG;
    4. Taskset发送给TaskSchudle,TaskSchudle将Task发送给对应的Executor,同时SparkContext将应用程序代码发到Executor,从而启动Task的执行;
    5. Executor执行Task,然后释放相应的资源。

  

  

spark学习笔记_1的更多相关文章

  1. Spark学习笔记-GraphX-1

    Spark学习笔记-GraphX-1 标签: SparkGraphGraphX图计算 2014-09-29 13:04 2339人阅读 评论(0) 收藏 举报  分类: Spark(8)  版权声明: ...

  2. Spark学习笔记3——RDD(下)

    目录 Spark学习笔记3--RDD(下) 向Spark传递函数 通过匿名内部类 通过具名类传递 通过带参数的 Java 函数类传递 通过 lambda 表达式传递(仅限于 Java 8 及以上) 常 ...

  3. Spark学习笔记1——第一个Spark程序:单词数统计

    Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...

  4. Spark学习笔记之SparkRDD

    Spark学习笔记之SparkRDD 一.   基本概念 RDD(resilient distributed datasets)弹性分布式数据集. 来自于两方面 ①   内存集合和外部存储系统 ②   ...

  5. spark学习笔记总结-spark入门资料精化

    Spark学习笔记 Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用. ...

  6. Spark学习笔记2(spark所需环境配置

    Spark学习笔记2 配置spark所需环境 1.首先先把本地的maven的压缩包解压到本地文件夹中,安装好本地的maven客户端程序,版本没有什么要求 不需要最新版的maven客户端. 解压完成之后 ...

  7. Spark学习笔记3(IDEA编写scala代码并打包上传集群运行)

    Spark学习笔记3 IDEA编写scala代码并打包上传集群运行 我们在IDEA上的maven项目已经搭建完成了,现在可以写一个简单的spark代码并且打成jar包 上传至集群,来检验一下我们的sp ...

  8. Spark学习笔记0——简单了解和技术架构

    目录 Spark学习笔记0--简单了解和技术架构 什么是Spark 技术架构和软件栈 Spark Core Spark SQL Spark Streaming MLlib GraphX 集群管理器 受 ...

  9. Spark学习笔记2——RDD(上)

    目录 Spark学习笔记2--RDD(上) RDD是什么? 例子 创建 RDD 并行化方式 读取外部数据集方式 RDD 操作 转化操作 行动操作 惰性求值 Spark学习笔记2--RDD(上) 笔记摘 ...

随机推荐

  1. 分享张鑫旭大神的,纯css打字小技巧,我顺便收藏一下

    CSS代码: .typing { width: 15em; white-space: nowrap; border-right: 2px solid transparent; animation: t ...

  2. Ceres Solver 入门稍微多一点

    其实ceres solver用了挺多的,可能是入门不精,有时候感觉感觉不理解代码上是怎么实现的,这次就通过ceres的官网仔细看了一些介绍,感觉对cpp了解更好了一些. 跟g2o的比较的话,感觉cer ...

  3. 简单Socket网络通信

    问题:编写一个网络应用程序,有客户端和服务端,客户端向服务端发送一个字符串(如"Hello Socket"),服务器收到该 字符串后将其打印到命令行上,然后向客户端返回该字符串的长 ...

  4. Linux c codeblock的使用(三):使用函数库

    (一)概念 什么是函数库呢?一下子说概念大家可能不太熟悉,但是这实际上是大家在windows系统上经常见到的东西.没错,就是那些后缀为DLL的文件. linux上实际也有自己的函数库文件,文件类型为. ...

  5. selenium自动化实例: 多层框架中关于iframe的定位,以及select下拉框选择

    对于一个自动化的初学者来说会很常见的遇到元素明明存在却始终定位不到, 从而导致脚本报错,当然定位不到元素的原因很多, 其中一种就是多层框架iframe导致的 下方截图示意: 下方为写脚本时候的示例并其 ...

  6. Oracle 11g ogg单表初始化步骤

    ogg单表初始化步骤 2018-06-08 14:55 296 0 原创 GoldenGate 本文链接:https://www.cndba.cn/leo1990/article/2842 1.ogg ...

  7. 使用VirtualBox把IMG文件转换为VDI文件

    使用VirtualBox把IMG文件转换为VDI文件 首先确保已安装VirtualBox. 需要使用的命令: 语法:$ VBoxManage convertdd input.img output.vd ...

  8. 开发一个简单的chrome插件-解析本地markdown文件

    准备软件环境 1. 软件环境 首先,需要使用到的软件和工具环境如下: 一个最新的chrome浏览器 编辑器vscode 2. 使用的js库 代码高亮库:prismjs https://prismjs. ...

  9. centos7搭建vsftpd并启用虚拟用户

    虚拟用户的特点是只能访问服务器为其提供的FTP服务,不能访问系统的其它资源,所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其他资源,可以使用虚拟用户来提高系统的安全性. 在vsft ...

  10. 活代码LINQ——06

    一.模块代码 ' Fig. 9.4: LINQWithArrayOfObjects.vb ' LINQ to Objects using an array of Employee objects. M ...