spark
王里扬洛夫
人的命运啊,主要是靠个人的奋斗,同时也要考虑历史的行程啊!
展开
-
Spark(1)-初识Pyspark
一、前言 (注:以下操作都是基于python语言,根据官网guide总结。)1、RDDs spark中最重要的抽象是RDDs(Resilient Distributed Datasets弹性分布式数据集),可以简单的把RDDs理解成一个提供了许多操作接口的分布式数据集合,和一般数据集不同的是,其实际数据分布存储于一批机器中(内存或磁盘中)。RDDs可以通过hadoop文件系统或者驱动程序中已经存原创 2017-05-11 20:24:57 · 1341 阅读 · 0 评论 -
spark源码之Job执行(1)stage划分与提交
以reduce操作为例,看看作业执行的流程def reduce(f: (T, T) => T): T = withScope { val cleanF = sc.clean(f) val reducePartition: Iterator[T] => Option[T] = iter => { if (iter.hasNext) { Some(iter.r原创 2017-06-12 21:59:56 · 1176 阅读 · 0 评论 -
spark源码之sparkEnv(2)blockManager
1 sparkEnv中初始化blockManager首先,根据是在驱动还是在executor上,选择端口。 val blockManagerPort = if (isDriver) { conf.get(DRIVER_BLOCK_MANAGER_PORT) } else { conf.get(BLOCK_MANAGER_PORT) }有了端口,就可以建立基原创 2017-06-14 14:35:02 · 507 阅读 · 0 评论 -
spark源码之sparkEnv(1)RPC通信
1 SparkConf构造函数Spark Driver用于提交用户应用程序,实际可以看作Spark的客户端。启动./bin/spark-submit时,会产生sparkContext,配置参数则是 SparkConf。sparkContext有多个构造函数使用系统默认参数:def this() = this(new SparkConf())手动配置参数: def this(master: Str原创 2017-06-11 20:18:58 · 565 阅读 · 0 评论 -
spark源码之RDD(1)partition、dependence、persist
An Architecture for Fast and General Data Processing on Large Clusters1 编程模型1.1 RDDResilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster ComputingRDD就是只读的数据分区集合。RDD上的有两种Ope原创 2017-06-08 20:29:17 · 1212 阅读 · 0 评论 -
spark源码之RDD(3)checkpoint
一 checkpoint写流程 1 RDD中的checkpoint方法首先调用方法data.checkpoint()该方法会将RDD存入checkpoint directory中,并且将指向他的父RDD的依赖都删除掉。该方法需要在action之前调用 def checkpoint(): Unit = RDDCheckpointData.synchronized { // NOTE: we原创 2017-06-10 15:51:09 · 522 阅读 · 0 评论 -
spark源码之RDD(2)transformation和action
map def map[U: ClassTag](f: T => U): RDD[U] = withScope { val cleanF = sc.clean(f) new MapPartitionsRDD[U, T](this, (context, pid, iter) => iter.map(cleanF)) }1、clean 最终调用ClosureCleaner.cle原创 2017-06-09 19:54:51 · 454 阅读 · 0 评论 -
spark源码总结
一、spark组件1、Application用户编写的应用程序代码,包含启动一个Driver,以及在executors上运行的业务逻辑代码。2、Driverdriver负责高层次的任务管理,包括该application中包含的所有的资源和任务运行状态。3、Executorexecutor就是一个进程,负责启动task线程运行task4、Tasktask是线程级的,与partitions对应,一个ta原创 2017-06-29 17:14:28 · 580 阅读 · 0 评论 -
spark源码之Job执行(2)任务调度taskscheduler
一、submitStage划分stages后提交taskif (tasks.size > 0) {//如果存在tasks,则利用taskScheduler.submitTasks()提交task,否则标记stage已完成" ... taskScheduler.submitTasks(new TaskSet( tasks.toArray, stage.id, s原创 2017-06-28 22:33:11 · 929 阅读 · 0 评论 -
机器学习算法之K-means-spark
1 聚类简单回顾一下:首先,随机在点群中选取K个点,作为划分聚落的种子点;然后,求点群中所有的点到这K个点的距离;接下来,将离种子点近的点都移动到种子点附近;最后,不断重复第二和第三步,直到没有点需要移动了。以上只是一个概念的解释,我想这种问题还是必须看看公式才能清楚理解:1、随机选取K个种子点,设为μ1......μk\mu_1......\mu_k;2、对点群中的每一个点计算公式:argminj原创 2017-06-16 11:02:45 · 1421 阅读 · 0 评论 -
spark性能优化
熟悉spark内核之后,深刻体会到了spark开发中存在着大量细节左右着计算性能。趁着刚看过大概的流程,先基于目前的感受和相关资料,总结一下可能存在优化空间的地方。spark优化其实就是将不必要的开销能省就省。创建RDD是昂贵的,从磁盘读取RDD也是昂贵的,需要大量的IO开销,shuffle是与基于内存相违背的,涉及IO、网络通信等昂贵的操作。。。都是能避免就避免。有时候会因为极个别的task运行时原创 2017-07-24 14:19:49 · 715 阅读 · 0 评论