网站大量收购独家精品文档,联系QQ:2885784924

BingoInsight基于Spark高效通用的大规模数据处理引擎剖析2.doc

BingoInsight基于Spark高效通用的大规模数据处理引擎剖析2.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
BingoInsight基于Spark高效通用的大规模数据处理引擎剖析2

BingoInsight基于Spark高效通用的大规模数据处理引擎 小编的话 “品高云公开课”系列文章意在分享技术牛人的知识干货,和大家一起交流学习云知识,每期主题都不一样哟!期待各位读者在文后发表留言,来一场技术上的交流和思想上的碰撞!2016年4月22日本期品高云公开课由张启明带来“BingoInsight基于Spark高效通用的大规模数据处理引擎”的分享。 分享嘉宾 朱锦勇品高云旗下企业大数据平台BingoInsight开发团队成员。主要工作负责写Java代码。 分享正文 Hi,大家好,我是BingoInsight的研发工程师张启明,非常荣幸和大家一起学习和交流。今天分享主要的内容包括: 1、Spark是什么,Spark的简介。 2、如何利用Spark构建BingoInsight的数据处理能力。 Spark简介这块为了控制时间和范围,暂时只涉及RDD方面及其Shuffle简介,调度实现先略过,大家有什么疑问的话,随时可在交流过程一起讨论哦 Spark是什么呢? 从最开始我们在单台机子做数据分析,为了加快分析的速度,通常是将单个任务拆分为多任务,多线程利用cpu多核并行多跑任务,以达到并行计算加快分析的速度。但是单机处理能力毕竟太小,而且单机计算资源纵向扩展费用昂贵且有限制,在容错性方面也不太好。后来MapReduce思想开始流传,在大量普通机子集群上面做分布式的任务分解与结果汇总。MR思想衍生出很多的实现,如Apache下Hadoop的MapReduce。 MapReduce广泛应用,慢慢地其缺点也逐渐暴露,如: 1、map和reduce两个操作难以表达复杂作业,难以编程,衍生出hive/pig等之类解决框架 2、复杂job难以控制,高延时迭代,中间结果写HDFS,衍生出Tez之类的DAG调度框架 3、从v1版的计算模型和执行调度资源框架混合,到v2的计算模型和资源管理分离衍生的yarn Spark的出现实际弥补了MR的不足,最初的设计目标是为了扩展MapReduce模型灵活支持迭代算法和交互操作 ,同时增强易编程性。 实现方面主要借鉴了微软的DryadLINQ ,但是其抽象模型RDD(弹性分布式数据集-In-Memory)具有更丰富的表达能力而且具备MapReduce模型优秀特性如Fault tolerance, data locality, scalability 。 Spark整体看起来是怎么样呢? spark主要由Master、Worker、Executor、Driver几个组件构成,常见中心化的master/slave结构,主要用于接收Driver端(spark的client,可运行在集群内外任意机器上),Executor主要用于执行计算任务。 那么Spark的抽象——RDD是什么?如果类比MapReduce的话,RDD就是Spark的编程模型。我们快速地来看一下RDD的特性及其操作。 RDD是不可变、每个分区可并行处理的弹性分布式数据集,主要特性有: 1、partitions:分区集合 ; 2、partition computing:分区计算函数 ; 3、dependencies:依赖,依赖是与MR最大不同,其定义为RDD之间lineage(血缘链关系),是job/stage划分依据; 4、partitioner : 分区函数,key-values结构的RDD才有(hash-partitioned); 5、preferred locations:分区的最优计算位置,例如HDFS的block,可选对应函数 。 RDD的产生主要有两种方式: 1、从已经存在collections中并行化; 2、从外部数据源加载,如HDFS etc. RDD的操作主要有两种: 1、Transformations:转换,产生新的RDD,lazy方式,如map/filter/sample/ etc. 2、Actions:提交转换操作,将计算结果返回Driver端,如reduce/collect/ etc. 另外RDD 的Persisting/Caching是迭代算法和快速迭代的关键 ,可以选择性将数据缓存在内存 那么对于分布式计算中,常见异常失败(宕机等),RDD如何做容错呢 ?有两个办法: 1、Lineage,利用RDD的依赖关系链重新进行计算,某个过程或者某个计算分片数据丢失后,可以从最原始数据重新执行一系列的transform 操作,也就是计算链的重演。 2、Checkpoint,保存点, 避免compute chain过长时引起耗时使用 分布式计算框架最核心的问题Shuffle,RDD是如何解决呢,Spark如何实现呢,简单介绍一下: 以前MapReduce模型Shuffle 过程是怎么样的? 一般地,Map端的输出数据输入至R

文档评论(0)

mmhgfdh + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档