spark学习笔记_1
简单的讲,Apache Spark是一个快速且通用的集群计算系统。
Apache Spark 历史:
2009年由加州伯克利大学的AMP实验室开发,并在2010年开源,13年时成长为Apache旗下大数据领域最活跃的开源项目之一。2014年5月底spark1.0.0发布,2016年6月spark2.0发布,至今最近的版本是xxx(看官网)。
Spark的使用场景:
实时查看浏览统计信息,流式计算,SQL查询,图计算,机器学习。
Spark特点:
- 快速的处理能力。由于spark可以将中间输出和最后结果存储在内存中,不像hadoop MR那样需要大量的磁盘I/O的开销,同时spark的DAG执行引擎也支持数据在内存中的计算。
- 使用方便。spark支持Java、Scala、Python和R编写的应用程序,同时提供了80多个高等级操作符,可以用Scala、Python和R shell进行交互查询。
- 通用性强。Spark提供了一组库,其中包括SQL和DataFrames、用于机器学习的MLlib、GraphX和Spark Straming,在同一个应用程序中无缝地组合这些库。
- 随处运行。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运行原理:
- 创建SparkContext对象,然后SparkContext向Cluster Manager申请资源;
- Cluster Manager在WokerNode上创建Executor并分配资源(CPU,内存等),后期Executor定期向ClusterManager发送心跳信息;
- SparkContext启动DAGSchudler,将提交的任务分解为若干Stage,各个Stage构成DAG;
- Taskset发送给TaskSchudle,TaskSchudle将Task发送给对应的Executor,同时SparkContext将应用程序代码发到Executor,从而启动Task的执行;
- Executor执行Task,然后释放相应的资源。
spark学习笔记_1的更多相关文章
- Spark学习笔记-GraphX-1
Spark学习笔记-GraphX-1 标签: SparkGraphGraphX图计算 2014-09-29 13:04 2339人阅读 评论(0) 收藏 举报 分类: Spark(8) 版权声明: ...
- Spark学习笔记3——RDD(下)
目录 Spark学习笔记3--RDD(下) 向Spark传递函数 通过匿名内部类 通过具名类传递 通过带参数的 Java 函数类传递 通过 lambda 表达式传递(仅限于 Java 8 及以上) 常 ...
- Spark学习笔记1——第一个Spark程序:单词数统计
Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...
- Spark学习笔记之SparkRDD
Spark学习笔记之SparkRDD 一. 基本概念 RDD(resilient distributed datasets)弹性分布式数据集. 来自于两方面 ① 内存集合和外部存储系统 ② ...
- spark学习笔记总结-spark入门资料精化
Spark学习笔记 Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用. ...
- Spark学习笔记2(spark所需环境配置
Spark学习笔记2 配置spark所需环境 1.首先先把本地的maven的压缩包解压到本地文件夹中,安装好本地的maven客户端程序,版本没有什么要求 不需要最新版的maven客户端. 解压完成之后 ...
- Spark学习笔记3(IDEA编写scala代码并打包上传集群运行)
Spark学习笔记3 IDEA编写scala代码并打包上传集群运行 我们在IDEA上的maven项目已经搭建完成了,现在可以写一个简单的spark代码并且打成jar包 上传至集群,来检验一下我们的sp ...
- Spark学习笔记0——简单了解和技术架构
目录 Spark学习笔记0--简单了解和技术架构 什么是Spark 技术架构和软件栈 Spark Core Spark SQL Spark Streaming MLlib GraphX 集群管理器 受 ...
- Spark学习笔记2——RDD(上)
目录 Spark学习笔记2--RDD(上) RDD是什么? 例子 创建 RDD 并行化方式 读取外部数据集方式 RDD 操作 转化操作 行动操作 惰性求值 Spark学习笔记2--RDD(上) 笔记摘 ...
随机推荐
- powercli 学习随笔
powercli就不多介绍了,基于powershell的好东西,可以百度 #PowerShell基本语法 # 注释 <# .... #> 多行注释 $VAR 所有变量的声明或者使用都需要加 ...
- day42-python消息队列一
消息队列”是在消息的传输过程中保存消息的容器.消息队列最经典的用法就是消费者和生成者之间通过消息管道来传递消息,消费者和生成者是不通的进程.生产者往管道中写消息,消费者从管道中读消息.操作系统提供了很 ...
- 记-统计svn与git的log日志中的代码行变更
任务要求 统计指定时间内,指定git地址与svn地址上的所有人员的代码行变更情况. 解决方案 最初为根据数据库中存储的所有git与svn地址来统计所有人员的提交代码行.之后由于库中存储的地址不全,改为 ...
- Python 的第一个小程序
F盘 新建文本文档 hello.txt 内容为: print("hello world! hello 2018!"); 打开CMD cd c:\ ...
- pgmpy安装
1.anaconda安装,可能在cmd中输入conda会报错,是因为在安装的时候没有配置好环境变量,在安装的时候有一个框框没选(当时是not recommand), 解决办法:需要在系统环境变量中添加 ...
- generator mybatis逆向工程
mybatis逆向工程:根据数据库中的表在项目中生成对应的 实体类,dao接口与mapper.xml映射文件 在eclipse中,以插件的形式的存在,把设置好的配置文件,直接通过eclipse中的插件 ...
- python中对文件、文件夹,目录的基本操作
一.python中对文件.文件夹操作时经常用到的os模块和shutil模块常用方法.1.得到当前工作目录,即当前Python脚本工作的目录路径: os.getcwd()2.返回指定目录下的所有文件和目 ...
- [linux-脚本]shebang(shabang #!)
使用Linux或者unix系统的人们对#!这个符号都不陌生,但要说出个具体的所以然来,很多人估计还真不行,我们有必要就此整理一下.Shebang这个符号通常在Unix系统的脚本中第一行开头中写到,它指 ...
- 使用EFCore,手动创建SQLLite数据库
有时候我们需要在代码中动态生成一个sqllite数据库文件,可以按照以下代码完成, static void Main(string[] args) { MyContext context = new ...
- Web开发常见的几个漏洞解决方法 (转)
基本上,参加的安全测试(渗透测试)的网站,可能或多或少存在下面几个漏洞:SQL注入漏洞.跨站脚本攻击漏洞.登陆后台管理页面.IIS短文件/文件夹漏洞.系统敏感信息泄露. 1.测试的步骤及内容 这些安全 ...