<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[xiaohao95的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/xiaohao95</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; xiaohao95]]></copyright><item><title><![CDATA[项目启动jar包报错]]></title><link>https://blog.youkuaiyun.com/xiaohao95/article/details/109775995</link><guid>https://blog.youkuaiyun.com/xiaohao95/article/details/109775995</guid><author>xiaohao95</author><pubDate>Wed, 18 Nov 2020 16:11:06 +0800</pubDate><description><![CDATA[出现原因：
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;替换或添加项目中某个引用jar，又不想将整个项目重新打包。启动后报如下错误信息：
Caused by: java.lang.IllegalStateException: Unable to open nested entry 'BOOT-INF/lib/**.jar'. 
It has been compressed and nested jar files must be stored without comp]]></description><category></category></item><item><title><![CDATA[格式化JSON数据]]></title><link>https://blog.youkuaiyun.com/xiaohao95/article/details/108498525</link><guid>https://blog.youkuaiyun.com/xiaohao95/article/details/108498525</guid><author>xiaohao95</author><pubDate>Wed, 09 Sep 2020 18:28:09 +0800</pubDate><description><![CDATA[格式化JSON数据
本文仅限内网无法访问json.cn
package com.xiaohao.toJson;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import]]></description><category></category></item><item><title><![CDATA[shell脚本]]></title><link>https://blog.youkuaiyun.com/xiaohao95/article/details/108496996</link><guid>https://blog.youkuaiyun.com/xiaohao95/article/details/108496996</guid><author>xiaohao95</author><pubDate>Wed, 09 Sep 2020 18:16:12 +0800</pubDate><description><![CDATA[shell脚本
shell将表达式值付给变量：
str=a1b2c3d4
num=$(echo ${str} | tr -cd "[0-9]")

输出为：1234（这里提取了数字）
shell脚本每隔几个字符插入分隔符
str=aaabbbccc
echo ${str} | sed 's/.../&amp;+/g'

输出为：aaa+bbb+ccc
注：.代表每隔几个字符+代表插入的分隔符

...]]></description><category></category></item><item><title><![CDATA[优快云博客排版格式入门]]></title><link>https://blog.youkuaiyun.com/xiaohao95/article/details/90730310</link><guid>https://blog.youkuaiyun.com/xiaohao95/article/details/90730310</guid><author>xiaohao95</author><pubDate>Sat, 01 Jun 2019 16:13:45 +0800</pubDate><description><![CDATA[优快云采用的Markdown编辑器，在目前使用时，有些自己常用的排版格式，这里记录一下。
1.首行缩进
&amp;emsp;&amp;emsp;  //全角缩进，相当于缩进两个汉字
&amp;ensp;&amp;ensp;  //半角缩进，相当于缩进两个英文标点
2.图片调整大小
首先上传一个图片，得到它的URL地址
&lt;img width=60% src="https://img-blog...]]></description><category></category></item><item><title><![CDATA[zookeeper的集群选举]]></title><link>https://blog.youkuaiyun.com/xiaohao95/article/details/90729980</link><guid>https://blog.youkuaiyun.com/xiaohao95/article/details/90729980</guid><author>xiaohao95</author><pubDate>Sat, 01 Jun 2019 15:52:12 +0800</pubDate><description><![CDATA[集群选举类型：全新集群选举与非全新集群选举。
**全新集群选举**：假设现在有5台服务器均没有数据，它们的编号分别是1，2，3，4，5，按编号依次启动。过程如下：

	1. 服务器 1 启动，给自己投票，然后发投票信息给其他服务器，由于其他服务器没有启动，所以它收不到反馈信息，但是由于投票还没有到达半数（服务器 1 怎么知道一共有多少台服务器参与选举呢， 那是因为在zk配置文件中配置了集群信息，所...]]></description><category></category></item><item><title><![CDATA[HDFS的四大机制]]></title><link>https://blog.youkuaiyun.com/xiaohao95/article/details/90724033</link><guid>https://blog.youkuaiyun.com/xiaohao95/article/details/90724033</guid><author>xiaohao95</author><pubDate>Fri, 31 May 2019 22:35:58 +0800</pubDate><description><![CDATA[（1）心跳机制：
  介绍： hdfs是主从架构，所有为了实时的得知dataNode是否存活，必须建立心跳机制，在整个hdfs运行过程中，dataNode会定时的向nameNode发送心跳报告已告知nameNode自己的状态。
   心跳内容：
     - 报告自己的存活状态，每次汇报之后都会更新维护的计数信息
     - 向nameNode汇报自己的存储的block列表信息
   心跳报告周...]]></description><category></category></item><item><title><![CDATA[spark中reduceByKey、groupByKey、combineByKey的区别]]></title><link>https://blog.youkuaiyun.com/xiaohao95/article/details/89603166</link><guid>https://blog.youkuaiyun.com/xiaohao95/article/details/89603166</guid><author>xiaohao95</author><pubDate>Sat, 27 Apr 2019 16:17:37 +0800</pubDate><description><![CDATA[reduceByKey
reduceByKey用于对每个key对应的多个value进行merge操作，最重要的是它能够在本地先进行merge操作，并且merge操作可以通过函数自定义；

groupByKey
groupByKey也是对每个key进行操作，但只生成一个sequence，groupByKey本身不能自定义函数，需要先生成RDD，然后才能对此RDD通过map进行自定义函数操作

比较发...]]></description><category></category></item><item><title><![CDATA[数据倾斜以及spark的shuffle过程]]></title><link>https://blog.youkuaiyun.com/xiaohao95/article/details/89599483</link><guid>https://blog.youkuaiyun.com/xiaohao95/article/details/89599483</guid><author>xiaohao95</author><pubDate>Sat, 27 Apr 2019 11:30:01 +0800</pubDate><description><![CDATA[Spark性能优化指南——高级篇（美团技术团队）

]]></description><category></category></item><item><title><![CDATA[简要mapReduce中的shuffle过程]]></title><link>https://blog.youkuaiyun.com/xiaohao95/article/details/89598723</link><guid>https://blog.youkuaiyun.com/xiaohao95/article/details/89598723</guid><author>xiaohao95</author><pubDate>Sat, 27 Apr 2019 10:43:55 +0800</pubDate><description><![CDATA[1、MapTask工作机制
（1）Read阶段：MapTask通过用户编写的RecordReader，从输入InputSplit中解析出一个个key/value。
（2）Map阶段：该节点主要是将解析出的key/value交给用户编写map()函数处理，并产生一系列新的key/value。
（3）Collect收集阶段：在用户编写map()函数中，当数据处理完成后，一般会调用OutputColle...]]></description><category></category></item><item><title><![CDATA[NameNode与SecondaryNameNode]]></title><link>https://blog.youkuaiyun.com/xiaohao95/article/details/89564876</link><guid>https://blog.youkuaiyun.com/xiaohao95/article/details/89564876</guid><author>xiaohao95</author><pubDate>Fri, 26 Apr 2019 17:30:28 +0800</pubDate><description><![CDATA[一、secondarynamenode工作机制
1）第一阶段：namenode启动
（1）第一次启动namenode格式化后，创建fsimage和edits文件。如果不是第一次启动，直接加载编辑日志和镜像文件到内存。
（2）客户端对元数据进行增删改的请求
（3）namenode记录操作日志，更新滚动日志。
（4）namenode在内存中对数据进行增删改查
2）第二阶段：Secondary Name...]]></description><category></category></item><item><title><![CDATA[HDFS的存储机制]]></title><link>https://blog.youkuaiyun.com/xiaohao95/article/details/89561088</link><guid>https://blog.youkuaiyun.com/xiaohao95/article/details/89561088</guid><author>xiaohao95</author><pubDate>Fri, 26 Apr 2019 17:13:21 +0800</pubDate><description><![CDATA[HDFS存储机制，包括HDFS的写入过程和读取过程两个部分：]]></description><category></category></item></channel></rss>