所有的系统都会用spark做么

 我来答
匿名用户
2017-03-07
展开全部
王家林每日Spark语录0001 腾讯的Spark集群已经达到8000台的规模,是目前已知最大的Spark集群,每天运行超过1万各种作业。 王家林每日Spark语录0002 Spark基于RDD近乎完美的实现了分布式内存的抽象,且能够基于位置感知性调度、自动容错、负载均衡和高度的可扩展性,Spark中允许用户在执行多个查询时显式的将工作集缓存起来以供后续查询重用,这极大的提高了查询的速度。 王家林每日Spark语录0003 Spark一体化多元化的解决方案极大的减少了开发和维护的人力成本和部署平台的物力成本,并在性能方面有极大的优势,特别适合于迭代计算,例如机器学习和和图计算;同时Spark对Scala和Python交互式shell的支持也极大的方便了通过shell直接来使用Spark集群来验证解决问题的方法,这对于原型开发至关重要,对数据分析人员有着无法拒绝的吸引力! 王家林每日Spark语录0004 Spark中RDD采用高度受限的分布式共享内存,且新的RDD的产生只能够通过其它RDD上的批量操作来创建,依赖于以RDD的Lineage为核心的容错处理,在迭代计算方面比Hadoop快20多倍,同时还可以在5~7秒内交互式的查询TB级别的数据集。 王家林每日Spark语录0005 Spark RDD是被分区的,对于RDD来说,每个分区都会被一个计算任务处理,并决定并行计算的粒度;RD的每次转换操作都会生成新的RDD,在生成RDD时候,一般可以指定分区的数量,如果不指定分区数量,当RDD从集合创建时候,则默认为该程序所分配到的资源的CPU核数,如果是从HDFS文件创建,默认为文件的Block数。 王家林每日Spark语录0006 基于RDD的整个计算过程都是发生在Worker中的Executor中的。RDD支持三种类型的操作:Transformation、Action以及Persist和CheckPoint为代表的控制类型的操作,RDD一般会从外部数据源读取数据,经过多次RDD的Transformation(中间为了容错和提高效率,有可能使用Persist和CheckPoint),最终通过Action类型的操作一般会把结果写回外部存储系统。 王家林每日Spark语录0007 RDD的所有Transformation操作都是Lazy级别的,实际上这些Transformation级别操作的RDD在发生Action操作之前只是仅仅被记录会作用在基础数据集上而已,只有当Driver需要返回结果的时候,这些Transformation类型的RDD才会真正作用数据集,基于这样设计的调度模式和运行模式让Spark更加有效率的运行。 王家林每日大数据语录Spark篇0008(2015.10.31于北京) 王家林每日大数据语录Spark篇0008(2015.10.31于北京):持久化(包含Memory、Disk、Tachyon等类型)是Spark构建迭代算法和快速交互式查询的关键,当通过persist对一个RDD持久化后,每一个节点都将把计算的分片结果保存在内存或者磁盘或者Tachyon上,并且对此数据集或者衍生出来的数据集进行的其它Action级别的炒作都可以重用当前RDD的计算结果,这是的后续的的操作通常会快10到100倍。 王家林每日大数据语录Spark篇0009(2015.11.1于北京) Spark的CheckPoint是在计算完成之后重新建立一个Job来进行计算的,用户可以通过调用RDD.checkpoint()来指定RDD需要checkpoint的机制;为了避免重复计算,建议先对RDD进行persist操作,这样可以保证checkpoint更加快速的完成。 王家林每日大数据语录Spark篇0010(2015.11.2于深圳) SparkContext是用户程序和Spark交互的接口,它会负责连接到Spark集群,并且根据系统默认配置和用户设置来申请计算资源,完成RDD的创建等工作。 王家林每日大数据语录Spark篇0011(2015.11.2于深圳) RDD的saveAsTextFile方法会首先生成一个MapPartitionsRDD,该RDD通过雕工PairRDDFunctions的saveAsHadoopDataset方法向HDFS等输出RDD数据的内容,并在在最后调用SparkContext的runJob来真正的向Spark集群提交计算任务。 王家林每日大数据语录Spark篇0012(2015.11.2于深圳) 可以从两个方面来理解RDD之间的依赖关系,一方面是RDD的parent RDD(s)是什么,另一方面是依赖于parent RDD(s)哪些Partions(s); 根据依赖于parent RDD(s)哪些Partions(s)的不同情况,Spark讲Dependency分为宽依赖和窄依赖两种。 王家林每日大数据语录Spark篇0013(2015.11.3于广州) RDD有narrow dependency和wide dependency两种不同的类型的依赖,其中的narrow dependency指的是每一个parent RDD 的Partition最多被child RDD的一个Partition所使用,而wide dependency指的是多个child RDDs的Partition会依赖于同一个parent RDD的Partition。 王家林每日大数据语录Spark篇0014(2015.11.4于南宁) 对于Spark中的join操作,如果每个partition仅仅和特定的partition进行join那么就是窄依赖;对于需要parent RDD所有partition进行join的操作,即需要shuffle,此时就是宽依赖。 王家林每日大数据语录Spark篇0015(2015.11.5于南宁) Spark中宽依赖指的是生成的RDD的每一个partition都依赖于父 RDD(s) 所有partition,宽依赖典型的操作有groupByKey, sortByKey等,宽依赖意味着shuffle操作,这是Spark划分stage的边界的依据,Spark中宽依赖支持两种Shuffle Manager,即HashShuffleManager和SortShuffleManager,前者是基于Hash的Shuffle机制,后者是基于排序的Shuffle机制。 王家林每日大数据语录Spark篇0016(2015.11.6于南宁) RDD在创建子RDD的时候,会通过Dependency来定义他们之间的关系,通过Dependency,子RDD可以获得parent RDD(s)和parent RDD(s)的Partition(s). 王家林每日大数据语录Spark篇0017(2015.11.6于南宁) 在Spark的Stage内部的每个Partition都会被分配一个计算任务Task,这些Task是并行执行的; Stage之间的依赖关系变成了一个大粒度的DAG,Stage只有在它没有parent Stage或者parent Stage都已经执行完成后才可以执行,也就是说DAG中的Stage是从前往后顺序执行的。 王家林每日大数据语录Spark篇0018(2015.11.7于南宁) 在Spark的reduceByKey操作时会触发Shuffle的过程,在Shuffle之前,会有本地的聚合过程产生MapPartitionsRDD,接着具体Shuffle会产生ShuffledRDD,之后做全局的聚合生成结果MapPartitionsRDD. 王家林每日大数据语录Spark篇0019(2015.11.10于重庆) park中的Task分为ShuffleMapTask和ResultTask两种类型,在Spark中DAG的最后一个Stage内部的任务都是ResultTask,其余所有的Stage(s)的内部都是ShuffleMapTask,生成的Task会被Driver发送到已经启动的Executor中执行具体的计算任务,执行的实现是在TaskRunner.run方法中完成的。 王家林每日大数据语录Spark篇0020(2015.11.11于重庆) Spark中生成的不同的RDD中有的喝用户的逻辑显式的对于,例如map操作会生成MapPartitionsRDD,而又的RDD则是Spark框架帮助我们隐式生成的,例如reduceByKey操作时候的ShuffledRDD. 王家林每日大数据语录Spark篇0021(2015.11.18于珠海) Spark RDD实现基于Lineage的容错机制,基于RDD的各项transformation构成了compute chain,在部分计算结果丢失的时候可以根据Lineage重新计算恢复。在窄依赖中,在子RDD的分区丢失要重算父RDD分区时,父RDD相应分区的所有数据都是子RDD分区的数据,并不存在冗余计算;在宽依赖情况下,丢失一个子RDD分区重算的每个父RDD的每个分区的所有数据并不是都给丢失的子RDD分区用的,会有一部分数据相当于对应的是未丢失的子RDD分区中需要的数据,这样就会产生冗余计算开销和巨大的性能浪费。 王家林每日大数据语录Spark篇0022(2015.11.18于珠海) Spark Checkpoint通过将RDD写入Disk做检查点,是Spark lineage容错的辅助,lineage过长会造成容错成本过高,这时候在中间阶段做检查点容错,如果之后有节点出现问题而丢失分区,从做检查点的RDD开始重做Lineage,就会减少开销。Checkpoint主要适用于以下两种情况:1. DAG中的Lineage过长,如果重算时会开销太大,例如在PageRank、ALS等;2. 尤其适合于在宽依赖上做Checkpoint,这个时候就可以避免应为Lineage重新计算而带来的冗余计算。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式