Spark运行原理和RDD解析(DT大数据梦工厂)

Spark一般基于内存,一些情况下也会基于磁盘

Spark优先会把数据放到内存中,如果内存实在放不下,也会放到磁盘里面的

不单能计算内存放的下的数据,也能计算内存放不下的数据

实际如果数据大于内存,则要考虑数据放置策略和优化算法,因为Spark初衷是一寨式处理

小到5~10台的分布式大到8000台的规模,Spark都能运行

大数据计算问题:交互式查询(基于shell、sparkSQL)、批处理、机器学习和计算等等

底层基于RDD,分布式弹性数据级,支持各种各样的比如流处理、SQL、SparkR等等范式

==========Spark特点============

要理解Spark,从以下方面理解

1、分布式多台机器运行

不同节点会处理其中一部分数据,各个节点数据处理互不干扰,分布式做并行化

Cluster Manager负责分配资源到各个节点中,各节点算完之后,再汇总到Cluster Manager再统一输出

2、内存式+磁盘计算

例如:300万条数据,分配到3台机器,比如每台机器100万(也可能不是平均),一台机器100万条内存放的下放内存,放不下就内存

3、迭代式计算是Spark真正的精髓

将计算分成N个过程,一个过程结束再下一个

shuffle是一个节点到另外一个节点

==========开发============

我们写好程序通过Driver到各个机器

为什么大部分大部分用JAVA写程序

因为JAVA的人比较多,Scala的人比较少

JAVA和J2EE融合比较方便

后续维护比较方便

缺点:JAVA开发Spark太繁琐了

后面的例子同时使用Scala和JAVA实现

开发是单独的机器,提交机器是在另外的机器上

可以处理的数据来源:SparkWorker可以从各种数据,除了HDFS、HBase,还可以从Hive,oracle,mysql

注:Hive数据仓库,数据引擎,SparkSQL可以实现这个,但是不能完全取代Hive

处理数据输出:HDFS、HBase、Hive、oracle、s3或者直接返回到客户端等等

==========运行============

一切基于RDD(弹性分布式数据集),

弹性之一:

进行数据分片,默认放在内存中的,如果内存放不下,一部分会放在磁盘上进行保存,对用户来说完全不需要关心它数据是在哪里的,RDD会自动进行内存和磁盘的切换

弹性之二:

基于Lineage的高效容错,假设一个作业步骤有1000个步骤,假设在901步骤的时候出错,它会自动从900个步骤进行纠错回复重新计算

弹性之三:

Task如果失败,会自动进行特定次数的重试,假设一个Task有1000个步骤,假设901步骤出错,如果从900个步骤开始重试,会有一定次数的重试,还是失败就真失败

弹性之四:

Stage如果失败,会自动特定次数的重试,而且只会计算失败的分片

注:Stage,其实就是阶段

==========做缓存时机 ============

1、特别耗时

2、计算链条很长

3、Shuffle之后,如果这之后失败做过缓存,就不用再做shuffle了

4、checkpoint之前,前面的步骤都缓存过了之后,如果checkpoint断了,之前的就保存了

==========RDD例子 ============

除了hadoop、spark的start-all

hadoop应该启动./start-df.sh

spark应该启动./start-

http://master:18080  看曾经运行的作业的信息

spark的bin下面./spark-shell --master spark://Master:7077

val data = sc.textFile("/library/wordcount/input/Data")或者sc.textFile("hdfs//Master:9000/library/wordcount/input/Data")

Spark自己会创建RDD

data.roDebugString看数据依赖关系

可以看出是MapPartitionnsRDD是分片方式,分布在不同机器上的

data.count看数据

http://Master:4040看job

数据不动,代码动,数据都分布在各个机器上的。

一个Block Size一般是128M,实际Partition和Block Size可能会有出入

val flatted = data.flatMap(_.spilit(" "))

又产生的了新的MapPartitionnsRDD

val mapped = flatted.map(word=>(word,1))//每个单词计数为1

val reduced = mapped.reduceByKey(_+_)

key相同的相加,产生shuffle

reduced .saveAsTextFIle("/library/wordcount/input/Data/output/onclick4")

另外:

Data2222不存在,开始加载是lazy的,所以不会报错,只有data.count就会报错

下一讲:eclipse开发JAVA和scala角度开发测试和运行程序

作业:写一篇博客,写你理解的Spark的基本理解

王家林老师名片:

中国Spark第一人

新浪微博:http://weibo.com/ilovepains

微信公众号:DT_Spark

博客:http://blog.sina.com.cn/ilovepains

手机:18610086859

QQ:1740415547

邮箱:[email protected]

时间: 2024-10-05 16:52:55

Spark运行原理和RDD解析(DT大数据梦工厂)的相关文章

王家林谈Spark性能优化第一季!(DT大数据梦工厂)

内容: 1.Spark性能优化需要思考的基本问题: 2.CPU和Memory: 3.并行度和Task: 4.网络: ==========王家林每日大数据语录============ 王家林每日大数据语录Spark篇0080(2016.1.26于深圳):如果Spark中CPU的使用率不够高,可以考虑为当前的程序分配更多的Executor,或者增加更多的Worker实例来充分的使用多核的潜能. 王家林每日大数据语录Spark篇0079(2016.1.26于深圳):适当设置Partition分片数是非

Spark Sort-Based Shuffle内幕彻底解密(DT大数据梦工厂)

内容: 1.为什么使用Sorted-Based Shuffle: 2.Sorted-Based Shuffle实战: 3.Sorted-Based Shuffle内幕: 4.Sorted-Based Shuffle的不足: 最常用的Shuffle方式,Sorted-Based Shuffle涉及了大规模Spark开发.运维时核心问题,以及答案的要害所在. 必须掌握这一讲内容. 本课是从Spark初级人才成功升级为Spark中级人才的通道. 稍有水平的大公司,面试内容本讲肯定会涉及. ======

打通Spark系统运行内幕机制循环流程(DT大数据梦工厂)

内容: 1.TaskScheduler工作原理: 2.TaskScheduler源码解密: Stage里面有一系列任务,里面的任务是并行计算的,逻辑是完全相同的,只不过是处理的数据不同而已. DAGScheduler会以Task方式提交给TaskScheduler(任务调度器). ==========TaskScheduler工作原理解密============ 1.DAGScheduler在提交TaskSet给底层调度器的时候是面向接口TaskScheduler,这符合面向对象中依赖抽象,而不

Spark集群搭建与测试(DT大数据梦工厂)

Spark流行的两种文件存储方式:1.Hadoop的HDFS:2.H3云存储 tux yarn  +HDFS是未来3.5年的趋势 看你用的是bash,可能ubuntu里的bash不会自动source /etc/profile,所以你将那条export命令放在~/.bashrc里试试 计算的集群和数据存储的集群不在同一个集群上的话,性能不高不可接受,tux yarn解决了这个问题,它用JAVA写的 ubuntu 设置root登录见http://jingyan.baidu.com/article/1

DT大数据梦工厂第三十五课 Spark系统运行循环流程

本节课内容: 1.     TaskScheduler工作原理 2.     TaskScheduler源码 一.TaskScheduler工作原理 总体调度图: 通过前几节课的讲解,RDD和DAGScheduler以及Worker都已有深入的讲解,这节课我们主要讲解TaskScheduler的运行原理. 回顾: DAGScheduler面向整个Job划分多个Stage,划分是从后往前的回溯过程:运行时从前往后运行的.每个Stage中有很多任务Task,Task是可以并行执行的.它们的执行逻辑完

底层战详解使用Java开发Spark程序(DT大数据梦工厂)

Scala开发Spark很多,为什么还要用Java开发原因:1.一般Spark作为数据处理引擎,一般会跟IT其它系统配合,现在业界里面处于霸主地位的是Java,有利于团队的组建,易于移交:2.Scala学习角度讲,比Java难.找Scala的高手比Java难,项目的维护和二次开发比较困难:3.很多人员有Java的基础,确保对Scala不是很熟悉的人可以编写课程中的案例预测:2016年Spark取代Map Reduce,拯救HadoopHadoop+Spark = A winning combat

DT大数据梦工厂Spark机器学习相关视频资料

大数据未来几年发展的重点方向,大数据战略已经在十八届五中全会上作为重点战略方向,中国在大数据方面才刚刚起步,但是在美国已经产生了上千亿的市场价值.举个例子,美国通用公司是一个生产飞机发动机的一个公司,这家公司在飞机发动机的每一个零部件上都安装了传感器,这些传感器在飞机发动机运作的同时不断的把发动机状态的数据传到通用公司的云平台上,通用公司又有很多数据分析中心专门接受这些数据,根据大数据的分析可以随时掌握每一家航空公司发动机的飞行状况,可以告知这些航空公司发动机的哪些部件需要检修或保养,避免飞机事

DT大数据梦工厂-Scala学习笔记(1):Scala开发环境搭建和HelloWorld解析

一.scala是函数式编程和面向对象编程结合的语言,这两种编程的特点分别是什么? 答:函数式编程擅长数值的计算:面向对象编程特别适合于大型工程或项目的组织,以及团队的分工协作. 二.Scala的特点 Scala结构优雅.计算精致.富有表现力 三.scala的安装需要什么资源? Java,推荐安装Java8(Java7也可以) 支持scala 2.10.*以上(可以安装2.10.4,http://scala-lang.org/download) 四.设置环境变量(系统变量): (1)JAVA_HO

DT大数据梦工厂 第63,64,65讲

王家林亲授<DT大数据梦工厂>大数据实战视频“Scala深入浅出实战经典”视频.音频和PPT下载!第63讲:Scala中隐式类代码实战详解百度云:http://pan.baidu.com/s/1o6wxJdS腾讯微云:http://url.cn/TfOJqr360云盘:http://yunpan.cn/cckajtapNGT9z 访问密码 369d本节王老师讲了隐式类.其作用就是把转换后的类放在一个作用域中,消除了之前的隐式转换方法.object Context{ implicit class