Spark学习笔记(一)
概念:
Spark是加州大学伯克利分校AMP实验室,开发的通用内存并行计算框架。
支持用scala、java和Python等语言编写应用程序。相较于Hdoop,往往有更好的运行效率。
Spark包括了Spark Core, Spark SQL, SparkStreaming,MLlib和Graphx等组件。
- Spark Core:内存计算框架
- Spark SQL:及时查询
- SparkStreaming:实时应用的处理
- MLlib:机器学习
- Graphx:图形处理

Spark运行模式:
|
Local |
本地模式 |
用于本地开发测试,本地还分为local单线程和local-cluster多线程。 |
|
On yarn |
集群模式 |
运行在yarn框架之上,由yarn负责资源管理,Spark负责任务调度和计算。 |
|
Standalone |
集群模式 |
典型的Mater-slave模式,Spark自带的模式。 |
On yarn模式需要配置hadoop环境。
RDD:
众所周知,Spark的核心是RDD。RDD(Resilent Distributed Dataset)弹性分布式数据集,是一个容错的,并行的数据结构。可以让用户显式地将数据存储到磁盘和内存中,并能控制数据的分区。同时,RDD还提供了一组丰富的操作来操作这些数据。
RDD实现了基于Lineage的容错机制。RDD的转换关系,构成了compute chain,可以把这个compute chain认为是RDD之间演化的Lineage。
当一个RDD的数据丢失之后,可以从其父RDD重新计算得到。如果父RDD也不可用,则再从上一级开始计算。
简单的介绍下RDD的依赖关系:
- 窄依赖(narrow dependcies):一个子RDD只依赖一个父RDD。
- 宽依赖(wide dependcies):一个子RDD依赖于多个父RDD。
当一个RDD需要依据一个lineage进行重算时,由于窄依赖的关系更为简单,因而回复该RDD的效率更高。相反,对于宽依赖的RDD而言需要更多的时间用于恢复。
虽然lineage可用于错误后RDD的恢复,但对于很长的lineage的RDD来说,这样的恢复耗时较长。因此,将某些RDD进行检查点操作(Checkpoint)保存到稳定存储上,是有帮助的。
Transformation和Action:
算子是RDD中定义的函数,可以对RDD中的数据进行转换和操作。
RDD有两种操作算子:
- Transformation(转换)
- Action(执行)
Transformation:结果是得到一个新的RDD。比如从数据源生成一个RDD,或是由一个RDD生成另一个RDD。
Action:得到一个值或者是一个计算结果(结果也可以是一个RDD,例如使用col lec算子)。
所有的Transfomation采用的均为懒策略。即当一个Transfomation被提交时,不会立即进行计算。计算只有在action被提交时才触发。
下图描述了Spark在运行转换中通过算子对RDD进行转换:

Spark学习笔记(一)的更多相关文章
- 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学习笔记-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学习笔记0——简单了解和技术架构
目录 Spark学习笔记0--简单了解和技术架构 什么是Spark 技术架构和软件栈 Spark Core Spark SQL Spark Streaming MLlib GraphX 集群管理器 受 ...
- Spark学习笔记2——RDD(上)
目录 Spark学习笔记2--RDD(上) RDD是什么? 例子 创建 RDD 并行化方式 读取外部数据集方式 RDD 操作 转化操作 行动操作 惰性求值 Spark学习笔记2--RDD(上) 笔记摘 ...
- Spark学习笔记1——第一个Spark程序:单词数统计
Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...
- Spark学习笔记——读写Hbase
1.首先在Hbase中建立一张表,名字为student 参考 Hbase学习笔记——基本CRUD操作 一个cell的值,取决于Row,Column family,Column Qualifier和Ti ...
随机推荐
- 1098 Insertion or Heap Sort (25分)
According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and gr ...
- PTA | 1008 数组元素循环右移问题 (20分)
一个数组A中存有N(N>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(M>=0)个位置,即将A中的数据由(A0 A1--AN-1)变换为(AN-M -- AN-1 A0 ...
- 如何连接到Oracle数据库?
如何连接到Oracle数据库? 使用SQL * Plus连接Oracle数据库服务器 SQL * Plus是交互式查询工具,我们在安装Oracle数据库服务器或客户端时会自动安装.SQL * Pl ...
- js中相关的windows方法的使用和location的先关方法的使用
下面是关于windows的相关方法的简单介绍. setInterval():它有一个返回值,主要是提供给clearInterval使用. setTimeout():它有一个返回值,主要是提供给clea ...
- javaweb添加学生信息
连接数据库已经进行判断 要求: 1登录账号:要求由6到12位字母.数字.下划线组成,只有字母可以开头:(1分) 2登录密码:要求显示“• ”或“*”表示输入位数,密码要求八位以上字母.数字组成.(1分 ...
- 登录窗口java
这次代码是登录窗口的制作. 主要的方面是是包括,用户名.密码.验证码.以及输入数据所需要的文本框,对于验证码可以通过点击验证码进行修改.同时对于验证码的前景色和背景色同时都得到修改. 点击注册(这里还 ...
- bootstraptable 必备知识点
1.如何动态刷新表中数据? (1).无参刷新: $("#table").bootstrapTable('refresh'); (2).带参刷新: var opt = { url: ...
- Django 已生成数据时怎么查询数据库
数据库已写好时,怎样查询数据库 1.输入命令:python manage.py inspectdb > model1.py 注:>重定向 到model1.py
- C语言实现双向链表
目前我们所学到的链表,无论是动态链表还是静态链表,表中各节点中都只包含一个指针(游标),且都统一指向直接后继节点,通常称这类链表为单向链表(或单链表). 虽然使用单链表能 100% 解决逻辑关系为 & ...
- 【FreeMarker】【程序开发】数据模型,对象包装
[FreeMarker][程序开发]数据模型,对象包装 分类: Java.FreeMarker2014-10-25 18:49 413人阅读 评论(0) 收藏 举报 FreeMarker 目录(? ...