spark概述随笔 // todo

1、spark是一个apache开源项目

2、spark可以提升程序运行速度,spark在100TB数据比赛中战胜hadoop,并且只使用了十分之一的机器。

3、spark提供了java,scala和python语言api支持

4、spark可以与hadoop生态系统和数据源很好的集成。

5、spark可以运行在yarn和mesos管理的集群上。

6、spark核心由spark sql、spark streaming、mllib、graphX组成。

7、spark core是基本引擎,用于大规模并行和分布式数据处理;负责“内存管理和故障恢复”,“在集群上安排、分布和监控作业”,“与存储系统进行交互”。

8、spark引入了弹性分布式数据集(RDD,resilient distributed dataset),它是一个不可变的、容错的、分布式的对象集合,我们可以操作这个集合。他在加载外部数据或者从驱动应用程序分发集合时创建。

9、RDD支持两种操作类型,转换操作(例:映射、过滤、联接、联合),它在一个RDD上执行操作,然后创建一个新的RDD来保存结果;行动操作(例:归并、计数、top),它在一个RDD上执行某种计算,然后反馈结果。

10、spark 中 转换是“懒惰”的,spark并不会立即计算出结果,spark只是记住当前需要做的操作,只有当行为被调用的时候spark才会真正的进行运算。例如,如果一个大文件需要通过各种转换操作,并且文件被传递给第一个行为,那么spark只会处理第一行内容并返回结果,而不会处理整个文件(// todo 编写代码验证)。spark可以将RDD之持久化或者缓存到内存中,spark就会在集群保留这些元素,便于下一次快速使用

11、spark sql,提供sql或者hive来直接查询数据。spark sql起源于hive,用于spark上替代MR,现在直接集成到spark堆中了。

12、spark streaming支持实时处理流数据,接收消息队列数据,spark会将数据分成不同的批次,分批次的进行处理,类似流一样

13、MLlib是一个机器学习库,提供了各种算法,提供 分类、回归、聚类、协同过滤等等。(// todo 不明觉厉)

14、GraphX是一个用来处理图的库,执行基于图的并行运算。(// todo 不明觉厉)

后续补充

15、RDD容错。每个RDD都会记录自身依赖的父RDD,一旦出现RDD出现分片丢失,可以通过计算迅速恢复。

RDD依赖分为宽依赖和窄以来,宽依赖:每个partition可以给多个RDD使用,由于多重依赖,只有等到所有节点的数据处理完毕才能进行下一步处理,为防止数据发生丢失或者损坏,需要将之前上一次节点的数据物化,用于恢复。窄依赖:每个分片只能给一个RDD使用,由于没有多重依赖,所以再一个节点上可以一次性将分片处理完,且一旦发生丢失或者损坏可以迅速从上一个RDD恢复。

16、spark中partition和hdfs的block的关系。

hdfs的block是分布式存储的最小单元,类似于盛放文件的盒子。

spark的partition是弹性分布式数据集 RDD的最小单元,RDD是由分布在各个节点上的partition组成的。

partition是指的spark在计算过程中,生成的数据在计算空间内最小单元,同一份数据(RDD)的partition大小不一,数量不定,是根据程序类的算子和最初读入的数据分块数量决定的。因此称为弹性分布式数据集。

block位于存储空间、partition位于计算空间

block的大小是固定的、partition大小不固定

block有冗余、不会轻易丢失。partition 有冗余(设置storagelevel),如果丢失后可以通过重新计算获得。

直白讲述:”

著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:昆吾
链接:https://www.zhihu.com/question/37310539/answer/71422848
来源:知乎

存储上为什么要将空间抽象成块前面的兄台已经叙述了,而且之所以设计成这么大的理由还牵扯到大存储空间中的各种管理、容错等等。那么与之对应的,在并行计算里我们希望降低网络带宽的负荷,所以会对计算做一层计算本地性优化,那么怎样做到这点呢?最简单的逻辑,把计算代码发到数据所在的节点上执行就可以了。那么这样一来,怎样做到并行优化?很简单啦,把一个超大的文件切切切分成一个一个不大不小的块(比如hdfs默认的64M,或者配得再大一点),然后把这些块打散在集群的不同节点上,最后把应用代码跟着数据块走,就能在不同节点上并行计算了。与之相对应的,spark为了利用起内存,对一些中间数据尽可能的用内存访问速度进行读写,所以把这部分管理工作纳入到自己这里(对比一下,经典的hadoop mapreduce就直接交给hdfs进行管理),可是就算存到内存里,那也得沿着这个思路来啊,不然计算本地化,并行之类的就很混乱了,那好吧,我也引入个概念,就叫partition好了,目的和前面一样。然后突然发现,哎呀我靠,这不得了,不仅能做到这些,既然我把一个超大份的数据都分成一块一块的了,那每一块是不是就能独立分隔开来了?那一个超大份文件,内存完全放不下,完全可以把其中一些块放到内存里,另外一些暂时放到硬盘里嘛,好歹也比纯放到hdfs来得快嘛……于是生活就变得美好了起来。但是要注意的是,计算本地性优化并不是说绝对地把任务只发到数据所在地进行执行,还要考虑到均衡和并发能力的取舍,不然你的数据要都在一个节点上,难道就只在这台节点上跑任务啦?当然也不可能对吧~

17、spark缓存

useDisk(硬盘)、useMemory(内存)、deserialized(反序列化,用于网络传输对象)、replication(分本数量)

class storageLevel private(useDisk boolean,useMemory boolean,deserialized boolean,repliaction:int)

18、提交Job

spark-submit

sbt run

java -jar

参照:http://blog.jobbole.com/89446/

http://www.docin.com/p-1090058011.html

关于Spark的基本概念和特性简介

http://my.oschina.net/u/2306127/blog/470505#OSC_h1_1

关于partition和block的关系和区别

https://www.zhihu.com/question/37310539

时间: 2024-12-27 03:53:16

spark概述随笔 // todo的相关文章

spark概述和安装部署

1.spark概述 1.什么是spark 基于内存的计算引擎,它的计算速度非常快.但是spark仅仅只涉及到数据的计算,没有涉及到数据的存储. 2.为什么学习spark 比mapreduce计算速度快很多. 3.spark特点 1.速度快 比mapreduce在内存中快100x,在磁盘中快10x 1.由于mapreduce每次job的中间结果数据都会落地到磁盘中,而spark每次中间结果数据可以不落地(可以保存在内存中) 2.mapreduce任务对应都会产生一些map任务和reduce任务,这

Spark概述及集群部署

Spark概述 什么是Spark (官网:http://spark.apache.org) Spark是一种快速.通用.可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目.目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL.Spark Streaming.GraphX.MLlib等子项目,Spark是基于内存计算的大数据并行计算框架.Spark基

Spark教程(2)-Spark概述及相关组件

1.概述 Spark起源于加州大学伯克利分校RAD实验室,起初旨在解决MapReduce在迭代计算和交互计算中的效率低下问题.目前Spark已经发展成集离线计算,交互式计算,流计算,图计算,机器学习等模块于一体的通用大数据解决方案. 2.Spark组件 Spark Core Spark Core 实现了 Spark 的基本功能,包含任务调度.内存管理.错误恢复.与存储系统 交互等模块. Spark Core 中还包含了对弹性分布式数据集(resilient distributed dataset

Spark 概述及其高可用集群部署

Spark入门 一. 学习目标 目标1:熟悉Spark相关概念 目标2:搭建一个Spark集群 二. Spark概述 2.1什么是Spark(官网:http://spark.apache.org) Spark是一种快速.通用.可扩展的大数据分析引擎,2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目.目前,Spark生态系统已经发展成为一个包含多个子项目的集合,其中包含SparkSQL.Spark Str

第1节 Spark概述:1 - 4

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生态系统已经发展成为一个包含多个子项目的集合,其中包

Spark 概述

Apache Spark 是一个快速的.多用途的集群计算系统.在 Java,Scala,Python 和 R 语言以及一个支持常见的图计算的经过优化的引擎中提供了高级 API.它还支持一组丰富的高级工具,包括用于 SQL 和结构化数据处理的 Spark SQL,用于机器学习的 MLlib,用于图形处理的 GraphX 以及 Spark Streaming. 下载 从该项目官网的 下载页面 获取 Spark,该文档用于 Spark 2.0.2 版本.Spark 使用了用于 HDFS 和 YRAN

spark 概述与安装

概述 spark 是一个快速的通用集群计算系统.它提供了丰富的高水平的api供java,scala和python调用. 安装 到官网下载最新版本spark-1.3.1 http://spark.apache.org/downloads.html,这里以这个版本的安装为列,下载后解压,进入到软件根目录,它有两种安装方式,一种通过mvn,另一种通过sbt,两种区别不到,以mvn安装为列说明,执行下面命令 build/mvn -Pyarn -Phadoop-2.4 -Dhadoop.version=2

Spark概述

1. Spark定义 构建与计算集群之上支持大数据集的快速的通用的处理引擎a)快速: DAG.Memoryb)通用:集成Spark SQL.Streaming.Graphic.R.Batch Processc)运行方式:StandAloneYARNMesosAWSd)数据来源:Hdfs Hbase Tachyon Cassandra Hiveand Any Hadoop Data Source2.Spark协议栈2.1 Hadoop生态系统 2.2 Spark协议栈 2.3 Spark VS M

kafka spark streaming例子——TODO 没有成功

python3+spark2.1+kafka0.8+sparkStreaming python代码: import time from pyspark import SparkContext from pyspark.streaming import StreamingContext from pyspark.streaming.kafka import KafkaUtils from operator import add sc = SparkContext(master="local[1]&