自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 资源 (1)
  • 收藏
  • 关注

原创 aws-java-sdk-s3 1.x版本客户端操作minio浅析

s3协议本身是基于http协议,所以发送和接收数据等均要符合http协议,而aws sdk又是基于apache http client的,所以先看下http的部分。本文是基于minio做的研究。

2026-10-08 17:38:38 307

原创 浅谈对象存储设计思路

对象存储最早诞生于aws,猜测是当时的文件系统无法满足存储aws本身海量的图片,视频等要求,所以诞生了s3。

2026-07-22 12:14:10 324

原创 浅谈linux文件系统

在ext4和xfs的基础上,还有一层vfs(vistriual file system),vfs存在的原因是: 如果没有一个外层的文件系统对接各个文件系统的话,用户态操作不同的文件系统时得适配不同的接口。linux为什么需要文件系统?如果没有文件系统,linux用户态进程就可以直接操作硬盘,而且用户态得自己维护硬盘上的数据而且不同用户态的进程可能会覆盖磁盘上的数据。ext4对小文件比较友好,xfs对大文件比较友好。f2fs适合在安卓上使用。linux支持多种文件系统,例如:ext系列,xfs,f2fs等。

2026-07-14 14:12:21 220

原创 浅谈统一存储设计思路

3,元数据要有树状结构且能横向扩展。(原因:客户端需要知道数据存放的结构,元数据服务如果不能扩展则会出现元数据过大导致瓶颈问题的出现,所以必须要能横向扩展)6,必须具备高性能读写的能力(data节点建议采用条带式写入以充分利用集群节点性能)1,具备元数据服务。(原因:如果没有元数据服务,服务不知道数据存在哪)(原因:兼容各种协议的存储服务,例如s3,hdfs)5,必须具备高可用结构(建议使用paxos或raft)。4,必须具备生命周期服务。

2026-04-08 19:29:21 256

原创 hdfs命令解析

2,打开 org.apache.hadoop.fs.FsShell 这个类 ,找到main方法,发现最终调用的是 ToolRunner.run(shell, argv);可以看到 org.apache.hadoop.fs.FsShell -ls / 这个命令出现了。在生产中,经常会执行hdfs 命令操作,现在从源码的角度来看,执行这个命令都经历了哪些过程。后续其他的命令看起来就容易了。

2026-02-27 19:50:07 74

原创 hdfs设计的局限性和不合理之处

1,ReentrantReadWriteLock,这是比较大的锁。hdfs在所有对元数据进行操作的时候,均会操作这把锁,这个hdfs元数据的瓶颈之处。5,client,datanode 和namnode通信均使用同一个端口,同一个端口使用的是同样的线程处理,经常造成NotReplicatedYetException的问题(解决办法是拆开)(随着硬件的发展,现在存储服务已经不采用这个方式了,基本采用的是客户端同时写三个副本或者先写主再从主复制到从)2,hdfs的设计,先写入元数据,再写入数据。

2026-02-26 20:27:20 58

原创 hdfs的经典设计

2,元数据采用Reactor的设计模式,异步接收客户端的请求,并将请求放入queue中,数据传输失败就将队列中的数据再发送一次。异步的方式不会造成客户端等待。7,心跳机制,增量汇报确保了新写入的数据及时更新到元数据中,全量汇报进行兜底,万一有数据损坏或丢失,检测时间相对及时,将影响降低到最小。3,副本机制,数据有备份不会丢失,在早期客户端性能不给力的阶段采用Pipeline的模式节省了客户端的带宽和性能。5,HA的设计,保障了元数据的稳定,即使主节点挂了,备节点也能很快的接管。4,顺序读写,这个不用多言。

2026-02-21 21:15:55 111

原创 hdfs写入数据流程分析

以Put文件为例:

2026-02-16 16:52:55 44

原创 namenode启动流程分析

从namenode角色分析,namenode主要负责管理元数据,那namenode启动的过程必须要经过加载元信息的过程。过程和web页面显示的一样。namenode退出安全模式后,接收来自dn的心跳,来自客户端的读写请求。

2026-02-15 21:38:54 44

原创 DataNode启动流程分析

(其中块汇报又分为增量汇报和全量汇报)1,心跳服务(负责将自身状况报告给namenode)2,写入数据的服务。

2026-02-15 12:13:20 49

原创 hdfs ipc通信Server解读

org.apache.hadoop.ipc.Server类是 hdfs通信的核心类。无论namenode还是datanode,均使用该类作为ipc通信的核心类。可以看到 bind()方法是在 Server类的内部被申明,同时可以看到使用的是阻塞式io来占用8020端口。Listener类为Server类的内部类,该类主要负责占用并监听8020端口。// 使用阻塞式IO?

2026-01-31 17:24:20 91

原创 x86 macos上使用idea编译hdoop2.6-cdh-5.14

因为工作原因,需要使用到hdoop2.6-cdh-5.14。现在梳理下 x86 macos 编译hdoop2.6-cdh-5.14 有多坑。2,macos在安装jdk的时候,路径带了空格,maven不认得。只能使用双引号来创建快捷方式+使用 compile插件的方式来解决。1,jdk,按官网必须上1.7,1.8会有问题。ubuntu上已经验证过了,此次换到苹果,果断使用1.7(后续还有坑,先不说)1,maven使用了jre,而非jdk编译,导致会出现找不到tool.jar的问题。4,编译hadoop。

2026-01-24 17:04:42 237

转载 JAVA创建XML格式字符串

package com.util.utils;import java.util.List;import org.jdom.Document;import org.jdom.Element;import org.jdom.output.XMLOutputter;import org.springframework.stereotype.Service;@Service("Cr

2014-07-02 14:35:38 521

转载 使用freemarker生成XML字符串

1、使用FreeMarker需要freemarker-2.3.8.jar,当然,也有其他版本的2、在java工程里面建如下图的包路径 org.test是顶层包,test.java是测试类,里面就一个main方法,调用MessageTempleteManager的方法。MessageTempleteManager负责生成xml;templete包下面放

2014-07-02 14:33:29 1168

转载 CXF 2.6.1 中WSDL2Java自动生成代码super出错

出错位置:[java] view plaincopyprint?public GetUserInfoService() {         super(WSDL_LOCATION, SERVICE);     }            /**     *     * @return     *     retu

2014-06-26 16:04:23 499

转载 linux上安装jdk6

JDK1.6在LINUX下的安装是如何进行的呢,让我们开始我们的演示:  Ubuntu Linux下jdk的安装与配置  从sun公司网站www.sun.com下载linux版本的jdk,我下载的版本是JDK 6 Update 7,  地址http://java.sun.com/javase/downloads/index.jsp  jdk-6u7-linux-i586.bin,打

2014-04-18 17:15:07 572

原创 linux下使用JMX监控tomcat

修改Tomcat目录下的bin\catalina.sh  在该文件中查找set JAVA_OPTS=%JAVA_OPTS%,下面有一行为:  rem ----- Execute The Requested Command ---------------------------------------  在这一行的下面加[ $1 != "stop" ] && JAVA

2014-02-27 20:23:31 628

转载 jconsole 远程监控 jboss

Java 5.0采用JMX方式提供了一系列监视和管理虚拟机的API,随SDK一起发布的JConsole则是采用这些API实现监控虚拟机的使用工具。JConsole能够提供被监控虚拟机的内存、线程、类的加载以及MBean等信息,从而能够对服务器的运行情况进行实时监控。1、环境服务器:Redhat Linux ES 3.0 + JDK 1.5.06 + Jboss 4.0.2       

2014-01-13 19:48:44 748

原创 趣味程序题

昨天偶尔看到一个题目,有8个盘子排成一排,有3个苹果,要将这三个苹果放入盘子中,问有多少中排法,左边连续排三个和右边连续排三个为不同的排法,用程序实现。程序如下:public class Handle {private static int flag = 0;public static void main(String[] args){new Handle().

2011-11-16 17:26:18 495

测试minio的包,可以看看,不需要积分

测试minio的包,可以看看,不需要积分

2026-08-15

设计模式-java版

这是设计模式的书,java编写的,内容比较简单

2012-06-15

空空如也

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

TA关注的人

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