自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 资源 (1)
  • 收藏
  • 关注

原创 MySQL性能优化 - 存储引擎与执行引擎

1、MySQL体系结构图2、插拔式存储引擎MySQL存储的存储引擎是插拔式的,指定在表之上,即一个库中的每一个表都可以指定专用的存储引擎。不管采用什么样的存储引擎结构,都会在数据区产生对应的一个frm文件(表结构定义描述文件)。(1)CSV存储引擎即数据存储在CSV文件中,特点:> 不能定义索引,列定义必须为not null,不能设置自增列。不适用大表或数据的在线...

2019-10-28 23:55:37 696

原创 MySQL性能优化 - B+Tree索引

1、B+Tree 索引索引是为了加速对表中数据行的检索而创建的一种分散存储的数据结构。为什么要使用索引?(1)索引可以极大的减少存储引擎需要扫描大数据量;(2)索引可以把随机IO转变为顺序IO;(3)索引在分组、排序等操作时,避免使用临时表2、二叉树查找树(Binary Search Tree)缺点:(1)数据的深度决定着IO次数,深度太深IO耗时大。...

2019-10-28 13:46:18 381

原创 【设计模式】模板设计模式与适配器设计模式

1、模板设计模式赵本山问宋丹丹: “如何把大象放进冰箱?”宋丹丹回答:“第一步:打开冰箱门,第二步:把大象塞进 冰箱,第三步:关闭冰箱门”。赵本山再问:“怎么把长劲鹿放进冰箱?”宋丹丹答: “第一步:打开冰箱门,第二步:把大象拿出来,第三步:把长劲鹿塞进去,第四步: 关闭冰箱门”(如下图所示),这些都是模板模式的体现。模板设计模式通常又叫做模板方法设计模式,是指定义个算法骨架,允许子类...

2019-03-17 18:56:49 630

原创 软件设计的7大原则

1、开放-封闭原则 对模块、类、函数扩展开发、对修改关闭。强调使用抽象构建框架,用实现扩展细节,从而提高软件系统的复用性和扩展性。开闭原则是面向对象设计中最基础的设计原则,指导我们如何构建稳定灵活的系统。例如:在版本更新的时候,尽可能的不修改已有源代码,通过新增类来扩展功能。/** * 支付 */public interface Payment { /...

2019-03-16 17:59:57 1135 1

原创 开发者如何高效学习与面试准备

1、关于学习     许多与我一样的普通开发者,在学习技术都遇到过很多的困惑,比如常见的一些状态。如学习容易忘记、感觉越学习内容越多,采用方法不对学习效率低下,随着时间推移,信心逐渐丧失,造成三分钟热度。    深层次的原因,来源于当下的状态内心是浮躁的,自己都毫无头绪的焦虑。由于焦虑首先来自外界,技术发展越来越快,今天流行这种技术,过段时间又流行另外一种技术,好像不掌握新技术自己就被淘汰...

2019-02-18 23:38:29 195

原创 Spark Checkpoint原理与源码分析

1、Checkpoint的应用场景        Checkpoint,是Spark提供的一个比较高级的功能。有的时候啊,比如说,我们的Spark应用程序,特别的复杂,然后呢,从初始的RDD开始,到最后整个应用程序完成,有非常多的步骤,比如超过20个transformation操作。而且呢,整个应用运行的时间也特别长,比如通常要运行1~5个小时。        在上述情况下,就比较适合使用chec...

2018-06-02 17:33:54 1297 1

原创 Spark CacheManager原理与源码分析

1、CacheManager在计算中位置与原理示意图2、源码解析RDD.scala final def iterator(split: Partition, context: TaskContext): Iterator[T] = { // storageLevel 不等于 NONE, 说明之前的RDD持久化过 if (storageLevel != StorageLevel.N...

2018-05-25 09:54:09 643

原创 Spark BlockManager原理与源码分析

1、BlockManager原理示意图①Driver上的BlockManagerMaster管理各个节点上BlockManager的元数据信息和维护block的状态信息。②每个节点上BlockManager的每个组件:        DiskStore:负责磁盘上的数据读写        MemoryStore: 负责内存中的数据读写        BlockManagerWorker: 负责远程...

2018-05-24 17:07:42 2395

原创 Spark Shuffle原理与源码解析

1、普通的shuffle过程①假设节点上有2个ShuffleMapTask,节点上有2个cup core②ShuffleMapTask的输出,称为shuffle过程的第一个rdd,即MapPartitionRDD③每个ShuffleMapTask会为每一个task创建一份bucket内存缓存,以及对应的ShuffleBlockFile磁盘文件④ShuffleMapTask输出结束后,封装输出数据信...

2018-05-23 19:46:20 2129 1

原创 Spark Task原理与源码分析

① task的原理示意图②task源码分析Executor.scala /** * 这里就是task运行的工作原理 */ class TaskRunner( execBackend: ExecutorBackend, val taskId: Long, val attemptNumber: Int, taskName: Stri...

2018-05-22 12:50:49 765

原创 Spark Executor原理与源码解析

①Executor原理示意图②Executor源码解析CoarseGrainedExecutorBackend.scala override def onStart() { logInfo("Connecting to driver: " + driverUrl) rpcEnv.asyncSetupEndpointRefByURI(driverUrl).flatMap { ref...

2018-05-20 09:58:47 665

原创 Spark TaskSchduler任务分配源码解析

在DAGSchduler.scala中,封装taskset,使用TaskSchduler提交了taskset,下面通过源码解析,TaskSchduler对task分配到executor和本地化级别。TaskSchdulerImpl.scala/** * taskSchduler 提交taskset的入口 */ override def submitTasks(taskSet: ...

2018-05-18 18:13:25 474

原创 Spark DAGSchduler stage划分原理与源码解析

①stage划分的算法的原理DAGSchduler对stage的划分,从出发action操作开始,往前倒推。首先会为最后一个rdd创建一个stage,往前倒推的过程中如果rdd之间存在宽依赖又创建一个新的stage,之前的最后一个rdd就是最新的stage的最后一个rdd ,以此类推,根据窄依赖和宽依赖判断,直到所有rdd遍历完成为止。②stage划分源码解析DAGSchduler.scala ...

2018-05-17 16:18:23 1047

原创 Spark Job触发流程原理与源码解析

spark触发job的流程示意图:通过对wordcount案例解析,来分析spark job的触发流程。wordcount代码如下var linesRDD= sc.textFile('hdfs://')var wordsRDD = linesRDD.flatMap(line => line.split(" "))var pairsRDD = wordsRDD.map(word =>...

2018-05-15 18:34:18 300

原创 Spark Worker启动服务原理与源码解析

①启动driver服务源码分析Worker.scala case LaunchDriver(driverId, driverDesc) => logInfo(s"Asked to launch driver $driverId") val driver = new DriverRunner( conf, driverId, ...

2018-05-14 19:50:31 224

原创 Spark Master资源调度算算法源码分析

Master.scala的核心方法private def schedule(): Unit = { // 对master状态判断,是否为ALIVE,因为standby是不会进行资源调度的 if (state != RecoveryState.ALIVE) { return } // Drivers take strict precedence over ...

2018-05-12 18:10:03 442

原创 Spark Master状态改变处理机制源码分析

①driver的状态改变case DriverStateChanged(driverId, state, exception) => state match { // 如果driver的状态为错误、完成、杀掉、失败,就移除 case DriverState.ERROR | DriverState.FINISHED | DriverState.K...

2018-05-12 16:42:45 301

原创 Spark Master的注册机制原理与源码分析

Master的注册原理,如下图

2018-05-11 20:18:48 222

原创 Spark Master主备切换原理与源码分析

standalone模式下的master可以有两个,而且支持主备切换,即当Active Master不能工作时,将Standby Master切换为Active Master。Spark Master切换有两种机制,一种是基于文件系统的如HDFS,需要手动切换、另一种是基于Zookeeper,动态切换。一下图是主备切换是做的操作流程。...

2018-05-10 15:35:14 442

原创 SparkContext原理分析与源码分析

①SparkContext的运行原理

2018-05-09 21:41:11 582

原创 Spark基于Yarn的两种提交模式

①spark on yarn-cluster模式②spark on yarn-client提交模式一般,spark on yarn-client在测试的时候使用,dirver运行在客户端,负责调度application。yarn-client模式下,driver在本地启动,全权负责所有任务调度,即在yarn集群上与多个executor通信(task启动消息、task统计消息、tas...

2018-05-08 09:54:59 588 3

原创 spark rdd之间的宽依赖和窄依赖

①task从hdfs读取数据到linesRDD中,同一批task对linesRDD进行flatMap操作;②继续对wordsRDD做map操作,记录单词次数③这个地方会划分一个stage,新的一批task会提交到executor上,对pairs RDD做reduceByKey操作窄依赖(narrow dependency):每一个父RDD的Partition最多被子RDD的一个Partition使...

2018-05-07 11:55:35 508

原创 spark内核架构上的程序执行流程

对于spark程序开发,除了对spark程序熟练编程,向高手进阶,了解spark内核源码是承上启下的一个阶段。下面是spark程序执行流程图。后续文字会对每一个阶段以及重要的知识点,做深入分析,从源码层面更深入了解原理。...

2018-05-07 10:10:24 159

原创 广告平台精准推送系统解决方案架构

以上就是广告精准推送的一个架构图。广告联盟是由多家广告提供商提供形成的一个组织,提供了多个平台的收集到的数据进行整合,数据的分析、清理,计算、统计等,提供向需要投放广告的广告主提供了一个投放系统平台。当用户进入门户网站或者app时,不同的用户看到的是不同的广告,广告联盟的系统计算出了不同用户或者用户群体的不同需求,通过广告推荐引擎系统和数据仓库中的统计数据以及用户的需求,展示给对应需求的用户观看,...

2018-04-19 16:48:33 6692

原创 nodejs快速入门(四)- NodeJS I/O

1、理解I/O    I/O(input / output),即输入输出,在电脑上的输入输出如音频录音是生意的输入,听音乐是声音的输出,在服务器上可以理解为读写操作。2、并发    指一个时间段中有几个程序都处于已启动运行到运行完毕之间,且这几个程序都是在同一个处理机上运行,但任一个时刻点上只有一个程序在处理机上运行。nodejs是单线的执行代码的,使用异步替代多线程。3、同步与异步    同步,...

2018-03-30 14:49:56 312

原创 nodejs快速入门(三)-模块引入与加载机制

本篇文章介绍nodejs的模块引入与加载机制。(一)模块引入与常用内置对象1、module nodejs认为一个js文件就是一个模块,每个模块都有一个全局对象module,同时module对象中有一个对象exports。这个对象被加载一次之后会别缓存,里面提供了模块的父子模块关联信息,即父模块被那些模块引用,子模块引用了那些模块。...

2018-03-28 16:24:15 7204 1

原创 nodejs快速入门(二)-nodejs

    NodeJS是运行在Chrome V8引擎上,解析JavaScript的运行环境。其特点事件驱动、无阻塞IO,轻量级,运行高效,基于npm管理。(1)NodeJS与JavaScript的区别        NodeJS是运行解析JavaScript脚本的运行环境,相当云Java对JVM。(2)NodeJS       ① NodeJS的结构包含V8 JavaScript解析引擎,ECMAS...

2018-03-28 16:23:35 358 2

原创 nodejs快速入门(一)-模块化开发

    随着网站开发的复杂度越来越高,js代码和js文件的增多,出现了开发者头疼的两个问题:① 命名冲突;②文件依赖。js模块化开发可以解决这些问题。   ①变量命令冲突        在js文件中,如下创建一个变量并赋予一个函数。如果文件的代码过多,在后续的代码中再次使用add变量,就会将原来的add变量覆盖,就造成了变量的命名冲突。var add=function(v1,v2){ retur...

2018-03-28 15:02:04 4299

原创 spring读取applicationContext.xml,加载xsd错误

maven打包后启动程序遇到遇到解析spring的applicationContext.xml文件报错,错误如下:org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/beans/spring

2017-12-29 15:11:36 946

Spark性能调优和数据倾斜解决方案

详细介绍了各种情况下spark生产环节遇到的问题以及性能调优解决方案,以及全套的数据倾斜解决方案

2018-05-22

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除