资源预览内容
第1页 / 共42页
第2页 / 共42页
第3页 / 共42页
第4页 / 共42页
第5页 / 共42页
第6页 / 共42页
第7页 / 共42页
第8页 / 共42页
第9页 / 共42页
第10页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
,Spark:分布式并行计算框架,内容简介,Spark是什么 Spark的发展历程 Spark能干什么 Spark的适用场景 Spark的特点 Spark生态系统 Spark运行模式 Spark高可用 Spark核心概念:RDD Spark集群搭建 Spark与Hadoop整合 Spark应用部署模式,Spark是什么,Spark是一个基于内存计算的开源的分布式集群并行计算系统 Spark非常小巧玲珑,由加州伯克利大学AMP实验室的Matei为主的小团队所开发。使用的语言是Scala,运行在JVM上,项目的core部分的代码只有63个Scala文件,非常短小精悍。 是继Hadoop之后的新一代大数据分布式处理框架 目前Spark在全球已有广泛的应用,其中包括 Alibaba 、 Baidu 、 Tencent Youku 、IBM、Intel、雅虎等。,Spark发展历程,Spark诞生于2009年,那时候它是,加州大学伯克利分校RAD实验室的一个研究项目,后来到了AMP实验室。 Spark最初是基于Hadoop Mapreduce的,后来发现Mapreduce在迭代式计算和交互式上是低效的。因此Spark进行了改进,引入了内存存储和高容错机制。 关于Spark的研究论文在学术会议上发表,并且在它被创建的2009年不久之后,对于一些特定的工作,Spark比Mapreduce快10-20倍。 2010年3月份Spark开源。 2011年,AMP实验室开始在Spark上面开发高级组件,像Shark(Hive on Spark),Spark Streaming。 2013年转移到了Apache下,现在已经是顶级项目了。 2014年5月份Spark1.0发布。 目前:发布最新版Spark1.6.1 Spark在7年内迅速发展,较于其他大数据平台或框架,Spark代码库最为活跃,Spark发展历程,Spark能干什么,大规模数据处理。例如用户行为数据,电子商务平台用户的操作行为记录,放进Spark系统,然后对数据进行多维度的分析,发现潜在客户,个性化推荐商品 流数据处理。 图计算。社交网络 机器学习。协同过滤,Spark的适用场景,Spark是基于内存的迭代计算框架,适用于需要多次操作特定数据集的应用场合。需要反复操作的次数越多,所需读取的数据量越大,受益越大,数据量小但是计算密集度较大的场合,受益就相对较小 由于RDD的特性,Spark不适用那种异步细粒度更新状态的应用,例如web服务的存储或者是增量的web爬虫和索引。就是对于那种增量修改的应用模型不适合 数据量不是特别大,但是要求实时统计分析需求,Spark特点,Spark是快速的 很多任务能够秒级完成,对于一些特定的工作,Spark比Mapreduce快10-20倍。 Spark扩充了流行的Mapreduce计算模型,使Spark更高效地支持更多类型的计算,包括交互式查询,和流处理。 速度快的另一个主要原因就是,能够在内存中计算。 官方提供的数据表明,如果数据由磁盘读取,速度是Hadoop MapReduce的10倍以上,如果数据从内存中读取,速度可以高达100多倍。,Spark特点,Spark是易用的 Spark不仅支持Scala编写应用程序,而且支持Java和Python, Python, R等语言进行编写。,Spark特点,Spark是通用的 Spark的设计,容纳了之前很多独立的,分布式系统所拥有的功能。独立的分布式系统包括:批处理,迭代式计算,交互查询和流处理等。 并且,由之前需要维护不同的集群,到现在只需要维护一个Spark集群。 Spark生态圈即BDAS(伯克利数据分析栈)包含了Spark Core、Spark SQL、Spark Streaming、MLLib和GraphX等组件,这些组件分别处理Spark Core提供内存计算框架、SparkStreaming的实时处理应用、Spark SQL的即席查询、MLlib或MLbase的机器学习和GraphX的图处理,它们都是由AMP实验室提供,能够无缝的集成并提供一站式解决平台。,Spark特点,Spark是开放的 Spark提供了Java,Scala, Python, R,SQL的API和丰富的内置库。 同时,Spark和其它的大数据工具整合的很好。尤其,Spark能够运行在Hadoop集群上面,能够访问Hadoop数据。,Spark特点,Spark随处运行 Spark具有很强的适应性,能够读取HDFS、Cassandra、HBase、S3和Techyon为持久层读写原生数据,能够以Mesos、YARN和自身携带的Standalone作为资源管理器调度job,来完成Spark应用程序的计算。,Spark生态系统,Spark生态系统,Spark生态圈也称为BDAS(伯克利数据分析栈),是伯克利APMLab实验室打造的,力图在算法(Algorithms)、机器(Machines)、人(People)之间通过大规模集成来展现大数据应用的一个平台。伯克利AMPLab运用大数据、云计算、通信等各种资源以及各种灵活的技术方案,对海量不透明的数据进行甄别并转化为有用的信息,以供人们更好的理解世界。该生态圈已经涉及到机器学习、数据挖掘、数据库、信息检索、自然语言处理和语音识别等多个领域。 Spark生态圈以Spark Core为核心,从HDFS、Amazon S3和HBase等持久层读取数据,以MESS、YARN和自身携带的Standalone为资源管理器调度Job完成Spark应用程序的计算。 这些应用程序可以来自于不同的组件,如Spark Shell/Spark Submit的批处理、Spark Streaming的实时处理应用、Spark SQL的即席查询、BlinkDB的权衡查询、MLlib/MLbase的机器学习、GraphX的图处理和SparkR的数学计算等等。,Spark生态系统,Spark生态系统学习、维护成本很低。要实现一个相对完整的端到端的解决方案,以前需要部署多个专有系统,现在只需要一个Spark Spark Core 对应Hadoop MR SparkSQL 对应Hive SparkStreaming 对应Strom SparkGraphX对应Giraph SparkMLLib 对应Mahout,Spark运行模式,Spark目前主要有4种运行模式 LocalN模式,适用N个线程,用于调试。 Local cluster 伪分布式模式,可以配置worker数量,每个worker管理的cpu和内存,用于调试 Standalone Cluster集群模式 ,Spark:/hostname:port,需要部署spark到相关节点,url为master地址和端口 YARN Cluster 模式,运行在资源管理器yarn集群中 Mesos Cluster模式,运行在资源管理器Mesos集群中,Spark运行模式,Spark运行模式,Spark运行模式,Client 提交driver的终端,可以是集群中的任何一个node,也可以是spark集群外的机器,甚至是调试程序的Ide Driver就是用户提交的程序,这里边定义了SparkContext的实例 SparkContext初始化过程中Spark会分别创建DAGScheduler作业调度和TaskScheduler任务调度两级调度模块 DAGScheduler是基于任务模块的高层调度模块,为每个Spark作业(job)计算具有依赖关系的多个调度模块(通常根据shuffle来划分),然后为每个阶段构建出一组具体的任务(Task),即任务集TaskSet交给TaskScheduler来具体执行 TaskScheduler则负责具体启动任务、监控和汇报任务运行情况 DAGScheduler和TaskScheduler都是不同阶段的调度者,具体执行任务的是Exector Master接收Client提交的作业,管理Worker,并命令Worker启动Driver和Executor Worker负责管理本节点的资源,定期向Master汇报心跳,接收Master的命令,比如启动Driver和Executor,Spark高可用,Spark 采用了Master/Slaves架构的集群模式,因此,存在着Master单点故障。 基于文件系统的单点恢复 此模式下虽然可以恢复,但需要人工参与。因此,适合对高可用要求不高的场景,如果离线分析。 当Master挂掉后,手工启动Master仍然能继续执行原来的任务。当然,也可以继续提交任务 export SPARK_DAEMON_JAVA_OPTS=-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/opt/spark/recovery“ 基于ZooKeeper的HA Spark Standalone使用多个Master节点,通过ZooKeeper推举一个为Active(激活)状态,其它的均为Standby(备用)状态。 当Active Master节点挂掉后,ZooKeeper会从所有的Standby Mater中推举会一个新的Activer Master。新的Active Master恢复到旧有的Active Master的状态,然后恢复调度。从Activer Master失去作用,到新Active Master恢复调度可能需要12分钟。 export SPARK_DAEMON_JAVA_OPTS=“-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=10-154:2181, 10-153:2181, 10-152:2181, 10-154:2181 -Dspark.deploy.zookeeper.dir=/spark,Spark核心概念:RDD,什么是RDD Spark的核心概念是RDD (resilient distributed dataset),是一个只读的,可分区的分布式数据集,这个数据集的全部或部分可以缓存在内存中,在多次计算间重用。 一种有容错机制的特殊集合,可以分布在集群的节点上,以函数式编程操作集合的方式,进行各种并行操作 分布式的,可以分布在多台机器上,进行计算 弹性的,计算过程中内存不够时它会和磁盘进行数据交换,Spark核心概念:RDD,RDD创建操作 (creation operation) 集合创建,由内部集合生成,Spark中提供了parallelize和makeRDD两类函数来实现从集合生成RDD。var rdd=sc.makeRDD(1 to 10,3) 存储创建,从文件存储(文本文件,hdfs),数据库(hbase,mongodb),消息队列(kafka)等获得数据并转换成RDD,Spark核心概念:RDD,RDD转换操作(transfermation operation) 把一种RDD变成另一种新的RDD。如: map(func):返回一个新的分布式数据集,由每个原元素经过func函数转换后组成 filter(func):返回一个新的数据集,由经过func函数后返回值为true的原元素组成 flatMap(func):类似于map,但是每一个输入元素,会被映射为0到多个输出元素(因此,func函数的返回值是一个Seq,而不是单一元素),Spark核心概念:RDD,RDD控制操作(control operation) 在spark中持久化操作是一种重要的功能,可以将RDD存储在不同层次的存储介质中,以便后续的操作能够重复使用。如: cache() persist(),Spark核心概念:RDD,RDD行动操作(action operation) 行动操作是和转换操作相
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号