hadoop
文章平均质量分 97
麦兜和小可的舅舅
Hadoop Engineer
Email: vico.wu1989@gmail.com
展开
-
HDFS从Trash中删除大量小文件导致的读写受阻问题
我们一次普通的大目录删除(含有5 Million个小文件),引发了HDFS的一次持续10分钟的读写不可用的线上事故。本文对这次事故进行了详细分析,主要从HDFS的架构本身,结合事故发生时NameNode、DataNode的各种监控指标,以NameNode端的锁控制为重要关注点,分析了HDFS对文件进行物理删除操作的整个处理过程,解释事故发生的整个过程中各个指征产生的根本原因。原创 2024-07-23 10:22:48 · 531 阅读 · 0 评论 -
HDFS的块汇报和块放置策略--从一次HDFS写文件故障开始
HDFS集群中NameNode为块选择副本失败导致事故,本文详细记录了该事故发生的细节,对事故的现场处理、后续处理进行了介绍,并从代码层面介绍了HDFS的副本的放置策略和基本流程。原创 2024-06-07 21:34:39 · 747 阅读 · 1 评论 -
HDFS的EC(Erasure Coding,纠删码)和块管理
介绍了HDFS的块管理策略,既有基于复制的块管理,也重点介绍了HDFS的纠删码的具体实现,主要偏向于代码解析,同时还有基于实验对一些问题的解答。原创 2024-01-22 17:36:30 · 524 阅读 · 1 评论 -
HDFS WebHDFS 读写文件分析及HTTP Chunk Transfer Encoding相关问题探究
最近在调研使用WebHDFS进行HDFS文件读写的相关调查,因此需要对WebHDFS的整个读写流程进行探究,其中涉及到的必要的http重定向的整个流程必须搞清楚。同时,由于HDFS涉及到大量的流式写和大文件读,因为我们比较关心WebHDFS对Chunked Transfer Coding的支持,我们对WebHDFS的这个特性进行了测试和代码层面的研究。原创 2024-01-12 21:43:13 · 1355 阅读 · 2 评论 -
HDFS基于动态代理的客户端运行逻辑
本文详细解析整个HDFS客户端基于动态代理的、从上而下的调用和实现逻辑。本文关注的重点是动态代理的层层封装,以及基于动态代理实现的统一的重试逻辑。原创 2023-12-27 16:55:28 · 984 阅读 · 1 评论 -
HDFS客户端域名解析失败导致UnknownHostException事故解析
生产环境HDFS客户端发生了临时的域名解析失败问题,此时HDFS客户端虽然在重试,但是实际上对域名却并未重新解析,因此重试无效。本文基于我们在生产环境遇到的这个问题,详细记录了分析的过程和最终的根本原因的查找。原创 2023-12-27 16:45:07 · 1040 阅读 · 2 评论 -
HDFS 短路读的实现(全网最全面深入讲解)
HDFS短路读是性能优化的一个重要特性,它利用操作系统的内存映射mmap和共享内存,避开传统的基于TCP的数据通信,极大提升了数据读取效率。整个短路读的过程完全放弃传统的基于TCP/IP的通信方式,基于进行通信,基于mmap和内存共享进行数据同步和块的高效率读取,整个读取过程涉及到了操作系统(mmap等)、Java等知识,同时也和HDFS的缓存系统交叉在一起,因此涉及到的东西很多,本文篇幅较长。原创 2023-10-28 11:23:07 · 462 阅读 · 2 评论 -
Yarn资源请求处理和资源分配原理解析
目录概述FairScheduler的资源调度原理和代码FairScheduler的调度概览两种调度时机-心跳调度和持续调度开始进行资源调度判断这个application是否适合在这个节点上分配资源运行YARN请求资源时的locality和relaxility限定资源分配assignContainerParent节点调用FSParentQueueassignContainer原创 2017-12-14 09:57:31 · 17745 阅读 · 12 评论 -
HDFS使用QJM(Quorum Journal Manager)实现的高可用性以及备份机制
目录前言1.NameNode的启动和对edits和QJM相关配置文件的解析2.使用FSImage和FSEditLog类对image和edit log文件进行读写和管理3.EditsDoubleBuffer 双缓存,让flush和write同时进行,互不干扰4.AsyncLoggerSetl类代理对QJM集群的读写6.QuorumCall封装了对基于paxos算法的QJM集群的异...原创 2017-09-03 11:14:07 · 5757 阅读 · 0 评论 -
HDFS使用Backup Node、Checkpoint Node以及Standby Namenode进行checkpoint的机制详解
前言checkpoint,就是将某一个时间点的内存镜像,完整地存放到磁盘的过程,比如,我们在StandBy NameNode上可以看到这样的image文件:fsimage_0000000000992806947fsimage_0000000000992806947.md5fsimage_0000000000992806947说明这个文件存放了txId为992806947和以前的全...原创 2017-09-24 17:04:54 · 4968 阅读 · 0 评论 -
Yarn FairScheduler 的资源预留机制导致的一次宕机事故分析
Yarn为了保证大应用不被小应用饿死,当某台服务器无法满足大应用资源需求,会在服务器上为这个请求预留资源直到满足需求,预留期间资源空闲但不被分配。资源预留使用不当将导致整个Yarn集群资源分配停止,因此必须小心配置。本文描述我所遇到的资源预留导致Yarn全集群停止服务的一次经历,然后从代码和原理上对资源预留机制进行详细的讲解。原创 2017-12-14 10:03:58 · 6883 阅读 · 5 评论 -
Yarn FairSheduler使用FairSharePolicy计算Fair Share的规则、原理和代码实现
目录概述1. Steady Fair Share 原理和计算方式2. Instantaneous Fair Share 原理和计算方式总结概述想要对Yarn的FairScheduler队列资源管理、以及抢占规则有正确的理解,必须知道Yarn的Fair Share的含义。我们在yarn的管理页面里面,经常可以看到队列的Instantaneous Fair Share...原创 2017-06-10 15:04:16 · 6254 阅读 · 0 评论 -
Yarn FairScheduler的抢占机制详解
FairScheduler是yarn最常用的调度器之一,详细了解它的概念、原理,仅仅靠阅读其官方文档,往往让人模棱两可,须知。Yarn的资源调度影响到整个集群系统的正确运行,因此,必须准确理解每个配置项的准确含义,还需要从代码入手,了解FairScheduler的隐藏在代码中的容易被忽略的逻辑。本文从概念、配置和代码层面,详细分析Yarn的资源调度策略FairScheduler。 Schedul...原创 2017-06-10 15:03:28 · 10574 阅读 · 0 评论 -
YARN ApplicationMaster与ResourceManager之间基于applicationmaster_protocol.proto协议的allocate()接口源码解析
YARN ApplicationMaster与ResourceManager之间的通信接口使用applicationmaster_protocol.proto协议进行,负责注册应用、为应用分配资源等核心任务,协议中最核心的是allocate()接口,负责资源申请、释放、抢占、心跳等核心任务,本文对该接口从代码层面进行全面和深入解析,相信有助于读者对Yarn的资源分配有更深入的认识原创 2017-07-14 11:07:36 · 7896 阅读 · 0 评论 -
Hadoop RPC Server基于Reactor模式和Java NIO 的架构和原理
Hadoop RPC Server基于java NIO实现了一个高并发、高稳定性的网络层。本文分析了Hadoop RPC Server在NIO层面的处理逻辑,包括Listener、Reader、Handler、Responder等各个Reactor角色以及请求和响应在它们之间的传递。我们详细分析了一个基于Protobuf RPC的头信息的解析过程,解释了Server端收到请求到将请求交付给业务进行处理的逻辑。原创 2017-08-14 20:38:39 · 2553 阅读 · 2 评论 -
Hadoop的心脏:中央异步调度器AsyncDispatcher代码和设计解析
Hadoop中涉及到大量复杂的、交互的事件处理、状态转换,同时,而且对实时性和效率提出了极高的要求。AsyncDispatcher是Hadoop的调度器,无论是RPC事件调度还是一些普通组件的事件调度都共用AsyncDispatcher。基于事件的异步调度方,极大提高了运行效率,抽象了不同场景的事件调度。本文从代码层面讲解AsyncDispatcher的实现,让读者理解AsyncDispatcher的工作原理。原创 2017-07-21 12:07:23 · 2461 阅读 · 0 评论 -
Hadoop 基于protobuf 的RPC的服务器端实现原理
目录序言protobuf处理引擎的注册具体protobuf协议的注册以ResourceTracker协议讲解服务端启动和注册过程总结序言Hadoop RPC基于即远程过程调用,远程过程调用主要包括两个部分,网络协议和数据格式。Hadoop根据数据格式,有三种不同的RPC实现: public enum RpcKind { RPC_BUILTIN (...原创 2017-05-06 17:29:07 · 3479 阅读 · 0 评论 -
Hadoop 基于protobuf 的RPC的客户端实现原理
基于protobuf的RPC engine,必须在服务器端和客户端都完成了初始化之后,才能开始通信。那么,客户端是如何基于预先定义的protobuf协议,来与远程的基于相同的protobuf协议的服务端进行通信的呢?原创 2017-05-15 18:13:43 · 3984 阅读 · 0 评论