资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,*,单击此处编辑母版文本样式,第二级,单击此处编辑母版标题样式,单击此处编辑母版标题样式,*,单击此处编辑母版文本样式,第二级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,单击此处编辑母版文本样式,第二级,单击此处编辑母版标题样式,云软件组 陈修恒,SPARK 大数据处理引擎,Spark,一、,Apache,Spark,项目,三、,Spark,技术架构,四、,Spark,核心技术,五、部署方式,六、运行流程,七、配置要求,Hadoop生态系统,Ambari,(安装、部署、配置和管理工具),zookeeper,分布式协作服务,HBase,(实时分布式数据库),Hive,(数据仓库),Pig,(数据流处理),Mahout,(数据挖掘库),MapReduce,(分布式计算框架),HDFS,(分布式文件系统),Flume,(,日志收集工具,),Sqoop,(数据库,ETL,工具,),Apache Hadoop 项目,Common,HDFS,一个部署在廉价的机器上、具有高度容错性的文件系统,YARN,资源调度引擎,MapReduce,基于,YARN,调度引擎,的大数据并行处理系统,A YARN-based system for parallel processing of large data sets.,Apach,Spark 项目,Spark是一个快速通用的大规模数据处理框架。具有Hadoop的批处理能力,而且性能更佳。可以用于流处理、Sql统计、机器学习和图计算。,Apach,Spark 项目,Apache Spark,TM,is a fast and general engine for large-scale data processing,Apache Spark,TM,是一个快速、通用的大数据处理引擎,Apache Spark,TM,是,Hadoop MapReduce,的改进版,Spark,VS,Hadoop MapReduce,Spark,Hadoop MapRecuce,架构,Spark+RDD,RDD,:由,Spark,内部,维护的、基于内存的分布式数据集,MapReduce+HDFS,HDFS,:分布式文件系统,工作量,面向函数编程,需要提供,Map/Reduce,函数。,面向对象编程,需要提供,Map/Reduce,类,。,数据处理,RDD,保存,Map,操作的结果,支持多次,Map,迭代。,Map,计算懒加载,用到时才发生计算,Map,、,Reduce,成对出现。,Reduce,结果落地后才能被下次,Map,使用,故障处理,多主多备,集成,HDFS,不会有数据丢失,其他情况会有丢失情况;,standalone,启动,模式,Driver,节点不能自动恢复,任务需要重新提交;,依赖,HDFS,能快速恢复计算节点,Spark 技术架构,Kafka/HDFS/TCP/Flume/ZeroMQ/MQTT/Twiter,Spark,RDD,MapReduce,函数式编程接口,Amazon EC2/Mesos/YARN,由Scala编写,支持函数式编程。,支持多种数据源接入。,RDD-弹性分布式数据集,Spark将数据分布到多台机器的内存中进行并行计算。,Spark 不具备集群管理能力,需要别的软件进行管理。,支持流式运算,可以从kafka等数据源不断的获取数据,并按时间切片处理。,Spark 核心技术,MapReduce,编程模型,Spark RDD,Spark,运行流程,Spark Transformation&Action,Spark Shuffle,Spark Streaming,Spark SQL,Spark Mllib,Spark GraphX,MapReduce 编程模型,任何运算都可以分解成Map(映射)和Reduce(归约)两类操作,MapReduce 编程模型,词频统计,to be or not to be,to:2,be:2,or:1,not:1,统计算法,to be or not to be,MapReduce 编程模型,示例:词频统计,to,be,or,not,to,be,数据切割,构造运算单元,发生计算,Reduce,Map,MapReduce,代码预览,to,be,or,not,to,be,to be or not to be,输出结果,MapReduce 编程模型,海量数据,结算结果,数据划分,中 间 结 果,map,map,map,map,(k1,val),(k2,val),(k2,val),(k1,val),(k2,val),(k3,val),(k1,val),(k2,val),(k3,val),aggregation&shuffle,reduce,reduce,reduce,(k1,values),(k2,values),(k3,values),(K1,val),(K3,val),(K2,val),MapReduce 编程模型,任何运算都可以分解成Map(映射)和Reduce(归约)两类操作,MapReduce 编程模型,任何运算都可以分解成Map(映射)和Reduce(归约)两类操作,MapReduce 系统,数据划分和计算任务调度,出错检测和恢复,数据,/,代码互定位,系统优化,MapReduce的实现,Google,MapReduce,Hadoop,MapReduce,Spark,Spark RDD,RDD(Resilient Distributed Dataset,弹性分布式数据集),他具高度的容错性,允许开发人员在大型集群上执行基于内存的计算。,RDD是一个只读的分区存储集合。只能基于稳定物理存储中的数据集或在已有的RDD上执行转换命令(Transformation)来创建。,RDD不需要物化。在创建 RDD 时Spark会维护转换算法。需要使用时,可以从物理存储的数据计算出最终的 RDD。,Spark操纵数据的一个高度抽象,是数据抽取和处理的基础。,worker,worker,worker,Spark,运行流程,RDD(分布式数据集),第,20,/40,页,master,注册,任务,注册,任务,client,submit,driver,executor,executor,执行 main,作业解析,生成Stage,调度Task,作业执行者,接收Driver的Launch Task命令,可执行一个或多个Task,作业执行者,接收Driver的Launch Task命令,可执行多个Task,launch driver,launch executor,launch executor,worker,worker,worker,Spark,运行流程,RDD(分布式数据集),第,21,/40,页,master,注册,任务,注册,任务,client,submit,driver,executor,executor,执行 main,作业解析,生成Stage,调度Task,作业执行者,接收Driver的Launch Task命令,可执行一个或多个Task,作业执行者,接收Driver的Launch Task命令,可执行多个Task,launch driver,launch executor,launch executor,Spark Transformation&Action,Transformations,Actions,将一个已经存在的RDD中转换成一个新的RDD,所有的转换操作都是lazy执行的。,一般用于对RDD中的元素进行实际的计算,然后返回相应的值。,Spark Shuffle,1、每一个Mapper会根据Reducer的数量创建出相应的bucket,bucket的数量是MR,其中M是Map的个数,R是Reduce的个数。,2、Mapper产生的结果会根据设置的partition算法填充到每个bucket中去。这里的partition算法是可以自定义的,当然默认的算法是根据key哈希到不同的bucket中去。,3、当Reducer启动时,它会根据自己task的id和所依赖的Mapper的id从远端或是本地的block manager中取得相应的bucket作为Reducer的输入进行处理。,Spark Streaming,持续的从输入源读取数据,根据数据推送的时间,按时间段切片,把切片包装成,RDD,,执行,Map+Reduce,计算,通过,RDD.collect(),函数收集计算结果,Spark Streaming,设置批量处理频率:,1,s 一次,打开,kafka,输入,Spark Streaming,JavaStreamingContext jssc;,jssc=new JavaStreamingContext(conf,Durations.milliseconds(,10,00);,Spark Streaming,JavaStreamingContext jssc;,jssc=new JavaStreamingContext(conf,Durations.milliseconds(,3,00);,Spark Streaming,JavaStreamingContext jssc;,jssc=new JavaStreamingContext(conf,Durations.milliseconds(,3,);,Spark Streaming,不适合即时计算,Spark SQL,处理结构化数据,把结构数据抽象成,DataFrame,工作方式:分布式,SQL,查询引擎,Spark Mllib,机器学习库,目标:简化机器学习过程,提供可扩展性,提供基本的机器学习算法和功能,包括:,分类、,回归、,聚类、,协同过滤、,降维。,提供底层优化,提供管道化,API,Spark GraphX,并行的图计算,三、部署方式,S,tandalone模式,独立模式,自己负责资源调度。单点故障借助 zookeeper实现。,Spark On Mesos,Spark运行在Mesos上,支持 CPU 非独占,资源由Mesos负责管理。,Spark On Yarn,资源由Yarn负责管理,最有前景的部署模式,支持动态添加资源。但是限于YARN自身发展,目前仅支持粗粒度模式。,Spark On cloud,如 AWS的EC2,使用这种模式,访问Amazon的S3很方便。,standalone,模式,(Stondalone 模式)启动多个Master并注册到 Zookeeper 集群中,并保存状态。其中一个会被选为Leader,其余的保持Standby模式,当Leader故障,则选择另一个 Master 为Leader,并从Zookeeper中读取状态恢复。Master节点可动态添加或删除,四、配置要求,项目,要求,磁盘,官方推荐 4-8块普通磁盘,不需要RAID。,内存,官方推荐 8GB即可。,Spark建议需要提供至少75%的内存空间分配给Spark,至于其余的内存空间,则分配给操作系统与buffer cache。,网络,建议使用,10G,及以上的网络带宽,CPU,Spark,可以支持一台机器扩展至数十个,CPU core,,它实现的是线程之间最小共享。,若内存足够大,则制约运算性能的就是网络带宽与,CPU,数。,五、关键术语,SparkContext,Stage&,Job,Driver&Executor,RDD,Shuffle,StorageLevel,Broadcast,Accumulator,Optional,Q,&,A,提问答疑,
展开阅读全文