loser与你
码龄6年
关注
提问 私信
  • 博客:60,918
    60,918
    总访问量
  • 74
    原创
  • 2,299,816
    排名
  • 7
    粉丝
  • 0
    铁粉
IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:北京市
  • 加入CSDN时间: 2018-10-30
博客简介:

loser与你

博客描述:
一个小菜鸡
查看详细资料
个人成就
  • 获得34次点赞
  • 内容获得3次评论
  • 获得144次收藏
创作历程
  • 74篇
    2021年
成就勋章
TA的专栏
  • Java基础
    5篇
  • Hadoop
    16篇
  • 数据库
  • leetcode刷题算法
    4篇
  • Spark
  • 计网
    1篇
  • JVM
    6篇
  • Java高并发
    13篇
  • Redis
    15篇
  • Zookeeper
    14篇
兴趣领域 设置
  • 大数据
    hadoophiveredisstormsparketl
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

YARN工作流程

YARN工作流程1.基本架构 YARN总体上仍然是Master/Slave结构,ResourceManager为Master,NodeManager为Slave。ResourceManager负责对每个NodeManager上的资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManager启动可以用一定资源的任务。 YARN主要由ResourceManager、Nod
原创
发布博客 2021.10.09 ·
5902 阅读 ·
5 点赞 ·
0 评论 ·
21 收藏

YARN与MapReduce1的区别

YARN与MapReduce1的区别1.组成对比 MapReduce1中,两类守护进程控制着作业执行过程:一个JobTracker和一个或多个TaskTracker。JobTracker通过调度TaskTracker上运行的任务来协调所有运行在系统上的作业。TaskTracker在运行任务的同时将运行进度报告发送给JobTracker,JobTracker由此记录每项作业任务的整体进度情况。JobTracker同时负责作业调度和任务进度监控。 Hadoop对JobTracker赋予的功能过多造成负载过
原创
发布博客 2021.10.03 ·
1793 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

HDFS客户端写流程

HDFS客户端写流程1.创建文件 首先调用DistributedFileSystem.creat()创建一个空的HDFS文件。 然后这个方法在底层会通过调用ClientProtocol.create()方法通知Namenode执行对应的操作,Namenode会首先在文件系统目录树中的指定路径下添加一个新的文件,然后将创建新文件的操作记录到editlog中。 调用的DistributedFileSystem.creat()方法会返回一个HdfsDataOutputStream对象,这个对象在底层包装了
原创
发布博客 2021.10.03 ·
307 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

HDFS客户端读流程

HDFS客户端读流程1.打开HDFS文件 用户读取一个HDFS文件时,首先会调用open()方法打开这个文件,并获取文件对应的FSDataInputStream输入流,然后在这个FSDataInputStream对象上调用read()方法读取数据。2.从Namenode获取Datanode地址 在DFSInputStream构造方法中,首先会初始化DFSInputStream的属性,然后会调用openInfo()方法从Namenode获取文件对应的数据块位置信息,并将信息保存至其相应字段中。 其首
原创
发布博客 2021.10.03 ·
1035 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

单调栈

单调栈 就是利用一个栈来维持数据的单调性,任意时刻,栈中存放的元素都会是单调的。 单调栈适用于去解决在一串数字中,要获得某个数字其左右两边大小信息的问题,通常是可以将O(n^2)的问题去化为O(n)来解决。 比如,要获得所有数字左边离它最近的小于它的数,和右边离它最近的小于它的数这种问题,就可以使用单调栈。 让栈内保持单调递增,如果遇到小于栈顶元素的数(也就是它加入后会破坏单调性的情况),就出栈,然后记录栈顶元素的信息。对于栈顶元素来说,在栈中它下面压着的数是左边离它最近的小于它的数,而当前让它出栈
原创
发布博客 2021.09.27 ·
271 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

计算机网络分层

计算机网络分层五层
原创
发布博客 2021.09.27 ·
137 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

类加载器

类加载器 类加载器用于实现“通过一个类的全限定名来获取描述该类的二进制字节流”这个动作,这个动作放置在虚拟机外部,以便应用程序可以自己决定如何获取所需的类。 每一个类加载器,都拥有一个独立的类名称空间。对于任意一个类,都必须由加载它的类加载器和这个类本身一起共同确立其在Java虚拟机中的唯一性。 显然,要比较两个类是否相等,不仅要看其是否源于同一个Class文件,还要看它们是否是同一个类加载器加载的。而比较两个类相等,通常是由Class对象的equals()方法、isAssignableFrom()方
原创
发布博客 2021.09.27 ·
136 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

JVM中的类加载机制

JVM中的类加载机制 JVM的类加载机制就是Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型这一过程。 在Java语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的。1.类加载的顺序 一个类型从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期将会经历加载、验证、准备、解析、初始化、使用和卸载七个阶段,其中验证、准备、解析三个部分统称为连接。类的加载过程则按这个顺序进行。2.类加载的时机
原创
发布博客 2021.09.27 ·
113 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

KMP算法

KMP算法 KMP算法就是利用一个next[]数组让子串str2没必要每次匹配失败之后都要去从头开始又和str1的下一个位置匹配,这样一种加速策略能够加速字符串的匹配。而next[]数组中,next[i]表示的是该位置之前的字符串中,前缀子串与后缀子串相同的最大长度。就比如下图,i位置的前缀子串与后缀子串相同的最大长度为2。也就是对于i来说,前缀从0开始往后走,后缀从i-1开始往前走,直到不相遇或者前缀后缀重合为止。 而既然i位置前面这段后缀与从头开始的前缀相等,只是到了i位置之后才匹配不到,而i位置
原创
发布博客 2021.09.23 ·
110 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

并查集

并查集 并查集要解决的问题就是并和查,并就是将两个集合合并成一个新的集合,查就是查两个个元素是否在同一个集合中。 因而其提供给用户的接口也应该为两个,一个isSameSet()方法用于查,一个union()方法用于并。 显然,如果是用链表来实现的话,并是一个O(1)的操作,但是查将会是O(n)的操作;而如果用哈希表来实现的话,查是一个O(1)的操作,但是并将会是O(n)的操作。因而,通常情况下使用的是类似链表+哈希表的形式。 原理就是设置头元素来表示一个集合的起始位置,初始情况下,每个元素就是自己集
原创
发布博客 2021.09.22 ·
135 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

前缀树

前缀树 前缀树,也就是字典树,用来搞单词统计或者匹配前缀时候很有帮助。树的节点可以用来保存一些辅助信息用来做题,而树枝则用来表示字符。 一般在刷题的时候,会遇到单词匹配或者单词统计之类的问题,此时的字符串会被限制为只是字母。这样的话树就更好来表示,就比如对于一个单词表[“a”, “aa”, “ab”, “ab” “b”, “ed”]可以用前缀树表示成下面这样 可以给节点附加pass和end分别表示有多少个字符串经过了该节点,以该节点上方的字符为结尾的字符串的个数。 代码如下://前缀树publi
原创
发布博客 2021.09.17 ·
222 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Datanode中读取数据块的两种方式

Datanode中读取数据块的两种方式1.普通方式 Datanode读取数据块的普通方式在操作系统层面有四步:(1)Datanode首先将数据块从磁盘存储读入操作系统的内核缓冲区(2)在将数据跨内核推到Datanode进程(3)然后Datanode会再次跨内核将数据推回内核中的套接字缓冲区(4)最后将数据写入网卡缓冲区 显然,上面的步骤(2)和步骤(3)进行了两次多余的数据拷贝操作,此时Datanode只是起到缓存数据并将其传回套接字的作用。2.零拷贝方式 Java NIO提供了零拷贝模式
原创
发布博客 2021.09.13 ·
506 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

JVM垃圾收集算法

JVM垃圾收集算法1.标记-清除算法 最基础的垃圾收集算法。 算法分为标记和清除两个阶段:首先标记出所有需要回收的对象,在标记完成后,统一回收掉所有被标记的对象。 缺点: (1)执行效率不稳定,当Java堆中包含大量对象且大部分是需要回收的时候,这时必须进行大量标记和清除工作,导致效率很低。 (2)内存空间的碎片化问题,会产生大量不连续的内存碎片。2.标记-复制算法 目前的商用Java虚拟机多采用此算法。 解决了标记-清除算法的两个缺点。 将可用的内存按容量划分为大小相等的两块,每次只使
原创
发布博客 2021.09.13 ·
105 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Datanode升级机制

Datanode升级机制 Datanode升级机制是通过磁盘文件目录的配合来进行的,其升级可以分为三个步骤。1.升级操作 升级操作就是将Datanode从低版本升级到高版本,主要涉及这三个目录: (1)current目录:保存当前版本数据。 (2)previous.tmp目录:在升级过程中,保存当前版本数据的目录。 (3)previous目录:升级后,保存上一版本数据的目录。 Datanode升级时,会将当前版本数据所在的current目录改名为previous.tmp,然后为新版本数据重建c
原创
发布博客 2021.09.09 ·
224 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

HDFS的联邦机制

HDFS的联邦机制1.HDFS1.X架构 HDFS1.X架构从逻辑上可以分为两层:命名空间管理层和数据块存储管理层。其中数据块存储管理层又分为数据块管理和存储管理两部分。 Namenode实现了命名空间管理层以及数据块存储管理层中的数据块管理功能,而Datanode则实现了数据块存储管理层中的存储管理部分。 HDFS1.X架构使用一个Namenode来管理文件系统的命名空间以及数据块信息,使得HDFS的实现非常简单,但是单一的Namenode会导致以下缺点: (1)由于Namenode在内存中保存
原创
发布博客 2021.09.09 ·
1985 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

Namenode的启动与停止

Namenode的启动与停止 Namenode实体涉及到三个类:NameNode类、NameNodeRpcServer类、FSNamesystem类。NameNode类负责管理Namenode配置、RPC接口以及HTTP接等;NameNodeRpcServer类用于接收和处理所有的RPC请求;FSNamesystem类负责实现Namenode的所有逻辑。1.启动 Namenode的启动操作是在Namenode类中执行的,具体由其main()方法负责。 启动流程如下: (1)NameNode.mai
原创
发布博客 2021.09.09 ·
2820 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

HDFS的高可用HA

HDFS的高可用HA 在Hadoop2.X之前,Namenode是HDFS集群中可能发生单点故障的节点,每个HDFS集群中只有一个Namenode,一旦这个节点不可用,则整个HDFS集群将处于不可用状态。 HDFS的高可用HA方案就是为了解决上述问题而产生的,在HA HDFS集群中会同时运行两个Namenode...
原创
发布博客 2021.09.09 ·
504 阅读 ·
3 点赞 ·
0 评论 ·
4 收藏

Namenode中的安全模式

Namenode中的安全模式 安全模式是Namenode的一种状态,处于安全模式中的Namenode不接受任何对于命名空间的修改操作,同时也不触发任何复制和删除数据块的操作。 Namenode启动时会自动进入安全模式状态,用户可以通过“dfsadmin -safemode value”命令来操作安全模式,这个命令在底层是由DFSClient调用setSafeMode方法实现的。 Namenode启动时会首先加载fsimage文件并且合并编辑editlog文件,完成这些操作之后Namenode的第一关系
原创
发布博客 2021.09.03 ·
2317 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

ConcurrentHashMap实现原理

ConcurrentHashMap实现原理1.HashMap实现原理 HashMap是线程不安全的。HashMap是由数组+链表实现的,当无冲突发生时是在数组中存放,当发生hash冲突时在该位置下面挂链表,链表越长代表冲突越多。在多线程情况下,在put的时候,插入的元素超过了容量就会触发扩容操作,即rehash,此时将该hash表中的元素重新hash到另一个更大容量的hash表,在多线程环境下,存在同时其他元素也在进行put操作,如果hash值相同,可能在同一链表下出现闭环,从而导致出现死循环。2.H
原创
发布博客 2021.09.03 ·
2165 阅读 ·
2 点赞 ·
0 评论 ·
9 收藏

CAS机制

CAS机制 CAS机制是一种无锁策略,使用比较交换的技术来鉴别线程冲突,一旦检测到冲突产生,就重试当前操作直到没有冲突为止。1.CAS算法过程: CAS(V, E, N)包含三个参数,V表示要更新的变量,E表示预期值,N表示新值。仅当V值等于E值时,才会将V的值设为N,如果V值和E值不同,说明已经有其他线程做了更新,当前线程什么也不用做。最后,CAS返回当前V的真实值。 也就是,当前线程要去修改V的时候它看见的V值为E,若在进行修改的时候它还是E说明没有线程修改V,则它可以放心地将V修改为N。若是等
原创
发布博客 2021.09.03 ·
796 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏
加载更多