Spark大数据技术平台详解_第1页
Spark大数据技术平台详解_第2页
Spark大数据技术平台详解_第3页
Spark大数据技术平台详解_第4页
Spark大数据技术平台详解_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

1、技术创新,变革未来Spark大数据技术平台详解内容Spark介绍Spark体系结构 Spark示例Spark逻辑执行计划Spark物理执行计划大数据处理常见场景批量处理(Batch Processing)侧重于处理海量数据,处理速度可忍受,时 间可能在数十分钟到数小时MR历史数据交互式查询(Interactive Query)时间在数秒到数十分钟之间Presto实时流数据处理(Streaming Processing)通常在数十毫秒到数秒之间StormSpark 是什么大数据处理一站式解决平台!?基于内存分布式并行计算框架加州大学伯克利分校AMP实验室开发Spark VS Hadoop最大的误

2、区:Spark替代HadoopSpark借鉴MR发展而来,继承分布式并行 计算优点并改进了MR缺陷MR计算结果需落地磁盘,Spark中间数据 放在内存中MR只提供Map和Reduce两种操作, Spark提供了Transformations和Actions两 大类操作Spark VS MRSpark VS MRSpark VS MRSpark在hadoop生态体系中的位置Spark 生态系统Spark 支持语言ScalaJavaPythonRSpark 体系结构Spark 体系结构Client 可以在集群内也可以在集群外1个 application 包含1个 driver 和多个executo

3、r1个 executor 里面运行的 tasks 都属于同1个applicationSpark on YarnYarn Client 和 Yarn Cluster区别Spark 示例Spark安装交互式开发./spark-shell -master local2./spark-shell -master yarn-clientIDE开发WordCountSpark 示例val textFile = sc.textFile(/spark/README.md)textFile.count textFile.firstval linesWithSpark = textFile.filter(line

4、 = line.contains(spark)linesWithSpark.countSpark 示例./bin/spark-submit-name -class -master yarn-cluster-num-executors 2-executor-memory 4G-executor-cores 2-driver-memory 1G*.jar spark-submit提交程序,会读取配置文件conf/spark-defaults.conf命令行中参数优先级高于配置文件程序中SparkConf对象的设置优先级最高Spark 关键术语术语含义Application包含了一个driver p

5、rogram 和 集群中多个的executorDriver Program运行在Driver进程,执行Application的main()函数并且创建SparkContext,Driver进程占用一定数量的内存和CPU coreCluster Manager如Standalone、Mesos、YarnWorker Node集群中任何运行Executor进程的节点Executor某Application运行在worker node上的一个进程,该进程负责 运行Task,Application之间不共用,每个Executor进程都占有 一定数量的内存和CPU coreJob包含多个Task组成的并

6、行计算,往往由Spark Action生成Stage每个Job会被拆分很多组task,每组任务被称为Stage,也可称TaskSet,由Shuffle和Action生成Task最小的计算单元,执行一模一样的计算逻辑(我们写的某个代 码段),只是每个task处理的数据不同,在某个executor执行Spark执行计划MR中,用户直接面对 task,mapper 和 reducer 的职责分明:一个进行分块处理, 一个进行 aggregateMR中数据依赖和task执行流程是一致且固定 的,只需实现 map 和 reduce函数即可Spark中数据依赖可以非常灵活Spark将数据依赖和具体 tas

7、k的执行流程分 开,通过将逻辑执行计划转换成物理执行计 划Spark执行计划首先建立逻辑执行计划(RDD依赖关系)把逻辑执行计划转换为物理执行计划(划分Job,形成Stage和Task)执行TaskSpark逻辑执行计划逻辑执行计划描述了数据流:经过哪些 transformation,中间生成哪些 RDD 及 RDD 之间的依赖关系逻辑执行计划表示数据上的依赖关系,不是task的执行流程Spark逻辑执行计划Spark逻辑执行计划从数据源读取数据创建最初的 RDD,如本地 file、 内存数据结构(parallelize)、 HDFS、HBase等对 RDD 进行一系列的 transforma

8、tion操作对final RDD 进行 action 操作,每个 partition 计算 后产生结果 result将 result 回送到 driver 端,进行最后的 f(listresult)计算如count() 实际包含了action() 和 sum() 两步典型RDD依赖groupByKeyval rdd = sc.parallelize(List(1, a),(2,b),(3,c),(4, d),(5,e),(3,f),(2, g),(1,h), 3)val rdd2 = rdd.groupByKey(2)groupByKey通过 shuffle将 Key 相同的records 聚

9、合在一起groupByKey 没有在map 端进行 combine典型RDD依赖reduceByKeyval rdd = sc.parallelize(List( A,1),(B,1),(C,1),( B,1),(C,1),(D,1), (C,1),(A,1), 3)val rdd2 = rdd.reduceByKey(_+_, 2)reduceyByKey相当于MR中的reduce, 数据流一样reduceyByKey在 map 端开启 combine典型RDD依赖joinRDD依赖总结Each box is an RDD, with partitions shown as shaded r

10、ectanglesRDD依赖总结窄依赖(narrow dependencies)子RDD的每个分区依赖于常数个父分区(即 与数据规模无关)允许父分区以流水线的方式找到子分区map产生窄依赖宽依赖(wide dependencies)子RDD的每个分区依赖于所有父RDD分区类似于MR的shuffle过程Join产生宽依赖(除非父RDD被哈希分区)Spark物理执行计划import org.apache.spark.HashPartitionerval rddA = sc.parallelize(List(5,e),(3,a),(2,b),(1,c),3) val rddAHash = rddA.

11、partitionBy(new HashPartitioner(3)val rddB = sc.parallelize(List(1,A),(2,B),(3,C),(4,D),2) val rddBMap = rddB.map(x = (x._1, x._2 + 1)val rddC = sc.parallelize(List(1,X),(2,Y),2) val rddBUnionC = rddBMap.union(rddC)val result = rddAHash.join(rddBUnionC ,3) result.toDebugStringSpark物理执行计划Spark物理执行计划R

12、DD中每个Partition是独立的Spark物理执行计划从后往前计算,根据窄依赖和宽依赖划分stagestage 里task 数目取决于最后一个 RDD 中的 partition 个数Spark物理执行计划1个Application 可以包含多个 job1个 job可以包含多个 stage1个 stage可以包含多个 taskSpark物理执行计划从后往前推,需要哪个 partition 就计算哪个 partition, 如果 partition 里面没有数据,就继续向前推对于没有 parent stage 的 stage,该 stage 最左边的RDD 是可以立即计算的对于有 parent

13、 stage 的 stage,先等着所有 parent stages 中 final RDD 中数据计算好,然后shuffle实际计算时数据从前到后流动,计算出第一个 record流动到不能再流动后,再计算下一个 record并不是当前 RDD 的 partition 中所有 records 计算后再 整体向后流动Spark物理执行计划执行count,先在每个 partition上执行 count, 然后执行结果被发送到 driver,最后在 driver 端进行 sum执行take类似Spark应用调度RDD Objectsrdd1.join(rdd2).groupBy().filter()build operator DAGDAGSchedulersplit graph into stages of tasks submit each stage as readyDAGTaskSchedulerTaskSetlaunch tasks via cluster manager retry failed or straggling tasksCluster

温馨提示

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

评论

0/150

提交评论