预习课件上课前会有部分03唯快不破spark_第1页
预习课件上课前会有部分03唯快不破spark_第2页
预习课件上课前会有部分03唯快不破spark_第3页
预习课件上课前会有部分03唯快不破spark_第4页
预习课件上课前会有部分03唯快不破spark_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、唯快不破Spa唯快不破SparSparkScalaSparkSparkSparkSparkO u t L i nSparkScalaSparkSparkSparkSparkO u t L i n #wget HYPERLINK http:/m/ #cp#wget HYPERLINK http:/m/ #cpspark-env.sh.templatespark-S p a r k 的 安 装#cpslaves.templateS #cpslaves.templateS p a r k 的 安 装#./sbin/start-S p a #./sbin/start-S p a r k 的 启 动#

2、./bin/run-le SparkPi 10 -master Spark# ./bin/spark-# ./bin/run-le SparkPi 10 -master Spark# ./bin/spark-master lib/spark-les-1.6.0-SparkonYarn集群上yarn-cluster# ./bin/spark-submit -les.SparkPi -master yarn-cluster les-1.6.0-hadoop2.6.0.jar S p a r k 的 验 证Spark standalone vs. Spark on Spark standalone:

3、独立模式,类似MapReduce 1.0所采取的Spark standalone vs. Spark on Spark standalone:独立模式,类似MapReduce 1.0所采取的模式,完全实现容错性和资源管Spark on Yarn:让Spark运行在一个通用的资源管理系统之上,这样可以与其他计算框架共享资Yarn Yarn nt vs. Spark Standlone vs. Yarn nt:适用于交互与Driver在任务提交机上执ApplicationMaster只负责向ResourceManager申请executor需要的资基于yarn时,spark-和pyspark必须要

4、使用yarn-nt模Yarn Cluster:适用于生产环S p a r k 的 验 证Yarn Cluster vs. Yarn nt区别:本质是AM进程的区Yarn Cluster vs. Yarn nt区别:本质是AM进程的区别,cluster模式下,driver运行在AM中,负责向Yarn申请资,并监督作业运行状况,当用户提交完作用后,就关掉nt,作业会继续在yarn上运行。然而cluster模式不适合交类型的作业。而开nt模式,AM仅向yarn请求nt会和请求的container通信来调度任务,即ntS p a r k 的 验 证Master:类似Yarn中的Worker:类似Yar

5、n中的S p a r k 的 资 源 管 理 组 件Hadoop中一个MapReduce程序就是一Hadoop中一个MapReduce程序就是一个job,而一个job里面可以有一个或多个Task,Task又可以区分为Map Task和Reduce MapReduce中的每个Task分别在自己的进程中运行,当该Task运S p a r k 和 H a d o o p 作 业 之 间 的 区 别Spark中同样有job的概念,但这里的job和MR中的jobSpark中同样有job的概念,但这里的job和MR中的job不一 在job里面包含多个stage,stage以shuffle进行划分,stag

6、e包含多个Task,多个了Task 和MapReduce不一样,Spark中多个Task可以运行在一个进 优点:加快Spark运行速度,Task可以快速启动,并处理内存数缺点:每个plicio拥有固定数量的exector和固定数目的内存S p a r k 和 H a d o o p 作 业 之 间 的 区 别SparkJob:SparkJob:由多个stage组Stage:对应一个Taskset:对应一组关联的相Task:任务最小的S p a r k 和 H a d o o p 作 业 之 间 的 区 别 (驱动程序)是Spark 构建SparkContext(Spark (驱动程序)是Spa

7、rk 构建SparkContext(Spark 真正执行task的单元,一个WorkNode上可以有多个S p a r k 和 H a d o o p 作 业 之 间 的 区 别SparkScalaSparkSparkSparkSparkO u t L i nSparkScalaSparkSparkSparkSparkO u t L i n S c S c a l a 语 言SS c a l a 语 言S c a l a S c a l a 语 言 S c a l S c a l a 语 言valnewArrayvalgreetStringsnewvalnewArrayvalgreetStri

8、ngsnewS c a l a 语 言方式:Array.ofDim类型(维度123,. )例子:valmuldimArr也可以通过方式:Array.ofDim类型(维度123,. )例子:valmuldimArr也可以通过S c a l a 语 言S c a l S c a l a 语 言。S c a 。S c a l a 语 言。S c a 。S c a l a 语 言S c a l a S c a l a 语 言S c a l aS c a l a 语 言函定义的格式为:def数名(参数列函定义的格式为:def数名(参数列表回值类型函数函数返回值可以用return指定,使用return时函

9、数定义必须指定返回值类型如果没有使用return关键字,默认函数体代码块的最后计算的表达式的值作为返回值无需指定返回值类型对于递归函数,必须指定返回值类型可以在函数再定义函数,如同定义一个局部变量S c a l a 语 言S c a S c a l a 语 言可使用“_S可使用“_S c a l a 语 言和Java不同的,Scala的缺省修饰符为public饰符public,protected,private,Scala缺省定义为 public。S c a 和Java不同的,Scala的缺省修饰符为public饰符public,protected,private,Scala缺省定义为 pub

10、lic。S c a l a 语 言)S )S c a l a 语 言SparkScalaSparkSparkSparkSparkO u t L i nSparkScalaSparkSparkSparkSparkO u t L i n S p a r o y a r n 的 结 构也是一个分布式的并行计算框sparkmare也是一个分布式的并行计算框sparkmareduce,扩展了mr的数据处理流程。 exector都是装载在contaiercotaie默认内存是 1Gschedulermiimumallocation) exectorexectormemoryARexectormemory

11、+ 1*exectors。M在rk中叫driver,M向RM申请的是exector资源,当分配完资源后,exector启动后,由spark的M向exector分配tasktaskexector由M决定,可理sparktaskexectorExecutor有线程池多线程管理这些坑内的Sparkdriver /SparkSparkExecutor伴随整个app线程池模型,省去进程频S p a r o y a r n 的 结 构SparkMR快 分布式分布式存 存 分布式存原始selectcol2,max(col3)fromtable wherecol150 group by col2selectc

12、ol3,maxSparkMR快 分布式分布式存 存 分布式存原始selectcol2,max(col3)fromtable wherecol150 group by col2selectcol3,max(col2)fromtable wherecol150 group by col3select*fromtable wherecol150 selectcol2,max(col3)fromcachetablegroupby ol2)fromcachetablegroupS p a r o y a r n 的 结 构更丰富的(解决API单更丰富的(解决API单一问题Transfomation变换的

13、api,比如map可对每一行做变换,filter过滤出符合条件的行等,这些API实现用户,灵活spark提供很多转换和动作,很多基本操作如Join,GroupBy已经在RDD转换和动作中实现。不需用户自己现S p a r o y a r n 的 结 构本,解决MRvalfile=本,解决MRvalfile=sc.textFile(hdfs:/input) val counts = file.flatMap(line = line.split( .map(word=(word,.reduceByKey(_+S p a r o y a r n 的 结 构SparkScalaSparkSparkSp

14、arkSparkO u t L i nSparkScalaSparkSparkSparkSparkO u t L i n RDD(RDD使用户能RDD(RDD使用户能够显式将计算结果保存在内存中,控制数据的划分,并使用更丰富的操作集合来处使用更丰富的操作来处理,只读(由一个RDD变换得到另一个RDD,但是不能对本身的RDD修改数据的变换而不是数据本身保证容错通常在不同机器上备份数据或数据更新的方式完成容错,但这种对任务密集型任务代价很RDD采用数据应用变换(map,filter,join),若部分数据丢失,RDD拥有足够的信息得知这部分数据是如何计算得到的,可通过重新计算来得到丢的数这种恢复数

15、据方法很快,无需大量操作,可以认为Spark是基于RDD模型的系懒操作,延迟计算,action瞬时性,用时才产生,用S p a r 从共享文件系统中获取,如从HDFS中读数据构建vala = 通过现有RDD转换 从共享文件系统中获取,如从HDFS中读数据构建vala = 通过现有RDD转换 到的第一个类,包含sparkconf sparkenv等valb = a.map(x=(x, valc=sc.parallelize(1 to10,val d rsist(), a.S p a r S S p a r 实际数据块的描述(实际数据到底存在哪,或者不存在其值依赖于哪些宽依赖实际数据块的描述(实际

16、数据到底存在哪,或者不存在其值依赖于哪些宽依赖B的每个partition依赖于A的所有比如groupByKey、reduceByKey、join,由A产生B时会先对A做shuffle分窄依赖B的每个partition依赖于A的常数个比如map、filter、S p a r S p a r S p a r R D D 依 赖 关 系S p a r R S p a r R D D 依 赖 关 系从后往前,将宽依赖的边删掉, 连通分量及其在原图中所有赖的一个StageDAG 是在计算过程中 不 断 扩 展 , 在 action 后才会启动算每个从后往前,将宽依赖的边删掉, 连通分量及其在原图中所有赖

17、的一个StageDAG 是在计算过程中 不 断 扩 展 , 在 action 后才会启动算每个尽可能多地包含一组具有窄依赖关系的转换,并将它们流水线并化StageStageS p a r R D D 依 赖 关 系S p a r R D D 依 赖 关 系) S) S p a r 容 错SparkScalaSparkSparkSparkSparkO u t L i nSparkScalaSparkSparkSparkSparkO u t L i n S p a r k S p a r k 作 业 运 行 原 理Executor的内存分为3第一块:Executor的内存分为3第一块:让task执

18、行代码时,默认占executor总内存的第二块:task通过shuffle过程拉取上一个stage的task的输出后,进行聚合等操作时使,默认也是占第三块:让RDD持久化时使用,默认占executor总内存的Task的执行速度和每个executor进程的CPU Core数量有直接关系,一个CPU Core同一方式,多线程并发运行的。如果CPU Core数量比较充足,而且分配到的task数量比较合理,那么可以比较快速和高效地执行完这些task线S p a r k 资 源 参 数 调 优num-executors:该作业总共需要多少executor进程num-executors:该作业总共需要多少

19、executor进程执executor-memory:设置每个executor进程的内存, num-executors* num- executor进程并行执行tasknum-executors*executor-cores代表作业申请总CPU core数(不要超过总CPU Core的1/31/2 )S p a r k 资 源 参 数 调 优driver-memory:设置Driver进程的建议:driver-memory:设置Driver进程的建议:通常不用设置,一般1G就够了,若出现使用collect算子将RDD数据全部拉取到Driver上处理,就必须保该值足够大,否则OOM内存溢spar

20、k.default.parallelism:每个stage的默认task数建议:设置5001000较合适,默认一个HDFS的block对应一个task,Spark默认值偏少,这样导致不能充分用资spatagmactnDeuo6euor0数据建议:若有较多的持久化操作,可以设置高些,超出内存的会频繁gc导致运行spark.shuffle.memoryFraction:聚合操作占executor内存的比例,默认建议:若持久化操作较少,但shuffle较多时,可以降低持久化内存占比,提高shuffle操作内存占S p a r k 资 源 参 数 调 优S p a r kS p a r k 资 源 参 数 调 优S p a S p a r k 开 发 调 优 比如:一个RDD数据格式是key-value,另一个是单独value类型,这两个RDD的value部分完S p a 比如:一个RDD数据格式是key-value,另一个是单独value类型,这两个RDD的value部分完S p a r k 开 发 调 优 每次对一个RDD执行一个算子操作时,都会重新从 每次对一个RDD执行一个算子操作时,都会重新从 S p a r k 开 发 调 优 persistS p a persistS p a r k 开 发 调 优 S p a r k 开 发 调 优 S p a r k 开 发 调 优Sp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论