Spark 分布式内存计算模型
Michael_Shentu
感兴趣方向:分布式计算与存储,广告计算学,分布式数据挖掘与机器学习,Hadoop,Spark,HBase
展开
-
Spark 的初步尝试
从去年毕业后,原创 2013-12-23 14:44:12 · 1385 阅读 · 0 评论 -
spark rdd 源码解析
RDD是个抽象类,定义了诸如map()、reduce()等方法,但实际上继承RDD的派生类一般只要实现两个方法:def getPartitions: Array[Partition]def compute(thePart: Partition, context: TaskContext): NextIterator[T]getPartitions()用来告知怎么将i转载 2017-01-31 23:21:10 · 631 阅读 · 0 评论 -
Spark MLlib 机器学习指南
基于Spark 1.6.1 版本:机器学习库(MLlib)指南MLlib是Spark的机器学习(ML)库。旨在简化机器学习的工程实践工作,并方便扩展到更大规模。MLlib由一些通用的学习算法和工具组成,包括分类、回归、聚类、协同过滤、降维等,同时还包括底层的优化原语和高层的管道API。MLllib目前分为两个代码包:spark.mllib 包含基于RDD的原始转载 2017-03-02 15:10:05 · 965 阅读 · 0 评论 -
spark-submit的参数名称解析
执行时需要传入的参数说明Usage: spark-submit [options] [app options]参数名称含义--master MASTER_URL可以是spark://host:port, mesos://host:port, yarn, yarn-cluster,yarn-client, local原创 2017-01-23 23:37:51 · 4612 阅读 · 0 评论 -
Spark 用户日志输出解析
以java版的wordcount代码为例,看不同阶段的用户日志会以什么形式输出public final class JavaWordCount { private static final Pattern SPACE = Pattern.compile(" "); public static void main(String[] args) throws Exc原创 2017-01-23 23:35:50 · 5578 阅读 · 0 评论 -
MLlib中决策树算法的实现原理解析
决策树作为一种分类回归算法,在处理非线性、特征值缺少的数据方面有很多的优势,能够处理不相干的特征,并且对分类的结果通过树的方式有比较清晰的结构解释,但是容易过拟合,针对这个问题,可以采取对树进行剪枝的方式,还有一些融合集成的解决方案,比如随机森林RandomForest、GBDT (Gradient Boost Decision Tree)等,对于随机森林、GBDT在后面的章节进行介绍转载 2017-02-12 21:23:30 · 1461 阅读 · 0 评论 -
spark随机森林源码分析三
二已经很长了,告一段路,从三开始真正构建决策森林,首先创建缓存节点id的RDD,让所有点属于跟节点 val nodeIdCache = if (strategy.useNodeIdCache) { Some(NodeIdCache.init( data = baggedInput, numTrees = numTrees,转载 2017-03-01 14:10:07 · 1070 阅读 · 0 评论 -
spark on yarn 的运行模式
Spark on Yarn的两种运行模式实战:此时不需要启动Spark集群,只需要启动Yarn即可,Yarn的ResourceManager就相对于Spark Standalone模式下的Master!(我们启动spark集群是要用到standalone,现在有yarn了,就不用spark集群了) 1、Spark on Yarn的两种运行模式:唯一的决定因素是当前Applicati原创 2017-01-20 13:35:57 · 4500 阅读 · 0 评论 -
mllib下决策树——连续特征与离散特征的split与bin的确定
决策树算法本身可以处理连续特征与离散特征,主要是因为在节点进行split分裂的时候,需要对连续特征与离散特征进行基于信息增益或者基尼系数等规则的切分,因此结合spark中mllib中决策树算法对于这两类特征的处理,在多分类与二分类或者回归的场景下,连续特征,离散特征如何来确定split与bin数量,从而保证后面进行最优split点确定。类别特征(离散特征):离散特征分为原创 2017-02-28 17:02:31 · 5062 阅读 · 2 评论 -
HadoopRDD 的生成过程解析
Spark经常需要从hdfs读取文件生成RDD,然后进行计算分析。这种从hdfs读取文件生成的RDD就是HadoopRDD。那么HadoopRDD的分区是怎么计算出来的?如果从hdfs读取的文件非常大,如何高效的从hdfs加载文件生成HadoopRDD呢?本篇文章探讨这两个问题。 SparkContext.objectFile方法经常用于从hdfs加载文件,从加载hdfs文件到生成H转载 2017-01-31 23:44:09 · 2356 阅读 · 0 评论 -
Spark通过mapPartitions方式加载Json文件,提高文件加载速度
这几天遇到了需要从hdfs加载json字符串,然后转化成json对象的场景。刚开始的实现方式见如下代码:[java] view plain copy val loginLogRDD = sc.objectFile[String](loginFile, loadLoginFilePartitionNum) .filter(jso转载 2017-01-31 23:45:37 · 644 阅读 · 0 评论 -
spark ML 中 VectorIndexer, StringIndexer等用法
VectorIndexer主要作用:提高决策树或随机森林等ML方法的分类效果。VectorIndexer是对数据集特征向量中的类别(离散值)特征(index categorical features categorical features )进行编号。它能够自动判断那些特征是离散值型的特征,并对他们进行编号,具体做法是通过设置一个maxCategories,特征向量中某一个特征不原创 2017-03-19 21:46:20 · 18776 阅读 · 5 评论 -
RDD的依赖关系
RDD的依赖关系Rdd之间的依赖关系通过rdd中的getDependencies来进行表示,在提交job后,会通过在DAGShuduler.submitStage-->getMissingParentStagesprivatedefgetMissingParentStages(stage: Stage): List[Stage] = {valmissing =new转载 2017-02-02 14:39:21 · 447 阅读 · 0 评论 -
Spark常用函数讲解之RDD基本转换
本节所讲函数1.map(func)2.flatMap(func)3.mapPartitions(func)4.mapPartitionsWithIndex(func)5.simple(withReplacement,fraction,seed)6.union(ortherDataset)7.intersec转载 2017-02-02 13:35:23 · 605 阅读 · 0 评论 -
Spark常用函数讲解之键值RDD转换
本节所讲函数1.mapValus2.flatMapValues3.comineByKey4.foldByKey5.reduceByKey6.groupByKey7.sortByKey8.cogroup9.join10.LeftOutJoin11.RightOutJoin转载 2017-02-02 13:38:50 · 1147 阅读 · 0 评论 -
Spark常用函数讲解之Action操作
RDD:弹性分布式数据集,是一种特殊集合 ‚ 支持多种来源 ‚ 有容错机制 ‚ 可以被缓存 ‚ 支持并行操作,一个RDD代表一个分区里的数据集RDD有两种操作算子: Transformation(转换):Transformation属于延迟计算,当一个RDD转换成另一个RDD时并没有立即进行转换,仅仅是记住 了数据集的逻辑操作 At转载 2017-02-02 14:00:11 · 414 阅读 · 0 评论 -
Spark Shuffle初探
之前一直疑惑Shuffle过程中的读和写究竟是在哪里实现的,一直误解读和写都是在RDD的转换过程中实现的,但是追踪代码reduceByKey,却只找到了生成ShuffledRDD的过程,然后在ShuffledRDD中的compute函数中有读取过程,那么写入过程究竟在哪里呢??[java] view plain copy转载 2017-02-01 21:41:35 · 357 阅读 · 0 评论 -
RDD的最常见的几个API以及scala语法解释
RDD的粗粒度的转换是否有足够的表达能力,来支持多种多样的应用需求呢?先看看RDD究竟有哪些API,然后看它们如何模拟Google经典的MapReduce和图数据处理框架Pregel。 RDD的API 转换 def map[U](f: T => U): RDD[U] 将RDD[T]经过f转换成RDD[U],T和U一一映射,两个RDD元素个数相等 d原创 2017-02-01 21:38:00 · 2883 阅读 · 0 评论 -
从HadoopRDD生成各个阶段的RDD 源码详解
1、什么是RDD?上一章讲了Spark提交作业的过程,这一章我们要讲RDD。简单的讲,RDD就是Spark的input,知道input是啥吧,就是输入的数据。RDD的全名是Resilient Distributed Dataset,意思是容错的分布式数据集,每一个RDD都会有5个特征:1、有一个分片列表。就是能被切分,和hadoop一样的,能够切分的数据才能并行计算。原创 2017-02-01 00:14:36 · 2519 阅读 · 0 评论 -
Spark上的决策树(Decision Tree On Spark)
最近花了一些时间学习了Scala和Spark(版本是1.6.3),学习语言和框架这样的东西,除了自己敲代码折腾和玩弄外,另一个行之有效的方法就是阅读代码。MLlib正好是以Spark为基础的开源机器学习库,便借机学习MLlib是如何利用Spark实现分布式决策树。本文主要是剖析MLlib的DecisionTree源码,假设读者已经入门Scala基本语法,并熟悉决策树的基本概念,假如您不清楚,可以参转载 2017-02-09 17:18:32 · 2424 阅读 · 0 评论 -
浅析Apache Spark Caching和Checkpointing
Apache Spark应用开发中,内存管理是最重要的人物之一,但cacheing和checkpointing之间的差异可能会导致混乱。这2种操作是都是用来防止rdd(弹性分布式数据集)每次被引用时被重复计算带来的时间和空间上不必要的损失。然而他们之间的区别是什么呢?fengmian.pngCachingcache 机制保证了需要访问重复数据的应用(如迭代型算法原创 2017-02-09 11:04:57 · 440 阅读 · 0 评论 -
scala中的伴生类 伴生对象说明
1、代码如下:[java] view plain copy print?package com.yy.oop /** * 伴生类和伴生对象 * class Student是伴生对象Object Student的伴生类 * object Student是伴生类class Student的伴生对象 */原创 2016-05-24 16:36:00 · 5140 阅读 · 1 评论 -
spark任务中基于rdd的执行流程分析
下面是rdd的论文中,从hdfs读取日志数据的一个例子:lines = spark.textFile("hdfs://...") // lines is a org.apache.spark.rdd.MappedRDDerrors = lines.filter(_.startsWith("ERROR"))// e原创 2015-11-12 17:36:18 · 1414 阅读 · 0 评论 -
scala的隐式转换之二
/** * Defines implicit functions that provide extra functionalities on RDDs of specific types. * * For example, [[RDD.rddToPairRDDFunctions]] converts an RDD into a [[PairRDDFunctions]] for *原创 2015-11-12 14:21:12 · 977 阅读 · 0 评论 -
scala中的隐式转换之一
定义一个隐式函数:scala> implicit def intToString(i:Int) = i.toStringwarning: there were 1 feature warning(s); re-run with -feature for detailsintToString: (i: Int)String 输入参数:接受隐式转换入参为int类型原创 2015-11-11 17:35:46 · 792 阅读 · 0 评论 -
Scala语言语法
Scala中符号语法糖初学Scala看到那些稀奇古怪的符号(e.g. : , 1. 上下界约束符号 :这对符号个人觉得是里面最好理解的了,这对符号用于写范型类/函数时约束范型类型。先举个栗子:[java] view plaincopydef using[A B): B = try原创 2014-12-08 17:02:50 · 937 阅读 · 0 评论 -
eclipse下进行scala应用程序开发入门
随着伯克利大学推出的spark 新一代内存计算模型的兴起,scala语言也会随之越来越热门,上午抽点时间 在eclipse下完成了scala 例程的开发,主要是涉及相关插件以及scala工程的创建。我的安装经历如下:1 下载和安装eclipse,最新版http://www.eclipse.org/downloads/packages/eclipse-ide-java-e原创 2014-02-16 13:32:24 · 2391 阅读 · 0 评论 -
Spark 源码解析 ----RDD创建与本质
1 HadoopRddclass HadoopRDD[K, V]( sc: SparkContext, @transient conf: JobConf, inputFormatClass: Class[_ keyClass: Class[K], valueClass: Class[V], minSplits: Int)原创 2014-02-16 21:21:03 · 1370 阅读 · 0 评论 -
scala的内部类和外部类
Scala内部类是从属于外部类对象的。1、代码如下[java] view plain copy print?package com.yy.oop /** * 第一种方式 * 在内部类通过【外部类.this.成员名称】 访问外部类成员 */ class OuterClass(val name:Str原创 2016-05-24 16:37:59 · 1913 阅读 · 0 评论 -
scala编译的class字节码实现
我们知道, Scala也是一种运行于Java虚拟机上的语言, 既然能够运行于虚拟机之上, 那么它必然可以编译成class文件, 因为虚拟机只认class文件。 所以, scalac编译器将.scala源文件, 编译成class文件, 然后这些class文件被虚拟机加载并执行。所以, 如果你对class文件格式和java虚拟机足够了解的话, 那么学习scala语言就会原创 2016-05-24 16:42:25 · 6125 阅读 · 1 评论 -
spark 应用程序优化
针对Spark-On-Yarn的一些常用调优策略做详细分析。配置参数优化资源申请参数Spark-On-Yarn资源调度由Yarn来管理,用户只需指定Spark应用程序要申请的资源即可。我们首先来理解几个资源配置项,一旦资源配置确定,则只能在这些有限的资源下运行Spark应用程序。num-executors:同时运行的executor数。executor-cores:转载 2017-02-08 21:26:43 · 305 阅读 · 0 评论 -
SparkContext 与 textFile 生成hadoopRdd 源码解读
SparkContext的初始化SparkContext是应用启动时创建的Spark上下文对象,是进行Spark应用开发的主要接口,是Spark上层应用与底层实现的中转站(SparkContext负责给executors发送task)。 SparkContext在初始化过程中,主要涉及一下内容:SparkEnvDAGSchedulerTaskSchedulerSchedul转载 2017-02-06 22:56:32 · 1863 阅读 · 0 评论 -
基于ant对scala工程进行编译 发布jar包
原创 2016-05-26 21:56:28 · 1277 阅读 · 0 评论 -
scala中的伴生对象实现原理
孤立对象是只有一个object关键字修饰的对象。 该对象会编译成两个class文件, 一个是以孤立对象的名字命名的class, 一个是以孤立对象的名字后面加上一个$字符命名的class, 这个class又叫做虚构类。 源码中的孤立对象中的字段和方法, 都被编译成以孤立对象的名字命名的class中的静态方法, 这些静态方法都会访问单例的虚构类对象。 虚构了是传统意义上的单例模式, 并且在类初始化的原创 2016-05-24 16:49:23 · 1970 阅读 · 0 评论 -
scala中的孤立对象实现原理
《Scala编程》这本书中, 把孤立对象和伴生对象都叫做单例对象。孤立对象指的是只有一个使用object关键字定义的对象, 伴生对象是指有一个使用object关键字定义的对象, 除此之外还有一个使用class关键字定义的同名类, 这个同名的类叫做伴生类。在Scala中单例对象这个概念多少都会让人迷惑, 按《Scala编程》这本书中的说法, 使用object关键字修饰的对象就叫做单例对象。其实这里的原创 2016-05-24 16:48:01 · 1507 阅读 · 0 评论 -
scala中的Map初始化过程详解及隐式类型转换
在Scala中, 可以这样初始化一个Map对象:[java] view plain copy var capital = Map("US" -> "Washington", "France" -> "Paris") 这种创建Map对象的方式, 给人一种优雅的感觉, 不得不佩服Scala语言作者的想象力。 但是这种初始化的原创 2016-05-24 16:46:11 · 2413 阅读 · 0 评论 -
scala中的字段和成员方法的底层class字节文件分析
本文基于class字节码来分析在Scala语言中, 一个类中的字段和方法是如何实现的, 并且对比和java实现方式的区别。首先看一段简单的源码:[java] view plain copy class FieldMethodTest{ private var i = 0 private原创 2016-05-24 16:45:27 · 1988 阅读 · 0 评论 -
整理spark中的job stage task几个概念以及运行案例
Job :是一个比task 和 stage 更大的逻辑概念,job 可以认为是我们在driver 或是通过spark-submit 提交的程序中一个action ,在我们的程序中有很多action 所有也就对应很多的jobsStage: 是spark 中一个非常重要的概念 ,在一个job 中划分stage 的一个重要依据是否有shuflle 发生 ,也就是是否原创 2017-11-10 17:14:01 · 4681 阅读 · 0 评论