自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

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

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

2019-03-14 14:01:37 776 0

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

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

2019-03-14 11:24:46 305 0

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

Dagscheduler将taskset提交给Taskscheduler,Taskscheduler主要做了哪些工作呢? 1>Taskscheduler会将这些taskset放到taskset的缓冲池中,并创建tasksetmanager对taskset进行生命周期的管理 2&...

2019-03-14 11:04:09 69 0

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

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

2019-03-14 10:39:04 90 0

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

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

2019-03-14 10:03:21 83 0

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

前面我们提到spark中夸依赖存在2种shuffle,一种是hashshuffle,另一种是sortshuffle 1>hashshuffle的核心思想 a:hashshuffle的maptask端会根据shufflereduceTask的数量在maptask端创建对应数量的b...

2019-03-13 22:43:02 389 0

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

a: 1>弹性分布式数据集,不可变的数据集,所谓分布式:数据分布在不同的节点,并行计算,弹性:可以指定分区,可以进行数据缓存,并对数据指定不同级别的缓存, 2>数据是可以分区的,每一个分区都被映射成bolck,都有自己的block_id,被blockmanager所...

2019-03-13 21:15:28 317 0

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

1>方法区:与堆内存一样,是各个线程共享的内存区域,它用于存储已经虚拟机加载的类信息,静态变量,即是编译器编译后的代码等数据,虽然java虚拟机规范把方法区域描述为堆的一个逻辑部分,但是它却有意个别名,叫做Non-Heap(非堆),目的是为了将java堆和方法区区分开来. ja...

2019-03-06 16:25:06 294 0

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

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

2019-03-06 15:22:49 76 0

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

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

2019-03-06 14:40:50 205 0

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

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

2019-03-06 13:58:40 122 0

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

在执行Java程序过程中会把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途,以及创建和销毁的时间,有的区域随虚拟机进程启动而存在,有的区域依赖用户线程的启动和结束而建立和销毁,根据Java7规划,将java运行时区域划分为以下部分,方法区,栈,虚拟机栈,本地方法栈,程序计数器, ...

2019-03-06 13:09:20 64 0

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

1>ConpyonwriteArraylist实现(Arraylist的并发实现)      1>是Arraylist高并发的实现,是一种读和写分离的操作      写操作:先将数据拷贝到新的的数组中,在新的数组中进行写,写完之后去更新旧的数组,     读操作:...

2019-02-25 20:57:24 92 0

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

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

2019-02-25 01:19:21 618 0

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

fail-fast机制是java中的一种错误机制,早遍历集合的过程中,如果集合的结构倍修改,则抛出异常       1>单线程:在遍历集合的过程中,集合的结构发生了变化      2>在多线程的情况下,当一个线程在遍历集合的过程中,其他前程将该集合的结构发生了修改,...

2019-02-25 00:36:07 54 0

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

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

2019-02-24 23:46:22 161 0

原创 java中几个重要的集合

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

2019-02-24 22:22:14 57 0

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

在mapreduce中分为3大join逻辑,分别的是Map端的join,reduce端的join,semi  join       1>map 端的join实现逻辑:首先他会有2个map任务,第一个Map任务会将小表的数据完全加载到内存中,并且将数据映射成hashmap的数据结构,...

2019-02-23 21:31:57 81 0

原创 Mapreduce的执行流程思路

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

2019-02-23 19:55:02 209 0

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

yarn中几种重要的的资源调度策略          1>fifo(队列调度策略):在数据结构中,我们学习了队列这种数据结构,遵循先进先出的原则,在资源调度也是队列这种数据结构的一种应用,当存在多个任务的需要去执行的时候,他们都存在于任务队列中,这种资源调度策略,首先会优先的从任务...

2019-02-23 01:20:44 135 0

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

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

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

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

1>客户端与hdfs文件系统的交互问题               a:读流程:   1>client调用distributeFileSystem的Api的open方法,与Namenode建立通信,请求读取一个制定路径下的文件,此时NameNode会去查合并的编辑日志...

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

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

1>区别   a:默认的情况下 ,用户所创建的表示内部表也叫管理表,该表或多或少的会管理表中的数据,所以在创建内部表时,在时候location指定数据路径时候,会将该路径下的数据移动到该表所在的目录下,于此同时在删除内部表的数据,会删除数据同时也会删除该表所在的元数据,该管理表不适...

2019-02-17 11:13:08 2645 0

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

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

2019-02-17 10:53:39 669 0

原创 hive的优缺点

A:hive的本质:是将hql语句转换成mapredue去执行  1>优点:a:操作接口采用类sql语法,提供快速开发的能力                  b:避免去屑mr程序,减少开发成本,减少mr的学习成本                  c:hive的延迟比较高,比...

2019-02-16 22:52:31 934 0

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

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

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

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

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

2019-01-16 05:40:54 119 0

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

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

2019-01-15 02:06:08 685 0

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

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

2019-01-14 04:30:21 225 0

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

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

2019-01-14 02:00:40 257 0

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

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

2019-01-13 05:40:16 203 0

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

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

2019-01-12 03:18:59 250 0

原创 Hash算法

1>所谓Hash算法是什么?           是将将任意长度二进制串映射为固低昂长度的二进制值串,二通过原始数据映射之后得到的二进制值串就是hash值,套想设计一个优秀的hash算法,并不容易,我有以下总结           a:从hash值不能反向推导出数据(所以hash...

2019-01-11 03:50:28 132 0

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

1>回顾基于链表的lru淘汰缓存          基于链表实现的lru缓存淘汰算法.首先要维护一张基于时间大小排序的链表,因为缓存的空间有限.当我们需要缓存的时候,链表的空间有限,我们需要从链表的尾部淘汰掉一个数据,         当我们需要缓存一个数据的时候,我们需要遍历这...

2019-01-10 06:24:26 186 0

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

回顾:通过上一节课的学习,我们不能笼统的说hash表的查找的时间复杂度为O(1 ),hash表的时间复杂度跟hash函数,装载因子,hash冲突等有关,如果hash函数设计的不好,或者装载因子过高,活导致hash表查询的时间复杂度增大,在极端的情况下,当hash函数设计不好,所有数据经过hash都...

2019-01-09 07:06:57 75 0

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

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

2019-01-09 03:02:49 167 0

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

回顾上节:上节课中我们学习了二分法查找,最基本的二分法查找需要随机的访问数据,底层都是基于数组的存储结构  1>思考问题,如果底层是基于链表的方式存储数据.是否能用二分法查找呢?         我们只要对数组进行稍微改造,基于链表实现,并在链表的基础上分别建立对于的索引,就可以...

2019-01-09 01:55:08 100 0

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

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

2019-01-08 07:04:11 151 0

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

1>何为而分查找?      二分查找针对的是有序的数据集合,每次都是通过跟区间的中间元素对比,将待查找的区间缩小为之前的一半,直到查找到该元素,或者区间缩小为0。 2>二分查找为何这么高效?      我们假设数据的数据量为n,每次查找都会将数据集缩小为原来的一...

2019-01-08 04:26:35 203 0

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

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

2019-01-08 03:49:08 169 0

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