自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

走在前往架构师的路上

专注于分布式计算,大数据,数据挖掘,机器学习算法等领域的研究

原创 HDFS精华文章汇总

前言自2015年下半年起,笔者开始写关于Hadoop的文章(主要集中在HDFS),包括源码分析类的,问题分析解决又或者是内部机制剖析。这些文章目前汇总数量已经达到70+篇。这些文章对于笔者来说是一个宝贵的资料,这些文章见证了笔者从一名Hadoop贡献者成长为Hadoop Committer的过程。...

2017-12-03 11:45:14 4523 2

原创 18大经典数据挖掘算法小结

本文所有涉及到的数据挖掘代码的都放在了我的github上了:https://github.com/linyiqun/DataMiningAlgorithm 大概花了将近2个月的时间,自己把18大数据挖掘的经典算法进行了学习并且进行了代码实现,涉及到了决策分类,聚类,链接挖掘,关联挖掘,模式挖掘等等...

2015-02-27 10:04:01 16449 17

原创 Redis源码分析(三十六)--- Redis中的11大优秀设计

坚持了一个月左右的时间,从最开始的对Redis的代码做分类,从struct结构体分析开始,到最后分析main主程序结束,中间,各大模块的代码逐个击破,学习,总之,收获了非常多,好久没有这么久的耐心把一个框架学透,学习一个框架,会用那只是小小的一部分,能把背后的原理吃透才是真功夫。在这个学习的最后阶...

2014-11-08 10:16:37 19351 6

原创 HDFS和Ozone的数据删除原理对比思考

文章目录前言现有HDFS删除操作的性能问题HDFS删除操作的brainstorm改进想法相关设计:Ozone系统内的删除操作处理 前言 前段时间笔者一直在折腾HDFS大目录删除的性能问题,也尝试了很多不同的方案来降低大目录删除所带来的性能影响,包括改INodeDirectly内部child li...

2020-05-31 17:17:59 51 0

原创 提高RPC Server throughput的请求延时回复处理

文章目录前言 前言 在一套完整的分布式系统中,client端向server端发起一个请求,然后client等待此请求被server端处理完毕,然后接受到serve的返回结果。自此一个请求就算作是被处理完了。这种block等待处理结果的请求处理行为在我们日常的系统中十分的常见。但是这种处理方式的一...

2020-05-24 23:40:18 80 0

原创 分布式系统内部RetryCache机制

前言 在分布式系统的运行过程中,出现网络不稳定(例如网络超时)导致的client请求回复超时是时有发生的事。在这种低概率发生的情况下时,client端其实是无法感知它的请求是不是真正的被处理了,它只能是基于坏的情况(即请求没被server处理的情况),然后执行重试操作。问题就出现在这里,对于某些...

2020-05-17 10:28:15 146 0

原创 HDFS federation集群间的数据Balance工具方案

文章目录前言粗粒度的federation Balance方案系统化的federation Balance工具方案引用 前言 在目前单一大HDFS集群越来越无法支撑我们的业务场景时,越来越多的公司开始考虑采用HDFS federation方案来做。这里就自然会衍生出一个问题:新federation...

2020-05-09 11:49:24 104 0

原创 Hadoop ViewFs的多Replication模式:Nfly link模式

文章目录前言Nfly link模式的由来 前言 在多集群模式下,为了保证数据的一定冗余性要求,我们有时会跨集群或跨data center去备份一些重要的数据。这样可以避免某天一旦一个cluster或者data center处于不可用状态时,从而影响集群正常的数据服务。如果在不额外实现此功能代码的...

2020-05-04 15:46:12 102 0

原创 Hadoop ViewFs允许hdfs schema的重载

文章目录前言Hadoop ViewFs的问题痛点Hadoop ViewFs的重载hdfs schema方式ViewFs的mount point中心化管理问题引用 前言 在大数据时代,随着业务的迅速扩张,很多大公司往往内部会有多cluster模式来支撑其内部的数据体量。在这期间就会涉及到一个多集群...

2020-05-03 11:53:07 88 0

原创 Apache Ratis中的multi-raft实现原理

文章目录前言Single-Raft模式Multi-raft改进引用 前言 在之前笔者写过一篇关于Ozone利用Apache Ratis multi-raft功能来提升其系统的throughput的文章(Ozone Multi-Raft机制对于更大throughput处理量的支持),不过那篇博文只...

2020-05-01 12:02:53 145 0

原创 HDFS大目录文件删除方案的实践思考

文章目录前言HDFS的大目录删除行为HDFS大目录删除实现方案思考引用 前言 前面几篇文章笔者讲述了2篇关于文件目录删除的相关文章,也提到了一些相对应的解决方案和思路。不过笔者本文想再谈谈对于这个问题的一些思考,主要关注在HDFS下大目录的删除性能影响方面。不敢说是谈论的是HDFS大目录删除的最...

2020-04-26 23:34:07 121 0

原创 Ozone SCM HA设计浅谈

文章目录前言SCM HA相较于OM HA的区别点SCM HA服务内存状态数据一致性的控制Follower SCM内部管理服务的“失效”处理SCM HA failover行为处理SCM HA的整体架构图引用 前言 在前面的文章中,笔者写过关于Ozone OM HA实现的相关文章(Ozone OM服...

2020-04-21 23:17:31 190 0

原创 文件系统大目录下的操作性能效率提升

文章目录前言现有HDFS大目录文件操作效率基于哈希分区的多List目录存储结构HashedArrayList的element的索引查找HashedArrayList的代码实现HashedArrayList性能测试引用 前言 在文件系统的存储中,我们一般不建议是一个目录下存放过多的文件或子目录。因...

2020-04-11 18:08:21 243 0

原创 一个SkipList简单跳表的实现

文章目录前言SkipList样例结构SkipList样例代码简单实现 前言 上一篇文章笔者写了关于HDFS使用SkipList跳表的结构来加速Snapshot的diff比较过程,然后加速HDFS大Snapshot删除的过程(此部分文章可阅读上篇博文:聊聊HDFS删除Snapshot行为导致的Na...

2020-04-04 11:44:15 141 0

原创 聊聊HDFS删除Snapshot行为导致的NameNode crash

文章目录前言HDFS的Snapshot以及delete Snapshot行为基于SkipList的Snapshot diff预先合并引用 前言 关于HDFS的快照,使用过的同学对于这个功能还是持正面评价居多的吧。这个特性所能带给我们最大的好处就是防止用户误删数据导致数据丢失的问题了。从数据保护层...

2020-04-01 22:45:16 164 0

原创 Ozone基于Resource的细粒度化锁管理器实现

文章目录前言全局锁的细粒度拆分化Ozone内部基于Resource的锁管理器模型Ozone内部锁管理器实现 前言 众所周知在HDFS中,为了保证元数据更新的一致性,它所使用的是全局锁的模式。不过这在一定模式下会导致激烈的锁竞争的情况发生,尤其当集群规模日趋膨胀的时候,获取锁的这种代价就会变得越来...

2020-03-23 22:37:26 176 0

原创 Ozone Block Chunk文件的layout方式

文章目录前言Ozone Datanode Chunk文件原有layoutOzone Datanode Chunk Layout:FILE_PER_CHUNK和FILE_PER_BLOCK引用 前言 在Ozone中,Ozone的文件对象数据是以Block的形式进行组织的,和HDFS想类似。不过Oz...

2020-03-15 13:29:38 214 0

原创 增量capacity分配的ByteBuffer实现

文章目录前言Ozone内部的增量ByteBuffer实现引用 前言 对于Java nio ByteBuffer,我们常常会拿来做缓冲数据的处理。如果我们就为了图方便,每次数据读写操作专门allocate一个比较大capacity的ByteBuffer,这样会造成不必要的JVM heap的浪费。但...

2020-03-11 23:36:24 173 0

原创 Ozone BlockCommitSequenceId在Container上的运用

文章目录前言Ozone Container自增型TransactionId:BlockCommitSequenceId 前言 在Ozone中,Container以Pipeline节点组织的方式通过StateMachine的形式进行状态一致性的更新。不过这里面对可能存在的一些边缘情况,例如Pipe...

2020-03-08 23:31:22 142 0

原创 HDFS Missing Block诊断信息的改进

文章目录前言HDFS Block副本storage location的移除逻辑HDFS Block的last stored location的优化HDFS Missing Block lastStoredLocationd的测试 前言 在存储系统中,数据的安全性无疑是最top priority的...

2020-03-07 11:43:44 213 0

原创 Ozone Datanode ContainerStateMachine语义实现

文章目录前言ContainerStateMachine对于StateMachine/RaftLog的语义实现 前言 上篇文章里笔者介绍了Ozone中使用的Apache Ratis的内部一致性实现原理,得益于底层的一致性封装实现,在Ozone层面,它只需要调用此库并实现自定义的StateMachi...

2020-02-23 12:22:29 174 0

原创 Ozone内部使用的RaftLeader/RaftFollower的一致性同步机理

文章目录前言Apache Ratis基于Raft协议的一致性同步过程Apache Ratis内部RaftLeader/RaftFollower过程调用分析 前言 在之前的文章中,笔者提过Ozone内部使用的是基于Raft协议的一致性控制,以此保证Ozone Container操作请求在Pipe...

2020-02-22 12:01:12 203 0

原创 Ozone FS Namespace的设计构想

文章目录前言Ozone FS Namespace综述Ozone FS Namespace的结构设计 前言 之前笔者介绍过Ozone如何作为Hadoop兼容性文件系统供外部应用使用,就是我们所说的Ozone FileSystem。但是Ozone FileSystem在本质上并没有改变底层Key在O...

2020-02-16 11:52:12 286 0

原创 从Ozone Recon到分布式系统只读模式的服务构建

文章目录前言Ozone Recon模式的运作原理总结引用 前言 当面对一个复杂的分布式系统时,如果我们想了解其内部运行的情况,我们通常的做法是进行内部指标metric的收集和暴露。但是如果我们遇到一些内部指标的统计需要进行系统服务内部逻辑的大规模改动或者目标metric的指标收集操作会影响到服务...

2020-02-13 23:16:05 497 0

原创 Ozone Multi-Raft机制对于更大throughput处理量的支持

文章目录前言Multi-Raft的支持到Ozone多Pipeline的节点复用支持 前言 在前面介绍Ozone文章内容中,笔者多次提及Ozone使用的是Raft一致性协议来做副本间的数据一致性的。Ozone使用的是Raft的Java实现库Apache Ratis实现的,在早期Apache Rat...

2020-02-10 23:56:00 350 0

原创 Ozone SCM的Container状态转化分析

文章目录前言SCM和Datanode之间的Container处理过程SCM Container的状态转化 前言 上一篇文章里,笔者对SCM的Pipeline的状态转化做了一定的分析。本文笔者将对SCM中另外一个重要概念Container做详细的分析。Container作为Ozone SCM提供服...

2020-02-08 22:47:07 274 0

原创 Ozone SCM的Pipeline状态转化分析

文章目录前言SCM的Pipeline处理流程SCM Pipeline的生命周期 前言 在前几篇讲述Ozone SCM的文章中,笔者多次提及到了Container,Pipeline的概念。Ozone SCM服务围绕着这2个概念,对外提供核心的存储服务。本文笔者将对其中的Pipeline进行更...

2020-02-03 22:24:00 735 0

原创 Ozone FileSystem的内部原理实现分析

文章目录前言Ozone FileSystem的简单架构Hadoop FileSystem到Ozone的命名空间的转化Ozone FileSystem的“虚假”目录的处理Ozone FileSystem相关代码实现分析相关阅读 前言 在前一篇文章中(Ozone作为Hadoop FileSystem...

2020-02-01 15:31:55 892 0

原创 Ozone作为Hadoop FileSystem的配置使用

文章目录前言Ozone FileSystem的Hadoop兼容性文件系统实现原理Ozone FileSystem的配置Ozone FileSystem的使用 前言 Ozone作为同样隶属于Hadoop大数据生态圈的一个系统,尽管它提供的是K-V对象存储能力,但是它和其它现有的Hadoop生...

2020-01-31 14:43:52 788 0

原创 Ozone SCM基于Container/Pipeline管理的架构模式

文章目录前言SCM内部的服务模块划分SCM服务和OM服务的交互过程 前言 前面笔者写了很多篇关于Ozone OM的相关文章,本文笔者介绍另外一个与此紧密管理的服务SCM服务,一个提供基于Datanode Container容器的中心管理服务。简单地来比喻,现有的HDFS NN服务的角色功能在Oz...

2020-01-29 15:39:20 601 0

原创 Ozone Datanod Container Replication复制过程

文章目录前言Ozone Datanode Container Replication过程 前言 在分布式存储系统中,为了保证文件数据的冗余性,系统往往会对数据进行多副本的设置保存,比如典型的HDFS三副本文件设置。在Ozone中,同样也有副本的概念,不过它的副本单位粒度比HDFS的Bloc...

2020-01-27 16:52:23 508 0

原创 Ozone Datanode启动过程以及心跳汇报过程分析

文章目录前言Ozone Datanode的服务启动 前言 在之前的文章中,笔者分析过Ozone Datanode内的数据处理过程,包括Container,Chunk文件级别的操作处理逻辑。本文笔者继续阐述Datanode服务内部的另外一部分的处理过程:Datanode服务启动以及心跳发送给...

2020-01-24 14:03:36 3349 0

原创 Ozone OM服务的HA配置搭建

文章目录前言OM HA的配置初始化OM HA模式下的服务启动OM HA下的CLI命令使用附:OM HA的样例配置 前言 在上文中,笔者阐述了Ozone OM服务HA的内部机理,但是没有介绍其是如何配置使用的。本文笔者结合自己在测试环境中的HA搭建过程,来补充介绍下这块的实际配置过程以及中间可能存...

2020-01-22 16:41:02 2231 3

原创 Ozone OM服务HA原理分析

文章目录前言OzoneManager HA的目标OM HA的Raft方式实现 前言 在分布式系统中,为了避免中心服务节点存在单点问题,我们往往会有HA(High Availability)的防御措施。比如一个简单的HA部署方案,额外在另一个机器上部署一个完全一样的服务。当当前的这个服务出现...

2020-01-16 23:32:09 921 0

原创 Ozone数据读取过程分析

文章目录前言Ozone数据的读取过程:基于Block,Chunk offset的数据读取Ozone数据读取相关代码分析 前言 上篇文章Ozone数据写入过程分析,笔者分享了关于Ozone数据写入的过程分析。本文,笔者来分享对应另外一个过程,数据读取过程的分析。总体来说,Ozone数据的读取和写入...

2020-01-05 12:18:46 994 0

原创 Ozone数据写入过程分析

文章目录前言Ozone Key(文件)数据的写入Ozone Block(Chunk)数据的写出 前言 上篇文章Ozone Datanode的分布式元数据管理,笔者阐述了关于Ozone Datanode的分布式元数据相关的内容以及Datanode上的数据layout。既然我们了解了Datan...

2020-01-02 23:28:21 1067 0

原创 Ozone Datanode的分布式元数据管理

文章目录前言Ozone的分布式元数据Ozone Datanode数据的layout 前言 众所周知,当元数据空间达到一个比较庞大的规模量级的时候,HDFS会遇到一定的扩展性问题。首先HDFS将这些元数据INode信息都load在内存中进行管理,而且还有附属相关的mapping信息,这些庞大...

2019-12-28 22:10:18 866 0

原创 聊聊Ozone的Topology Awareness

文章目录前言HDFS的Topology AwarenessHDFS Topology的层级,距离定义问题Ozone的Topology Awareness 前言 众所周知,在大规模分布式存储系统中,数据往往通过多副本的形式来保持其可用性。但是多副本如何进行位置放置又是一项值得深挖的领域。至少...

2019-12-23 23:24:02 466 0

原创 Ozone数据探查服务Recon的启用

文章目录前言Ozone Recon服务的启用 前言 笔者之前写过一篇关于Ozone数据探查服务Recon的文章:存储系统“数据之眼”的设计–数据探查服务,大致阐述了Recon如何通过定期获取OM的快照来做数据的二次分析的过程。不过笔者当时没有介绍Recon服务如何被启用的过程,以及此服务被启用后...

2019-12-16 22:43:43 766 0

原创 Ozone Insight工具的使用

文章目录前言Ozone的Insight视角Ozone的insight工具命令的使用引用 前言 分布式系统的运行过程比一般的企业级系统要复杂许多,里面会牵扯到很多服务的调用以及复杂的并行逻辑处理。因此对于分布式系统的问题研究分析,并不是一件简单的事情。但是如果我们有一些路径能够知道它里面运行的一些...

2019-12-14 16:56:14 657 0

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