当前搜索:

[置顶] Spark 2.1.0 大数据平台源码分析:章节序列

Spark 2.1.0 大数据平台源码分析:章节序列...
阅读(1880) 评论(0)

大数据:Spark mlib(三) GradientDescent梯度下降算法之Spark实现

1. 什么是梯度下降?梯度下降法(英语:Gradient descent)是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度(或者是近似梯度)的反方向的规定步长距离点进行迭代搜索。先来看两个函数:1.  拟合函数:θ" role="presentation" style="display: inline; line-he...
阅读(1572) 评论(0)

大数据:Spark 算子(一)排序算子sortByKey来看大数据平台下如何做排序

1 前言在前面一系列博客中,特别在Shuffle博客系列中,曾今描述过在生成ShuffleWrite的文件的时候,对每个partition会先进行排序并spill到文件中,最后合并成ShuffleWrite的文件,也就是每个Partition里的内容已经进行了排序,在最后的action操作的时候需要对每个executor生成的shuffle文件相同的Partition进行合并,完成Action的操...
阅读(2115) 评论(0)

大数据:Spark mlib(二) Naive bayes朴素贝叶斯分类之多元朴素贝叶斯源码分析

1. 什么是朴素贝叶斯朴素贝叶斯是一种构建分类器,该分类器基于一个理论:所有朴素贝叶斯分类器都假定样本每个特征与其他特征都不相关2. 朴素贝叶斯概率模型概率模型分类器是一个条件概率模型:(独立的类别特征C有若干类别,条件依赖于若干特征变量F1,F2,...,Fn)      贝叶斯定理:  我们可以看到分母并不依赖于C,而且特征Fn的概率是给定的,分母可以认为是一个常数。这样分子就等价于联合分布模...
阅读(1293) 评论(0)

大数据:Spark mlib(一) KMeans聚类算法源码分析

1. 聚类1.1 什么是聚类?所谓聚类问题,就是给定一个元素集合D,其中每个元素具有n个可观察属性,使用算法将集合D划分成k个子集,要求每个子集内部的元素之间相异度尽可能低,而不同子集的元素相异度尽可能高,其中每个子集叫做一个簇。1.2 KMeans 聚类算法K-Means聚类算法主要分为如下几个步骤:从D中随机取k个元素,作为k个簇的各自的中心分别计算剩下的元素到k个簇中心的相异度,将这些元素分...
阅读(1738) 评论(0)

大数据:Spark Shuffle(三)Executor是如何fetch shuffle的数据文件

1. 前言在前面的博客中讨论了Executor, Driver之间如何汇报Executor生成的Shuffle的数据文件,以及Executor获取到Shuffle的数据文件的分布,那么Executor是如何获取到Shuffle的数据文件进行Action的算子的计算呢?在ResultTask中,Executor通过MapOutPutTracker向Driver获取了ShuffID的Shuffle数据...
阅读(2719) 评论(0)

大数据:Spark Shuffle(二)Executor、Driver之间Shuffle结果消息传递、追踪

1. 前言在博客里介绍了ShuffleWrite关于shuffleMapTask如何运行,输出Shuffle结果到文件Shuffle_shuffleId_mapId_reduceId.data文件中,每个executor需要向Driver汇报当前节点的Shuffle结果状态,Driver保存结果信息进行下个Task的调度。2. StatusUpdate消息当Executor运行完Task的时候需要...
阅读(2249) 评论(0)

大数据:Spark Shuffle(一)ShuffleWrite:Executor如何将Shuffle的结果进行归并写到数据文件中去

1. 前序关于Executor如何运行算子,请参考前面博文:大数据:Spark Core(四)用LogQuery的例子来说明Executor是如何运算RDD的算子,当Executor进行reduce运算的时候,生成运算结果的临时Shuffle,并保存在磁盘中,被最后的Action算子调用,而这个阶段就是在ShuffleMapTask里执行的。...
阅读(2649) 评论(1)

大数据:Spark Core(四)用LogQuery的例子来说明Executor是如何运算RDD的算子

1. 究竟是怎么运行的?很多的博客里大量的讲了什么是RDD, Dependency, Shuffle... 但是究竟那些Executor是怎么运行你提交的代码段的?下面是一个日志分析的例子,来自Spark的example def main(args: Array[String]) { val sparkConf = new SparkConf().setAppName("Log Quer...
阅读(2066) 评论(0)

大数据:Spark Core(三)Executor上是如何launch task

1. 启动任务在前面一篇博客中(http://blog.csdn.net/raintungli/article/details/70168241#t9)介绍了Driver是如何调动、启动任务的,Driver向Executor发送了LaunchTask的消息,Executor接收到了LaunchTask的消息后,进行了任务的启动,在CoarseGrainedExecutorBackend.scala...
阅读(2003) 评论(1)

大数据:Spark Core(二)Driver上的Task的生成、分配、调度

1. 什么是Task? 在前面的章节里描述过几个角色,Driver(Client),Master,Worker(Executor),Driver会提交Application到Master进行Worker上的Executor上的调度,显然这些都不是Task. Spark上的几个关系可以这样理解: Application: Application是Driver在构建SparkContent的上下文的时候创建的,就像申报员,现在要构建一个能完成任务的集群,需要申报的是这次需要多少个Executor(可以简单理解...
阅读(3557) 评论(0)

大数据:Spark Core (一) 什么是RDD的Transformation和Actions以及Dependency?

Spark的RDDRDD(Resilient Distributed Datasets),弹性分布式数据集,是对分布式数据集的一种抽象。RDD所具备5个主要特性:一组分区计算每一个数据分片的函数RDD上的一组依赖对于Key Value 对的RDD,会有一个Partitioner, 这是数据的分割器一组Preferred Location信息上图是一个简单的CoGroupedRDD满足了RDD 5个...
阅读(2134) 评论(0)

大数据:Spark Standalone 集群调度(三)多Master节点的可用性

1. Master 单节点可用性 Master节点在Spark中所承载的作用是分配Application到Worker节点,维护Worker节点,Driver,Application的状态。 在Spark中,Master本身也提供了基于硬盘的单节点的可用性,也就是可以直接通过重启Master,Master通过读取硬盘里保存的状态,进行单节点的恢复。...
阅读(5010) 评论(0)

大数据:Spark Standalone 集群调度(二)如何创建、分配Executors的资源

Standalone 的整体架构 在Spark集群中的3个角色Client, Master, Worker, 下面的图是Client Submit 一个任务的流程图: 完整的流程:Driver 提交任务给Master, 由Master节点根据任务的参数对进行Worker的Executor的分配,Worker节点获取到具体的分配信息启动executor 的子进程 Master分...
阅读(2264) 评论(5)

大数据:Spark Storage(二) 集群下的broadcast

Spark BroadCast Broadcast 简单来说就是将数据从一个节点复制到其他各个节点,常见用于数据复制到节点本地用于计算,在前面一章中讨论过Storage模块中BlockManager,Block既可以保存在内存中,也可以保存在磁盘中,当Executor节点本地没有数据,通过Driver去获取数据 Spark的官方描述: A broadcast variable. Broadc...
阅读(2633) 评论(0)

大数据:Spark Storage(一) 集群下的区块管理

Storage模块 在Spark中提及最多的是RDD,而RDD所交互的数据是通过Storage来实现和管理 Storage模块整体架构 1. 存储层 在Spark里,单机storage的管理是通过block来管理的,用每个块的存储可以在内存里或者在磁盘中,在BlockManager里既可以管理内存的存储,同时也管理硬盘的存储,存储的标识是通过块的ID来区分的。...
阅读(4054) 评论(1)

大数据:Spark Standalone 集群调度(一)从远程调试开始说application创建

远程debug,特别是在集群方式时候,会很方便了解代码的运行方式,这也是码农比较喜欢的方式 虽然scala的语法和java不一样,但是scala是运行在JVM虚拟机上的,也就是scala最后编译成字节码运行在JVM上,那么远程调试方式就是JVM调试方式 在服务器端: -Xdebug -Xrunjdwp:server=y,transport=dt_socket,address=7001...
阅读(3233) 评论(0)
    个人资料
    • 访问:462289次
    • 积分:5159
    • 等级:
    • 排名:第6077名
    • 原创:97篇
    • 转载:3篇
    • 译文:0篇
    • 评论:72条
    最新评论