- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
spark技术探秘 技术部 Spark是什么 Spark是一个基于内存计算的开源的集群(分布式)计算系统 Spark非常小巧玲珑,由加州伯克利大学AMP实验室的Matei为主的小团队所开发。使用的语言是Scala,项目的core部分的代码只有63个Scala文件,非常短小精悍。 由于是基于内存计算,效率要高于拥有Hadoop,Job中间输出和结果可以保存在内存中,从而不再需要读写HDFS,节省了磁盘IO耗时,号称性能比Hadoop快100倍。 Spark特性 容错性:在分布式数据集计算时通过checkpoint来实现容错,而checkpoint有两种方式,一个是checkpoint data,一个是logging the updates。用户可以控制采用哪种方式来实现容错。 通用性:Spark通过提供丰富的Scala, Java,Python API及交互式Shell来提高可用性。 Spark架构 生态体系 Shark(SQL) shark与hive对比 Bagel(Pregel on spark): Bagel是基于Spark的轻量级的Pregel(Pregel是Google鼎鼎有名的图计算框架)的实现。 Shark ( Hive on Spark) Shark是在Spark的框架基础上提供和Hive一样的H iveQL命令接口,Shark可以自动在内存中缓存特定的RDD,实现数据重用,进而加快特定数据集的检索。 Shark通过UDF实现特定的数据分析算法,使得SQL数据查询和运算分析能结合在一起,最大化RDD的重复使用 Sparkstreaming 流处理系统,实时计算系统 构建在Spark上处理Stream数据的框架,基本的原理是将Stream数据分成小的时间片断(几秒),以类似batch批量处理的方式来处理这小部分数据。Spark Streaming构建在Spark上,一方面是因为Spark的低延迟执行引擎(100ms+)可以用于实时计算,另一方面相比基于Record的其它处理框架(如Storm),RDD数据集更容易做高效的容错处理。此外小批量处理的方式使得它可以同时兼容批量和实时数据处理的逻辑和算法。方便了一些需要历史数据和实时数据联合分析的特定应用场合。 MLlib(machine learning library) 机器学习库:提供高质量的算法,比MapReduce快100倍 高性能: Spark擅长迭代计算,这可以使mllib运行的更快,另外,MLlib也包含高效的算法,利用spark的迭代优势,从而产生百倍效果 MLlib(machine learning library) 易部署:如果你有一个hadoop2集群,你可以在没有任何预装的情况下运行spark和MLlib。另外,spark也可以运行standalone或EC2或Mesos。可以读取hdfs、hbase或任何一个hadoop的数据源。 RDD RDD(Resilient Distributed Dataset,弹性分布式数据集) RDD是Spark操纵数据的一个高度抽象,即Spark所操作的数据集都是包装成RDD来进行操作的,例如Spark可以兼容处理Hadoop的HDFS数据文件,那么这个HDFS数据文件就是包装成Spark认识的RDD来完成数据抽取和处理的 RDD是Spark的一个核心抽象,Spark的数据操作都是基于RDD来完成。 Map Reduce MR 是Spark可以支撑的运算模式,比传统的Hadoop MR的性能更好,并且操作集更加丰富。Spark的MR计算引擎的架构图 FP 函数式编程:functional programming GraphX(graph) 图计算:alpha版本,已并入spark,暂时不做了解 Spark运行模式 Standalone模式 即独立模式,自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统。从一定程度上说,该模式是其他两种的基础。 各个节点上的资源被抽象成粗粒度的slot,有多少slot就能同时运行多少task。 不同的是,MapReduce将slot分为map slot和reduce slot,它们分别只能供Map Task和Reduce Task使用,而不能共享,这是MapReduce资源利率低效的原因之一,而Spark则更优化一些,它不区分slot类型,只有一种slot,可以供各种类型的Task使用,这种方式可以提高资源利用率,但是不够灵活,不能为不同类型的Task定制slot资源。总之,这两种方式各有优缺点。 Spark On Mesos模式 Spark On Mesos模式 这是很多公司采用的模式,官方推荐这种模式(
文档评论(0)