Spark
文章平均质量分 78
MrGeroge
这个作者很懒,什么都没留下…
展开
-
Apache Spark源码走读
ApacheSpark源码走读之3-Task运行期之函数调用关系分析一.Spark中间结果处理1.中间计算任务ShuffleMapTask执行完计算后会将计算状态封装为MapStatus并返回给DAGScheduler2.DAGScheduler将MapStatus保存到MapOutputTrackerMaster中3.ResultTask执行到ShuffleRDD(只要是shuf转载 2017-12-08 22:28:36 · 506 阅读 · 0 评论 -
Spark RPC源码剖析
Spark RPC层是基于通信框架Netty开发的核心类:RpcEnv,RpcEndPoint,RpcEndPointRef比如Spark Master和Worker便是一个RpcEndPoint(通信端),只能通过RpcEnv获取与RpcEndPoint通信的对象RpcEndPointRef,Spark默认使用更高效的NettyRpcEnv客户端调用RpcEndPointRef发转载 2017-12-07 09:41:31 · 499 阅读 · 0 评论 -
Spark知识体系
1.大数据的四大特征(4V):海量的数据规模,快速的数据流动和动态的数据体系,多样的数据类型,巨大的数据价值 2.RDD与DataFrame区别:RDD是一个抽象数据集,DataFrame则相当于一个二维表,带有schema元数据信息,更便于上层应用分析3.DataFrame和DataSet的区别:每个DataSet有一个被称为DataFrame的类型化视图,它只有在执行actio原创 2017-12-07 09:56:23 · 1082 阅读 · 0 评论 -
Spark高级数据分析
第一章 大数据分析1.数据科学面临的挑战1)数据分析绝大部分工作是数据预处理包括清洗,处理,融合,挖掘以及其他操作,即使模型调优阶段,特征提取和选择上花费的时间比选择和实现算法时间更多2)迭代与数据科学紧密相关,比如模型优化时采用的随机梯度下降和最大似然估计,构建模型时需要选择正确特征,挑选合适算法,运行显著性测试,找到合适超参数3)构建完表现卓越的模型不等于大功告成,模型需要定期原创 2017-12-07 10:01:58 · 4057 阅读 · 0 评论 -
Scala基础语法
Scala学习教程1.Scala概述运行在JVM上的纯面向对象和函数式编程语言,能够兼容任何Java API,Kafka和Spark均由Scala编写 Scala特性:1)面向对象编程类的抽象机制包括子类继承,混入机制2)函数式编程函数可作为值使用,定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化,除此之外case模式匹配3)静态类型包括泛型类,协原创 2017-12-07 10:04:00 · 519 阅读 · 0 评论 -
深入浅出JVM
深入浅出JVM学习笔记一.Java平台 大致分为编译时环境和运行时环境两部分编译时环境:通过javac xxx.java命令启动java编译器,编译java源程序为xxx.class字节码运行时环境:通过本地/网络传输xxx.class到java虚拟机,即jvm(这个过程是通过ClassLoader来完成的,ClassLoader会将xxx.class文件和Java API编译原创 2017-12-07 10:07:40 · 413 阅读 · 0 评论 -
Spark机器学习
第二章 数据驱动的机器学习系统的组成1. 机器学习系统组成:数据收集->数据清洗与转换->模型训练->模型测试->模型部署与整合->模型监控与反馈(同时监控模型的准确度相关指标以及业务指标,模型反馈是指通过用户的行为来对模型的预测进行反馈)2. 数据预处理数据过滤(只需要部分原始数据或者满足条件的事件数据)处理数据丢失、不完整或者有缺陷(填充缺陷数据或者过滤)处原创 2017-12-07 10:11:23 · 4390 阅读 · 0 评论 -
Spark快速大数据分析
第三章 RDD编程Driver(main函数):定义了RDD以及算子操作3.1 RDD基础transformation(转换)算子操作:RDD[A]->RDD[B]action(立即)算子操作:RDD[A]->result //立即提交job执行,并返回result的过程延迟执行:transformation算子操作不会立即执行,而是在需要的时候执行3.2基本RDD操作原创 2017-12-07 10:12:45 · 1761 阅读 · 0 评论 -
Spark RDD源码剖析
1. RDD是一个抽象类,需要实现两个抽象函数abstract class RDD[T: ClassTag]( @transientprivate var _sc: SparkContext, @transientprivate var deps: Seq[Dependency[_]] ) extendsSerializable with Logging {转载 2017-12-07 19:07:45 · 423 阅读 · 0 评论 -
Scheduler模块详解
2.1整体架构:任务调度的两大模块:DAGScheduler(负责划分为不同阶段)和TaskScheduler(将不同阶段的TaskSet提交到集群中的Executor),Executor执行后的结果返回给Driver2.2Scheduler的实现:1)org.apache.spark.scheduler.DAGScheduler2)org.apache.spark.schedul原创 2017-12-05 19:27:42 · 4444 阅读 · 0 评论 -
RDD实现详解
1.RDD的三大特性自动容错:(基于Lineage血统,即会保存创建RDD的相关转换(算子操作))位置感知性调度:为了尽量满足数据本地性,Task调度会依次从以下位置查找是否有计算所需的数据:1)缓存,即待计算的数据RDD执行过cache()操作2)Checkpoint:即待计算的数据RDD是否执行过checkpoint()操作,数据检查点保存3)rdd.preferedLoc原创 2017-12-05 19:24:52 · 690 阅读 · 0 评论 -
Deploy模块
5.1 Spark运行模式Spark支持Standalone,Mesos,YARN,EC2,Local部署模式5.1.1 Local模式1)local使用单线程处理计算任务,不会重新计算失败的计算任务2)local[N]/local[*]前者使用N线程处理计算任务,后者工作线程数取决于CPU Cores,保证一个工作线程可以占有一个CPUCore,同样不会重新计算失败的任务原创 2017-12-05 19:29:53 · 583 阅读 · 0 评论 -
Executor模块详解
Executor的功能:执行Task任务,并将计算结果传回给Driver(Task划分和调度) 6.1 Standalone模式的Executor分配详解SparkContext->TaskScheduler->SchedulerBackend->DAGScheduler->AppClient(注册Application)->Master(启动Executor)->Worker->Ex原创 2017-12-05 19:32:26 · 994 阅读 · 0 评论 -
Shuffle模块详解
Shuffle过程即把数据打乱后重新汇聚到不同节点的过程7.1 Hash Based Shuffle Write每个ShuffleMapTask根据key的哈希值计算出每个key需要写入的Partition,然后把数据单独写入一个文件,下游的ShuffleMapTask或者ResultTask便会读取此文件进行计算7.1.1 Basic Shuffle Write实现原理val m原创 2017-12-05 19:33:25 · 1006 阅读 · 0 评论 -
Storage模块详解
8.1 模块整体架构Storage模块采用Master/Slave架构,Master负责整个Application的Block元数据信息的管理和维护;Slave负责将Block的更新等状态上报到Master,Master和Slave之间通过AKKA消息传递机制通信,Master与Slave之间并没有心跳检测而是间接通过Driver与Executor之间的心跳检测而来Master的元数据信息原创 2017-12-05 19:34:24 · 1957 阅读 · 0 评论 -
Spark技术栈学习
1.Spark特点:Spark高效计算的原因是基于内存的计算(很快写,很快运行),高效DAG执行引擎,Spark比MapReduce快100倍,拥有Java,Scale,Python等API,且支持多种平台(Hadoop,Cloud,Mesos等),能够在一个应用中支持Spark Stream(流计算),Spark SQL(自查询),Spark Core(批处理),GraphX,MLLib等原创 2017-12-05 19:40:46 · 2560 阅读 · 0 评论 -
Scala基本语法
Java和Scala运行时都需要JRE,且Java和Scala都需要编译成字节码后才能在JVM上运行,实际工程中Scala一般会调用Java的API var :变量值可改变val :变量值不可改变 Object相当于java中的public static class修饰符(包含静态成员和方法),object不是对象,可以通过Object的apply方法控制对象的创建(单例模式,原创 2017-12-05 19:43:10 · 609 阅读 · 0 评论 -
Spark作业流源码剖析
1.详细流程:1. 用户编写的Spark应用程序,只有使用Action算子操作才能提交一次Job给ClusterManager2. Action算子->sc.runJob()->runJob(rdd,func,partitions) //三个参数分别为rdd,处理函数,分区数->runJob[T, U](rdd, func,partitions, (index, res)原创 2017-12-05 11:29:52 · 242 阅读 · 0 评论