- 博客(20)
- 收藏
- 关注
原创 特质与自身类型
特质与自身类型特质scala中的特质trait是一种特殊没有多重继承可以作为接口使用特质,特质可以有实现方法 class Account { var balance = 10d } trait ConsoleLogger { def log(msg: String) { println(msg) } } class...
2018-03-14 15:21:16
513
原创 spark-core源码阅读-累加器(十)
spark-core源码阅读-累加器(十)使用场景累加器是一种支持并行只能added的特殊变量,常用来计次/求和,我们也可以自行定义新数据类型支持added基本原理累加器变量在每个task任务中依次added,把结果传到Driver端进行合并,所以这是分布式计算,只有driver端才能读取累加器最终值先看一个例子object AccumulatorTest ...
2018-03-07 00:41:58
956
原创 spark core源码阅读-广播(九)
spark-core源码阅读-广播前言(spark core源码阅读-Task介绍(六))我们讨论过submitMissingTasks,期间谈到broadcast,当时只是说把序列化过得taskBytes 广播到出去,这里详细讨论广播实现原理BroadcastManager在SparkEnv初始化时被实例化,实例化中initialize实例化BroadcastFactory,默...
2018-03-04 21:06:04
583
原创 设计模式-Visitor
引子1.方法重载class FirstTest { static class Person{ } static class Man extends Person{ } static class Test { void run(Person person) { System.out.println("this is person fun"); ...
2018-03-04 13:53:44
234
原创 spark core源码阅读-Storage shuffle(八)
spark core源码阅读-Storage shuffle(八)本节主要介绍RDD.aggregateByKey导致的shuffle,分两部分map shuffle,reduce shuffle一 map shuffleShuffleMapTask中Task如何处理rdd.iterator,shuffle中Map端如何根据根据分区把数据写入文件.主要类简述Shuff...
2018-02-28 13:07:02
593
原创 spark core源码阅读-内存管理(七)
spark core源码阅读-内存管理(七)存储级别每个StorageLevel都会记录是否使用内存或ExternalBlockStore, 如果内存或ExternalBlockStore内存不足,是否将RDD丢弃到磁盘, 是否以串行化格式保存内存中的数据以及是否在多个节点上复制RDD分区。class StorageLevel private( private va...
2018-02-26 19:19:33
469
原创 spark core源码阅读-Task介绍(六)
Task一个执行单位, Spark中有两种Task: Spark工作由一个或多个阶段组成, 作业的最后一个阶段由多个ResultTasks组成,而早期的阶段由ShuffleMapTasks组成ShuffleMapTask ShuffleMapTask执行任务并将任务输出分为多个桶(基于任务的分区程序)ResultTask ResultTask执行任务并将任务输出发送回驱动程序应用...
2018-02-13 17:49:08
360
原创 spark core源码阅读-RDD与Stage(五)
我们之前说过RDD只是抽象概念,RDD会被转换成Stage,进而被转换成Task,在Executor上执行,今天我们跟一下源码看spark是 如何转换的Stagestage是一组并行任务,被作为Spark任务的一部分运行,并且这些任务持有相同的shuffle依赖.每个任务的DAG根据哪边发生 shuffle为边界划stages,并在调度器中执行有序的stages拓扑图,具体分为:...
2018-02-12 18:36:57
484
原创 spark core源码阅读-RDD详细介绍(四)
之前对RDD有一个大体概念了解,这一节我们需要深入了解它,了解在源码中到底是什么, 怎么产生的,给个rdd之间怎么依赖的,最后又怎么生成spark job我们还是先从一个例子下手:val sc = new SparkContext(sparkConf)val res = sc .textFile(args(0)) .flatMap(line => line.spli...
2018-02-11 18:57:33
4837
原创 spark core源码阅读-提交作业(三)
spark core源码阅读-提交作业(三)通过例子了解spark提交执行流程下面是spark计算PI,通过蒙特卡洛算法: 在一个边长为a的正方形内一均匀概率随机投点,该点落在此正方形的内切圆中的概率即为内切圆与正方形的面积比值 即:Pi * (a / 2)^2 : a^2 = Pi / 4 = 落在圆中个数 / 总次数val count = spark .parallel
2018-02-07 19:42:29
537
原创 spark core源码阅读-基本架构(二)
spark core源码阅读-基本架构(二)Spark基本框架基本组件首先有一个大体感知,下图是spark standalone模型的架构图 几种模式local:本地测试使用YARN: 基于hadoop资源管理器Mesos: 一种比Yarn管理更细的资源管理器YARN的架构图: ResourceManager: 集群资源管理器 NodeMana
2018-02-07 19:42:08
647
原创 spark core源码阅读-环境准备(一)
spark源码阅读-环境准备(一)基于1.6.0版本结合源码理解spark on yarn环境准备下载代码: https://github.com/juntaozhang/spark/tree/my.v1.6.0 git clone https://github.com/juntaozhang/spark.git git checkout my.v1.6.0 mv
2018-02-06 19:07:45
2089
1
原创 Redis Sentinel(哨兵)部署
redis版本3.2.3 role ip port redis slave 192.168.0.194 6379 redis master 192.168.0.195 6379 sentinel 1 192.168.0.194 26379 sentinel 2 192.168.0.195 26379一、
2018-02-06 12:20:27
807
原创 Mongo Replica Set集群搭建
Mongo Replica Set集群搭建MongoDB version: 3.2.8 role ip port note config server primary 192.168.0.194 26050 - config server secondary 192.168.0.194 26051 应该单独配置一台机器
2018-02-06 12:17:58
452
原创 scala中val与def定义的区别
scala中val与def定义的区别变量val定义一个不可改变的变量, def则是一个方法://scala中定义:def main(args: Array[String]): Unit = { def a = "hello" val b = "hello" println(a) println(b)}//编译之后的class文件private fina
2018-02-06 12:06:00
8505
原创 协变与逆变
型变(协变与逆变)今天理清了一下关于java与scala中的型变这个概念, 比较一下这两个JVM语言是如何对待这个问题的Java中的协变与逆变static class Person { public void hi() { System.out.println("hi"); }}static class Student extends Person {
2018-02-06 11:02:46
243
原创 WeakReference(弱引用)与WeakHashMap
WeakReference(弱引用)与WeakHashMap是什么?Java中4种引用,强度依次是(S > S >W > P)强引用 java中创建对象默认是强引用,只要引用被持有,不会被GC软引用(SoftReference) 只有内存不足的时候才会被GC弱引用(WeakReference) 只要发生GC,对象就会被销毁...
2018-02-05 12:29:57
1521
原创 Java ThreadLocal源码分析
Java ThreadLocal源码分析1.首先举一个栗子public static class MyExample { private static ThreadLocal age = ThreadLocal.withInitial(() -> 0); private static ThreadLocal name = new ThreadLocal() {
2018-02-04 16:43:17
189
原创 JVM编译优化
JVM编译优化JVM编译优化编译器与解释器解释器编译器触发条件热点代码编译优化技术表达式优化方法内联逃逸分析编译器与解释器解释器 省去编译时间,立即执行编译器how?3阶段 1.高级中间代码 方法内联,常量替换2.低级中间代码 控制检查消除,范围检查消除3.机器代码
2018-02-04 15:27:51
268
原创 Java volatile 怎么保证不被指令重排序优化
内存间交互操作lock: 作用主内存unlock: 作用主内存read/load:这两个操作顺序执行,不能单独出现;主内存的变量=>工作内存的变量use: 作用工作内存,把工作内存变量传给执行引擎assign: 作用工作内存,把执行引擎收到的值赋给工作内存变量store/write: 这两个操作顺序执行;不能单独出现;工作内存的变量=>主内存的变量通过主内存与工作内存交互来理解这些操作...
2018-02-04 13:46:04
4806
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人