自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(65)
  • 收藏
  • 关注

原创 spark之(executor执行task原理分析)

1>taskscheduler将taskset分发到对应的executor上2>executor调用executor.launchtask方法3>在launchtask方法中会创建taskrunner来封装这些任务,将这些taskruanner放入到threadpool中,4>最终调用taskruanner方法中的task.runtask方法执行任务...

2019-03-14 14:01:37 1192

原创 spark默认的调度(fifo vs fair)

1>fifo(队列调度):fifo scheduler主要是将提交的作业放入到任务队列中,是一个先进先出的队列,在进行分配资源的时候,先给第一个任务分配足够的资源,才会给下一个任务分配资源,缺点是;当前面的任务需要大量的资源,后续的任务将没有资源可分配,处于一种阻塞状态,直到前面的任务资源释放,后续任务才有运行机会.2>fair(公平调度) fair scheduler是一种公平动...

2019-03-14 11:24:46 1130

原创 spark执行流程中(taskscheduler源码解释)

Dagscheduler将taskset提交给Taskscheduler,Taskscheduler主要做了哪些工作呢? 1>Taskscheduler会将这些taskset放到taskset的缓冲池中,并创建tasksetmanager对taskset进行生命周期的管理2>实现类taskschedulerimpl会调用resourceoffer方法。对tasksetm...

2019-03-14 11:04:09 229

原创 spark的执行流程(源码解说)

1>spark的作业主要是由rdd的action所触发作业的提交,根据提交作业构建DAG图。将作业提交给sparkcontxt,在sparkcontext会创建2个重要组件,一个是dagscheduler和taskscheduler组件。最终运行sc.runjob将作业提交给Dagscheduler2>Dagscheduler会根据DAG图进行stage的划分 ...

2019-03-14 10:39:04 226

原创 shuffle的读操作(shufflereducetask端与blockmanagerendpoint端点进行通信获取mapstats元数据信息)

shuffle的读操作: 1》主要是由shufflerdd的compute方法所触发 2》在compute方法中,调用shufflemanager,getread方法, 3》在该getread方法中会与blockmanagerendpoint中端点进行通信,获取到shufflemaptask端的mapstatus元数据信息(主要调用shuffmaptask的ge...

2019-03-14 10:03:21 197

原创 spark中stage的划分依据(hashshuffle和sortshuffle)

前面我们提到spark中夸依赖存在2种shuffle,一种是hashshuffle,另一种是sortshuffle1>hashshuffle的核心思想 a:hashshuffle的maptask端会根据shufflereduceTask的数量在maptask端创建对应数量的bucket文件,bucket文件数量:n = n(map数量) * n(reduce 数量) b:...

2019-03-13 22:43:02 1066

原创 Spark基础(a:谈谈你对rdd的理解,b:stage的划分过程)

a:1>弹性分布式数据集,不可变的数据集,所谓分布式:数据分布在不同的节点,并行计算,弹性:可以指定分区,可以进行数据缓存,并对数据指定不同级别的缓存,2>数据是可以分区的,每一个分区都被映射成bolck,都有自己的block_id,被blockmanager所管理,默认的分区数是由系统的cpu core所决定的.3>每一个分区都会被我们定义的函数所执行,底层主要调用...

2019-03-13 21:15:28 583

原创 java运行时区域划分(方法区,运行时常量)

1>方法区:与堆内存一样,是各个线程共享的内存区域,它用于存储已经虚拟机加载的类信息,静态变量,即是编译器编译后的代码等数据,虽然java虚拟机规范把方法区域描述为堆的一个逻辑部分,但是它却有意个别名,叫做Non-Heap(非堆),目的是为了将java堆和方法区区分开来. java中对java的方法区的限制非常宽松,除了和java堆一样不需要连续的内存空间和可以选择固定大小或者扩...

2019-03-06 16:25:06 594

原创 java运行时内存区域(java堆)

对于大多数程序来说,java中所分配的最大内存区域是java中的堆,堆内存是被所有的线程所共享的,在虚拟机启动时候所创建 ,此区域的唯一目的就是为了存放java中的绝大部分的对象实列以及数组,java堆是垃圾收集器管理的主要区域,因此堆内存在这一层面上也可以叫为GC堆,现在的收集器都采用的是分代收集算法,所以java堆又可分为新生代,老年代,继续细分又可分为Eden空间,From Surviv...

2019-03-06 15:22:49 162

原创 java中运行时候区域(本地方法栈)

本地方法栈与虚拟机栈所发挥的作用是非常相似的,他们之前的区别不过是虚拟机栈为虚拟机执行java方法,而本地方法栈则为虚拟机使用到的native方法服务,与虚拟机栈一样,本地方法栈也存在2种异常情况,和虚拟机栈抛出的异常是一样的,分别为StackOverflowError和OutofMemoryError异常...

2019-03-06 14:40:50 420

原创 Java(运行时区域内存之java虚拟机栈)

与程序计数器一样,java虚拟机栈也是java私有的部分,它的生命周期与线程相同,虚拟机栈描述而是java方法执行的内存模型,每个方法在执行的时候都会创建栈帧, 栈帧:主要用于存储局部变量表,操作数栈,动态链表,方法出口等信息,每一个方法从调用到执行完成的过程中,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程.. 曾经有人把java内存区域划分为堆和栈,其中这种描述是不...

2019-03-06 13:58:40 922

原创 Java中的运行时候、的数据区域划分之程序计数器区域理论

在执行Java程序过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途,以及创建和销毁的时间,有的区域随虚拟机进程启动而存在,有的区域依赖用户线程的启动和结束而建立和销毁,根据Java7规划,将java运行时区域划分为以下部分,方法区,栈,虚拟机栈,本地方法栈,程序计数器, 1>程序计数器:程序计数器是一块很小的内存空间,可以看作当前线程执行的字节码的行号指示器...

2019-03-06 13:09:20 171

原创 Java中CopyonwriteArraylist的底层CocurrentHashmap和底层

1>ConpyonwriteArraylist实现(Arraylist的并发实现)     1>是Arraylist高并发的实现,是一种读和写分离的操作     写操作:先将数据拷贝到新的的数组中,在新的数组中进行写,写完之后去更新旧的数组,    读操作:会去读取旧数组中的元素,做到数据的读和写是完全分离的(保证在多个线程进行修改Arraylist结构时,保证读取数据的一...

2019-02-25 20:57:24 321

原创 java中Hashset,hashtable的底层实现原理

1>hashset底层1>底层的数据结构:底层调用new hashmap(),和Hashmap具有相同的数据结构。 2>Hashset在进行存储元素时,元素不重复,通过调用底层的hash(key)得到在Hash表中的存储位置,如果该位置无元素,进行添加,如果存在元素,调用equals方法进行比较,如果为true,元素重复,不进行添加,如果为false.元素可进行添加 ...

2019-02-25 01:19:21 1818

原创 java集合中的fail-fast机制原理

fail-fast机制是java中的一种错误机制,早遍历集合的过程中,如果集合的结构倍修改,则抛出异常      1>单线程:在遍历集合的过程中,集合的结构发生了变化     2>在多线程的情况下,当一个线程在遍历集合的过程中,其他前程将该集合的结构发生了修改,则抛出异常     抛出异常的检测机制:在进行迭代数据集合的过程中,迭代器内部维护了一个原始集合的结构标志node...

2019-02-25 00:36:07 151

原创 java中的HashMap和linkedHashMap的底层实现

1>HashMap的底层实现           a:底层的实现是散列表(数组+链表)           b;put 操作时,首先会根据key进行hash(key)计算出在数组中的存储位置,如果该位置已经存在其他元素,将之前脸链表的数据往后推,该操作可能存在hash冲突,不同key的值,通过hash函数得到相同的index,采用链表的方式进行存储,相同key的值,得到相同的hash...

2019-02-24 23:46:22 482

原创 java中几个重要的集合

1>Arraylist底层实现原理      a:底层是基于动态数组实现,采用顺序存储结构,基于顺序的存储结构,内存空间是连续的,支持高效的随机访问数据,查询数据的时间复杂的为O(1),插入数据的时间复杂的为O(n),     b:默认创建的长度为10,在进行扩容的时,会创建一个是之前数组容量的1.5倍的数组,会将原始的数组中的数据拷贝到新的的数组当中  c:Arrayllist...

2019-02-24 22:22:14 166

原创 Mapreduce中几种join的实现逻辑思想

在mapreduce中分为3大join逻辑,分别的是Map端的join,reduce端的join,semi  join      1>map 端的join实现逻辑:首先他会有2个map任务,第一个Map任务会将小表的数据完全加载到内存中,并且将数据映射成hashmap的数据结构,在该结构中key就是对应的我们连接的那个key,第2个map任务会去扫描大表的数据,与小表中的数据的key去匹...

2019-02-23 21:31:57 351

原创 Mapreduce的执行流程思路

hadoop作为当今大数据学习的基础,其中最重要的组建mapreduce(即使引擎)是不可缺少的,他主要采用分而治之的思想,将一个整体大的文件,分解成多个小问题并行在不同的机器上去解决,在reudce端对个小问题的进行汇总,这就是mr        mr的执行流程思路如下map端:1>读取数据,调用Textinputformat的Recordread方法,并将没一行文本一次解析成<...

2019-02-23 19:55:02 445

原创 Hadoop中的yarn组建的几种资源调度策略

yarn中几种重要的的资源调度策略         1>fifo(队列调度策略):在数据结构中,我们学习了队列这种数据结构,遵循先进先出的原则,在资源调度也是队列这种数据结构的一种应用,当存在多个任务的需要去执行的时候,他们都存在于任务队列中,这种资源调度策略,首先会优先的从任务队列中头部拿到任务,对该任务分配足够的资源,使得第一个任务有足够的资源,保障其顺利的进行,在有剩余资源的情况下...

2019-02-23 01:20:44 455

原创 Hadoop相关的面试(Namenode的HA实现策略)

什么是NameNode 的HA机制,在早期的Hadoop1.x中,网满都知道对外提供的的主要服务是Namenide提供,早期的Hadoop中并没有实现Namenode的高可用策略,即Namenode的Ha机制,当Namenode所在的机器宕机,整个Hadoop应用将面临奔溃问题,由此在Hadoop2.x中出现Namenode的Ha机制 ,主要实现方式有2种         1>第一种实现...

2019-02-22 23:06:17 2212 1

原创 hadoop几个常见的面试题总结(client与hdfs读写流程交互)

1>客户端与hdfs文件系统的交互问题              a:读流程:   1>client调用distributeFileSystem的Api的open方法,与Namenode建立通信,请求读取一个制定路径下的文件,此时NameNode会去查合并的编辑日志和镜像文件,以及会根据Namenode和Datanode之间的心跳报告,得知该数据的健康性,和完整性.,如果该文件已经...

2019-02-22 21:16:24 3095 6

原创 hive中的内部表和外部表的区别和使用场景

1>区别  a:默认的情况下 ,用户所创建的表示内部表也叫管理表,该表或多或少的会管理表中的数据,所以在创建内部表时,在时候location指定数据路径时候,会将该路径下的数据移动到该表所在的目录下,于此同时在删除内部表的数据,会删除数据同时也会删除该表所在的元数据,该管理表不适用于其他工具共享数据   b:外部表在创建表时候需要添加一个关键子,external,该表不完全管理该表,...

2019-02-17 11:13:08 5763

原创 hive中的隐式数据类型转化规则

hive中的原子数据类型可以进行隐式转换的,类似于java的数据类型转换,转换规则如下     1>任何整数类型都可以隐式的转换为一个更广泛的数据类型,比如tinyint可以转换成int bigint等数据类型      2>其中float,string数据类型可以转换为double数据类型     3>tinyint smallint int都可以抓换成FLAOT类...

2019-02-17 10:53:39 2460

原创 hive的优缺点

A:hive的本质:是将hql语句转换成mapredue去执行 1>优点:a:操作接口采用类sql语法,提供快速开发的能力                 b:避免去屑mr程序,减少开发成本,减少mr的学习成本                 c:hive的延迟比较高,比较适用用大量数据的统计分析,主要用于离线统计分析 ,对于实时要求不高的场合                ...

2019-02-16 22:52:31 3175

原创 数据结构与算法(广度优先算法,如何找到qq好友的3度好友关系来达到推荐的目的)

回顾;上一节课中,我们学习了图这种比较复杂的非线性结构的基础,以及表示方法,以及他在社交网络中的应用,其中这种数据结构存储数据的方式有领连接矩阵存储和领连接链表存储,分别采用空间换时间和时间换空间的思想,其中采用领连接矩阵存储具有更广的应用,只是他的底层以矩阵进行描述,可以进行多种矩阵的计算,达到我们的业务目的.1>提出问题,什么是搜索算法         要想搞清楚这个问题,我还是...

2019-02-02 00:40:07 777 1

原创 数据结构与算法(图)

 1>提出问题,,如何理解图,微博,qq好友之间的好友关系是怎么存储的?带着这个问题我们今天来讲一下图这种数据结构       之前我们讲了树是一种非线性结构,另外今天我们讲的图也是一种比较复杂的非线性结构,      之前我们讲的树中的元素我们称之他为节点,图中的元素我们叫做顶点,图中,我们可以和顶点与顶点之间建立更加复杂的关系,我们称之为边,废话不多说,我们看下图  ...

2019-01-16 05:40:54 324

原创 有名的推荐系统(推荐系统理论)

前面我们都一直在讲各种数据结构和重点排序算法,今天我们来换一种口味吧,那就是有名的推荐算法 前言:想必我们都在京东,淘宝各大网站买过自己喜欢的东西吧,购物平台就会为你推荐你可能要买的东西,这种推荐又是怎么来完成的呢?今天我们就单单讲一下基于音乐推荐的完成思想 1>推荐算法         实际上解决推荐这个问题,不需要太多的理论,解决思路的核心思想非常简单,         ...

2019-01-15 02:06:08 974

原创 数据结构与算法(如何利用堆排序实现Top10的热门搜索词)

 1>堆的应用1(优先级队列)       优先级队列顾名思义,他首先是以个队列,队列他服从先进先出的原则,不过在优先级队列中,他出队的顺序不是先进先出,而是根据优先级来决定的,优先级越高,最先出队列      用堆来实现一个优先级队列是最直接最高效的,因为堆和优先级队列是非常相似的,往优先级队列插人一个数据,就是往堆中插入一个数据,从优先级队列中取数据,就是取堆中的堆顶元素  ...

2019-01-14 04:30:21 704

原创 数据结构与算法(为什么堆排序没有快速排序快?)

今天我们来讲一下堆,堆排序最重要的就是堆排序了,堆排序是一种原地排序,时间复杂度是O(nlogn)的排序算法,前面我们讲的快速排序算法,平均情况下,时间复杂度为O(nlogn),尽管2个排序算法的时间复杂度相等,那位什么快排的性能比堆排序好呢?带着这个问题我来学习下堆排序1>如何理解堆这个数据结构?         堆这种数据结构必须满足2个要求               ...

2019-01-14 02:00:40 779

原创 数据结构与算法(有了如此高效的散列表,为啥还需要二叉树呢?)

回顾:上一节我们讲了二叉树的基本知识,今天我们讲一个更加高效的二叉查找树,他支持动态的插入,删除操作           我们之前说过,散列表也是可以支持高效的动态的插入,删除操作,而且时间复杂度是O(1),为何右如此高效的散列表,还需要二叉查找树呢?带着这个问题,我们来学习一下二叉查找树      二叉查找树:顾名思义就是为了快速的查找而诞生的,不仅这样,他还支持高效的动态插入,删除操作...

2019-01-13 05:40:16 438

原创 数据结构与算法(二叉树)

1>前面我们已经讲了线性结构,栈,队列,链表等线性结构,今天我们来讲一下一种非常重要的非线性结构:树 解释:你有没有发现非线性结构"树"和我们现实生活中的"树"很相似,这里面每一个点都是树的节点,节点与节点存在这某种关系,比如节点与节点相连接的关系叫做父子节点解释:B,C,D的父节点是A,B,C,D被叫做兄弟节点,B,C,D是A的子节点,没有父子节点的节点叫做根节点,如图E,...

2019-01-12 03:18:59 842

原创 Hash算法

1>所谓Hash算法是什么?          是将将任意长度二进制串映射为固低昂长度的二进制值串,二通过原始数据映射之后得到的二进制值串就是hash值,套想设计一个优秀的hash算法,并不容易,我有以下总结          a:从hash值不能反向推导出数据(所以hash算法也被叫做单向hash算法)         b:对输入的数据非常敏感,只要稍微修改了一个bit,得到的...

2019-01-11 03:50:28 323

原创 数据结构与算法(为什么散列表经常和链表一起使用)

1>回顾基于链表的lru淘汰缓存         基于链表实现的lru缓存淘汰算法.首先要维护一张基于时间大小排序的链表,因为缓存的空间有限.当我们需要缓存的时候,链表的空间有限,我们需要从链表的尾部淘汰掉一个数据,        当我们需要缓存一个数据的时候,我们需要遍历这个链表,如果该链表切切实实的不存在该数据,我们需要将把该数据加到链表的尾部,如果链表中已经存在该数据,我们只需...

2019-01-10 06:24:26 311

原创 数据结构与算法(如何设计一个工厂的hash表)

回顾:通过上一节课的学习,我们不能笼统的说hash表的查找的时间复杂度为O(1 ),hash表的时间复杂度跟hash函数,装载因子,hash冲突等有关,如果hash函数设计的不好,或者装载因子过高,活导致hash表查询的时间复杂度增大,在极端的情况下,当hash函数设计不好,所有数据经过hash都存在同一个佣中,hash表查找会变成单链表的查找.1>今天我们主要学习下该如何设计一个工程的...

2019-01-09 07:06:57 264

原创 数据结构与算法(散列表)

1>何为散列表?    散列表用的是数组支持按照下标随机访问数据的特性,散列表其实就是数组的一种扩展,没有数组就没有散列表.总结:由图中我们可以看出,我们会通过某一个key,进行hash函数的运算,映射到数组table中,这就是散列思想,我们可以通过散列函数,用时间复杂度为O(1)的去取table中的数据,散列函数最重要的就是hash(key)2>散列函数设计的基本要求...

2019-01-09 03:02:49 344

原创 数据结构与算法(跳表)

回顾上节:上节课中我们学习了二分法查找,最基本的二分法查找需要随机的访问数据,底层都是基于数组的存储结构 1>思考问题,如果底层是基于链表的方式存储数据.是否能用二分法查找呢?        我们只要对数组进行稍微改造,基于链表实现,并在链表的基础上分别建立对于的索引,就可以快速的基于链表的方式进行查找,而且该种方式支持随机的插入,删除操作,Redis就是基于这种数据结构来存放有序的...

2019-01-09 01:55:08 216

原创 数据结构与算法(二分法查找的几个变形问题)

  1>查找第一个值等于给定值的元素列:我们用二分法查找的时候首先拿8与a[4]进行比较,发现a[4]<8,所以在a[5]与a[9]之间查找,8与a[7]进行比较,发现刚好相等就返回,但是我们需要的是查找第一个值等于给定值的元素,意思就是我们需要查找的元素是a[5]public int bsearch(int[] a,int n,int value){ int...

2019-01-08 07:04:11 305

原创 数据结构与算法(二分查找)

1>何为而分查找?     二分查找针对的是有序的数据集合,每次都是通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到查找到该元素,或者区间缩小为0。2>二分查找为何这么高效?     我们假设数据的数据量为n,每次查找都会将数据集缩小为原来的一半,最坏的情况下 ,直到这区间缩小为空,根据上式求得二分查找的时间复杂度为logn3>二分查找的简单...

2019-01-08 04:26:35 682

原创 数据结构与算法(快排)

1?何为快排,          快排遇到到思想也是分治思想,和归并排序是同意思想,单逻辑完全不同,         快排的思想是这样的,如果要排序的数组下标是从p到r,那我们选择p到r之间的任意一个数据作为分区点(pivot),遍历分区点左边的数据和分区点右边的数据,将比分区点小的数据放在分区点的左边,大于分区点的数据放在分区点的右边,这样的数据就被分为了3部分,,根据分治的思想...

2019-01-08 03:49:08 378

空空如也

空空如也

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

TA关注的人

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