自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

呼吸

努力本身就是一种天赋,学习本身就是一种能力

  • 博客(213)
  • 收藏
  • 关注

原创 MapReduce内存参数自动推断

MapReduce内存参数自动推断。在Hadoop 2.0中,为MapReduce作业设置内存参数非常繁琐,涉及到两个参数:mapreduce.{map,reduce}.memory.mb和mapreduce.{map,reduce}.java.opts,一旦设置不合理,则会使得内存资源浪费严重,比如将前者设置为4096MB,但后者却是“-Xmx2g”,则剩余2g实际上无法让java heap使用到。对应patch。

2024-03-05 18:18:29 1040

原创 java 程序堵塞的排查方式

从 主线程(#1)进行查看,先分析 主线程在什么停顿,通过主线程的调用栈,就可以大概了解 整个程序的逻辑。然后 将其他线程的调用栈信息进行查看汇总,结合代码,基本就可以确定 堵塞的方法。如果 有日志的话,查看日志的最后打印信息,帮助快速定位问题。## 常见的堵塞1 read 等待 输入流2 wait 之后没有执行notify3 存在线程一直死循环,抢占了资源。## 死锁问题先确实是否死锁问题,使用arthas ,执行 thread -b 命令。不是死锁问题,执行 jstack 命令 保留 当前执行命令。

2023-12-29 14:20:24 454

原创 Fix potential FSImage corruption.

总结一下,生成 FSImage 文件的过程主要包括将文件系统的元数据序列化为 Protobuf 格式并将其存储在文件中。XAttrFormat用于定义XAttr格式的接口,并提供了序列化和反序列化方法,而XAttrStorage则是用于管理XAttr存储的类,提供了读取、写入和删除XAttr的方法。增加了 name ,max变量,用current来替代之前的 max,用来判断边界值的情形发生了变化,用sn>max 更专缺,sn<0 意味着已经超过Integer的最大值,可能比表的范围更大。

2023-04-18 15:03:21 259

原创 DataNode 日志异常--- “DataXceiver error processing unknown operation”

因为datanode并没有处理空内容的逻辑,发生这种情况时,DataNode会遇到意外的EOF,并记录完整的栈跟踪。DataNode 日志出现以下异常“ DataXceiver error processing unknown operation src: /127.0.0.1:xx dst: /127.0.0.1:50010”这个可以忽略,服务是正常的,或者使用 https://issues.apache.org/jira/browse/HDFS-9572里的patch。

2023-03-15 11:12:09 594

原创 加速HDFS集群 RaidNode数据 退役的方法

加速集群退役的方法,结合以往的经验和当前的信息看,阻碍集群退役的block都是RaidNode数据。

2023-03-13 11:25:25 299

原创 FB版本RaidNode线程分析——BlockIntegerMonitor

文章目录FB版本RaidNode线程分析——BlockIntegerMonitor概述具体代码线程的创建和启动线程的实现代码(Dist模式)FB版本RaidNode线程分析——BlockIntegerMonitor概述RaidNode上的BlockIntegrityMonitor线程会通过DFSck工具检查系统中corrupt或decomission的数据,通过BlockCopier和BlockFixer线程周期行对出错的数据进行修复。local模式下,修复过程在RaidNode上之行,Dist模式

2022-03-25 17:57:20 259 2

原创 HDFS遍历子目录 Hadoop fs -ls -R path

/hadoop fs -help cmd 可以看命令的介绍hadoop fs -help ls22/03/24 18:47:41 INFO conf.Configuration: Current hadoop.security.authentication = simple-ls [-d] [-h] [-R] [-t] [-S] [-r] [-u] [ …] :List the contents that match the specified file pattern. If path is n

2022-03-24 19:49:02 2502

原创 FB版本RaidNode线程分析——PlacementMonitor、PurgeMonitor

文章目录概述PurgeMonitorPlacementMonitor线程实现细节线程的创建和运行PlacementMonitor线程的运行细节PurgeMonitor线程的运行细节概述PurgeMonitorPurgeMonitor主要对过期失效的parity文件、目录进⾏行删除。 PurgeMonitor最主要的是确定purge的元素,它是通过DirectoryTraversal来对进⾏行遍历, 需要提供check⽅方法,来确定返回符合purge条件的元素。!首先是对directory进⾏行purg

2022-03-21 11:34:08 191

原创 DataNode启动分析

DataNode启动分析主方法DataNode通过DataNode.java的main方法进行启动,因为经过的方法太多,只说几个重点的。secureMain方法public static void secureMain(String args[], SecureResources resources) { try { StringUtils.startupShutdownMessage(DataNode.class, args, LOG); DataNode data

2021-11-12 09:36:12 1231

原创 HDFS写文件异常

HDFS写文件异常上传文件时发生hdfs.DFSClient: DataStreamer Exceptionorg.apache.hadoop.ipc.RemoteException(java.io.IOException): File /VERSION.txt.COPYING could only be replicated to 0 nodes instead of minReplication (=1). There are 3 datanode(s) running and no node(s

2021-11-05 10:52:25 481

原创 HDFS安装和启动出错的修复步骤

HDFS安装和启动出错的修复步骤问题:对于HDFS的安装过程中,导致HDFS不能正常启动,表现为 NameNode is not format,或者clusterId不匹配。对于这种情况,随意地格式化NameNode不一定能解决问题,因为NameNode格式化会生成新的clusterId,导致集群中的其他服务器的ID与其不匹配,不能进行连接。步骤1.start all journalnodejournalnode 是复制集群之间的通信,必须启动它,保证集群之间的正常交互。2.stop all d

2021-11-04 11:17:32 959

原创 HDFS的全量块汇报以及Hadoop在2.x版本提供的限流优化

HDFS的全量块汇报以及Hadoop在2.x版本提供的限流优化问题背景在DataNode与NameNode的交互中,有大量的数据得不到处理,使得DataNode的增量块汇报不能及时处理,文件出现不能正常关闭等现象。在DataNode与NameNode的交互中,有三种形式,心跳报告,增量快汇报,全量块汇报。其中处理全量块汇报需要的时间和资源是其他汇报的数倍,且全量块汇报不需要立即处理,在HDFS中减少全量块汇报,使得系统有更多的资源去处理增量块汇报。全量块汇报的流程[外链图片转存失败,源站可能有防盗链

2021-10-20 19:31:27 886

原创 HDFS写流程

本次学习全程参看于Jin’s Blog文章目录HDFS写流程概述create方法客户端:NameNode端:write方法客户端:概述:数据传输格式具体流程线程操作NameNode端选择DN(主要)更新元信息DataNode端初始阶段时序图close方法客户端:NameNode端:block状态流程:故障恢复clinetHDFS写流程概述![img](https://i.loli.net/2021/09/22/jV1yI5NiOhQbYwe.pngHDFS写流程就是我们通过客户端向HDFS写入

2021-10-14 10:29:36 87

原创 HDFS读流程

文章目录HDFS读流程读流程的概述读流程大体步骤对逻辑图的解释读流程代码剖析OPEN方法客户端类关系图**客户端方法关系图**NameNode数据存储逻辑图**服务端方法关系图****对Block列表进行排序**剖析READ方法数据传输格式客户端方法关系图服务端方法关系图数据的检验对checkSum的检验对packet的检验读异常与恢复Q&AHDFS读流程读流程的概述]读流程大体步骤读流程就是client向HDFS读取数据的过程,分成三个部分,其大体步骤:客户端通过调用FileSyste

2021-09-03 16:38:39 876 1

原创 LeetCode 164.最大间距

要求时间和空间复杂度是O(n).有两种思路:基数排序和桶排序。基数排序:import java.util.Arrays;/** * @author hehao * @create 2020-11-26 17:11 */class Solution { public int maximumGap(int[] nums) { int length = nums.length; if (length<2){ return 0;

2020-11-26 17:41:11 110

原创 LeetCode 127. 单词接龙

方法一:简单的广搜对于import javax.swing.plaf.basic.BasicScrollPaneUI;import java.util.*;class Node implements Comparable{ String s; int count; public Node(String s, int count) { this.s = s; this.count = count; } @Override

2020-11-15 20:32:11 104

原创 无序链表的排序

采用的是归并排序的算法,时间复杂度O(nlogn)package Demo1;/*package Demo1;public class LinkedNode { int value; LinkedNode next; public LinkedNode(int value) { this.value = value; this.next=null; }} */public class LinkedListSort {

2020-11-04 21:37:46 836

原创 关于剑指Offer刷题的一些个人理解

题目不在于多,而对于精,你可能把这些题都写了一遍,但下次不一定能答上来。我就卡在之字形打印树和反转链表这两道题上(当时有点沙雕了)。另外不管你把这些题写了几遍,看一看剑指offer这本书还是会受益匪浅的。我觉得如果把剑指offer真的写会了,直接去刷LeetCode上的hard题就可以了。...

2020-10-31 08:55:16 597

原创 剪绳子

用DP来实现当绳子长度为2,3时需要特判。其他情况f[i]=Math.max(f[i],j*f[i-j]);public class Solution { public int cutRope(int target) { if(target==2){ return 1; } if(target==3){ return 2; } int f[]=new int[ta

2020-10-31 08:45:36 74

原创 机器人的运动范围

简单的一道广搜题,我看大部分题解都是用二维数组来标记是否点被访问过,可能会造成空间浪费,用HashMap以String作为key的方法来解一下。import java.util.*;class Node{ int x,y; Node(int x,int y){ this.x=x; this.y=y; }}public class Solution { static HashMap<String,Boolean>map;

2020-10-24 09:50:26 71

原创 矩阵中的路径

public class Solution { boolean flag=false; int xx[]={-1,1,0,0}; int yy[]={0,0,1,-1}; boolean vis[][]; public boolean hasPath(char[] matrix, int rows, int cols, char[] str) { vis=new boolean[rows][cols]; int l=str.le

2020-10-20 21:07:42 347

原创 四人过桥问题与扩展(DP,其实也可以看成贪心)

4个人在晚上过一座小桥,过桥时必须要用到手电筒,只有一枚手电筒,每次最多只可以有两人通过, 4个人的过桥速度分别为1分钟A、2分钟B、5分钟C、10分钟D,试问最少需要多长时间4人才可以全部通过小桥?答案是17分钟先让A,B过桥(2分钟),再让A返回(1分钟),然后C,D一起过桥(10分钟),B返回(2分钟),最后A,B一起过桥(2分钟)。我们来想一下这个过桥问题的能减少时间的地方:让过桥时间少的人来传递手电筒让过桥时间相差最小的两个人一起过桥(两人过桥取两者时间最大值)解决思路:针对.

2020-10-16 17:44:56 890

原创 十万个随机数冒泡排序和快速排序

package Demo1;public class Main { static void bubbleSort(int a[]){ int length=a.length; for(int i=0;i<length;i++){ for(int j=1;j<length-i;j++){ if(a[j-1]>a[j]){ int num=a[j-1];

2020-10-15 19:16:36 1810

原创 滑动窗口的最大值

使用了单调队列,队列最长为size,队列的元素顺序是从大到小,因为一个元素位置靠前,并且值很小,那它就不可能被取到。两个关系if(当前元素位置-队首元素位置>=size) 队首元素出队while(当前元素大于队尾元素) 队尾元素出队代码如下;//package Demo1;import java.util.*;public class Solution { public ArrayList<Integer> maxInWindows(int

2020-10-06 15:08:25 69

原创 数据流中的中位数

思想:建立两个排序碓(优先队列),大根堆和小根堆。个数为奇数时,元素存大根堆,放count-count/2的小数。个数为偶数时,元素存小根堆,放count/2的大数。当个数为奇数时if(元素>小根堆的堆顶) swap(元素,小根堆的堆顶)元素加入大根堆偶数时if(元素<大根堆的堆顶) swap(元素,大根堆的堆顶)元素加入小根堆代码如下import java.util.Comparator;import java.util.PriorityQueu

2020-10-06 14:42:33 85

原创 二叉搜索树的第k个结点

/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { TreeNode node; int num; int m; TreeNode KthNode(Tr

2020-09-30 21:18:09 75 1

原创 序列化二叉树

/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { String ss; int k; String Serialize(TreeNode root) {//序

2020-09-30 21:11:53 72

原创 把二叉树打印成多行

import java.util.ArrayList;import java.util.Queue;import java.util.LinkedList;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public c

2020-09-20 20:36:49 67

原创 按之字形顺序打印二叉树

import java.util.ArrayList;import java.util.Stack;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { public Ar

2020-09-20 18:33:00 51

原创 对称的二叉树

/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { boolean flag=true; boolean isSymmetrical(TreeNode pRoot)//

2020-09-16 19:46:08 51

原创 二叉树的下一个结点

/*public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode next = null; TreeLinkNode(int val) { this.val = val; }}*/public class Solution { TreeLinkNode ans=null; pu

2020-09-15 19:58:26 71

原创 删除链表中重复的结点

/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode deleteDuplication(ListNode pHead)///使用了辅助空间 避免了头结点需要删除的复杂情况 { if(pHead==n

2020-09-14 18:31:24 94

原创 链表中环的入口结点

/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode EntryNodeOfLoop(ListNode pHead) { ListNode fast=pHead; ListNode

2020-09-13 20:59:37 74

原创 字符流中第一个不重复的字符

import java.util.Queue;import java.util.LinkedList;public class Solution { //Insert one char from stringstream int a[]=new int[128];///存储字符出现的次数 Queue<Character>queue=new LinkedList<Character>();///存储只出现一次的字符 public void Inser

2020-09-12 15:46:38 57

原创 表示数值的字符串

public class Solution { public boolean isNumeric(char[] str) {///模拟 字符串根据e E分成两部分 int l=str.length; int i; int flag=0;///小数点出现的次数 boolean num=false; for(i=0;i<l;i++){//第一部分 if(i==0&&(str[i]

2020-09-11 17:34:57 57

原创 正则表达式匹配

public class Solution { public boolean match(char[] str, char[] pattern)//本题注意str不含'.'和'*' { int l1=str.length; int l2=pattern.length; return dfs(str,0,l1,pattern,0,l2);//此题利用递归来实现 } boolean dfs(char []str,int k1,int

2020-09-10 09:53:57 71

原创 Ubantu键盘输出不匹配

之前一直用实验楼的Linux环境,今天自己装了一个虚拟机,发现键盘输出不匹配。1打开文本输入设置, 查看键盘布局(有个键盘图标),看看键盘布局与你的键盘匹不匹配2如果不匹配,新增一个你想要的输入源,同时查看它的键盘布局与你的键盘匹不匹配即可...

2020-06-21 07:40:18 655

原创 Linux命令

文章目录解压打包压缩文件钉钉解压打包压缩文件tar -xvf /tmp/etc.tar //打开tar打包文件tar -zxvf /tmp/etc.tar.gz //解压以gzip压缩的文件tar -jxvf /tmp/etc.tar.bz2 //解压以bzip2压缩的文件tar -Zxvf /tmp/etc.tar.Z //解压以compress压缩的文件钉钉...

2020-06-20 20:02:57 168

转载 vm虚拟机中的虚拟网络编辑器出现 不能更改网络为桥接:已经没有桥接的主机网络适配器的 解决方案

原链接:https://zhidao.baidu.com/question/315156956.html今天在家安装VM虚拟机发生错误,搜了一半天,发现这个解决方法不错。第一步可以默认跳过。1、第一步,确定本地的有线和无限网卡支持VM桥接2、第二步,设备管理器中的驱动设备正常加载,但是注意这两个虚拟网卡是有问题的3、第三步,将虚拟机里的网络设置删除4、第四步,清空网卡后点击恢复默认设置...

2020-06-18 17:05:30 4613

原创 字符串字母变大写

1 数组遍历#include <iostream>using namespace std;int main(){ string s("Hello World"); int length=s.length(); for(int i=0;i<length;i++){ s[i]=toupper(s[i]); } cout<<s<<endl; return 0;}2 使用引用#includ

2020-06-16 22:15:54 278

空空如也

空空如也

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

TA关注的人

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