大数据架构、实现
文章平均质量分 97
本专栏关注大数据技术设施的韵运维、架构和实现。
麦兜和小可的舅舅
Hadoop Engineer
Email: vico.wu1989@gmail.com
展开
-
Yarn LogAggregationService的日志收集失败导致的NodeManager OOM和启动失败
NodeManager因为OOM问题无法正常启动,我们发现是NodeManager在启动时会加载StateStore中的Application而StateStore中Application过多导致。进一步,我们看到StateStore中Application过多是Log Aggregation失效导致。本文详细记录事故处理过程,代码层面分析NodeManager recover和Log Aggregation的基本原理。原创 2024-07-25 11:28:54 · 924 阅读 · 0 评论 -
HDFS从Trash中删除大量小文件导致的读写受阻问题
我们一次普通的大目录删除(含有5 Million个小文件),引发了HDFS的一次持续10分钟的读写不可用的线上事故。本文对这次事故进行了详细分析,主要从HDFS的架构本身,结合事故发生时NameNode、DataNode的各种监控指标,以NameNode端的锁控制为重要关注点,分析了HDFS对文件进行物理删除操作的整个处理过程,解释事故发生的整个过程中各个指征产生的根本原因。原创 2024-07-23 10:22:48 · 577 阅读 · 0 评论 -
Spark RPC框架详解
SparkContext构造过程的重要一步,就是Driver、ApplicationMaster以及Executor之间的协调和通信过程,这是基于RPC进行的。这里的Spark RPC是基于Netty的通信过程,而Netty的通信其实是基于Reactor架构进行的,Reactor架构其实是基于Java NIO模型进行的。本文详细讲解了基于Netty 的 SparkRPC 框架的实现细节。原创 2024-07-22 20:36:44 · 1238 阅读 · 0 评论 -
Spark的动态资源分配算法
本文讲解了Spark on Yarn的动态资源分配场景下,从Task信息的生成,到资源的请求,以及将生成的Task基于资源的Locality Preference调度到生成的Executor的整个过程。原创 2024-07-17 00:29:32 · 1087 阅读 · 0 评论 -
HDFS Decommission节点的长尾分析和问题解决
我们在一个HDFS集群中进行部分节点的Decommission操作。在Decommission过程中,我们发现了一些问题,比如调度缓慢,关键日志缺失等,我们通过参数调整、代码优化等方式尝试解决问题。本文详细记录了我们遇到问题和解决问题的过程,同时从代码层面讲解HDFS Decommission和块重构(Block Reconstruction)的流程。原创 2024-07-12 21:56:23 · 776 阅读 · 0 评论 -
HDFS 块重构和RedundancyMonitor详解
本文主要讲解整个块的重构过程,包括:- NameNode端待重构块的生成过程(包含了各种待重构的情况),- NameeNode端基于生成的待重构块进行重构工作的调度,- DataNode端对于重构任务的处理。由于基于副本复制的冗余策略基本上就是数据的拷贝,比较简单,因此,本文偏向于讲解基于纠删码的冗余策略的DataNode端的处理过程。原创 2024-07-10 22:50:36 · 1180 阅读 · 0 评论 -
HDFS的块汇报和块放置策略--从一次HDFS写文件故障开始
HDFS集群中NameNode为块选择副本失败导致事故,本文详细记录了该事故发生的细节,对事故的现场处理、后续处理进行了介绍,并从代码层面介绍了HDFS的副本的放置策略和基本流程。原创 2024-06-07 21:34:39 · 866 阅读 · 1 评论 -
HDFS的EC(Erasure Coding,纠删码)和块管理
介绍了HDFS的块管理策略,既有基于复制的块管理,也重点介绍了HDFS的纠删码的具体实现,主要偏向于代码解析,同时还有基于实验对一些问题的解答。原创 2024-01-22 17:36:30 · 733 阅读 · 1 评论 -
HDFS WebHDFS 读写文件分析及HTTP Chunk Transfer Encoding相关问题探究
最近在调研使用WebHDFS进行HDFS文件读写的相关调查,因此需要对WebHDFS的整个读写流程进行探究,其中涉及到的必要的http重定向的整个流程必须搞清楚。同时,由于HDFS涉及到大量的流式写和大文件读,因为我们比较关心WebHDFS对Chunked Transfer Coding的支持,我们对WebHDFS的这个特性进行了测试和代码层面的研究。原创 2024-01-12 21:43:13 · 1468 阅读 · 2 评论 -
HDFS基于动态代理的客户端运行逻辑
本文详细解析整个HDFS客户端基于动态代理的、从上而下的调用和实现逻辑。本文关注的重点是动态代理的层层封装,以及基于动态代理实现的统一的重试逻辑。原创 2023-12-27 16:55:28 · 1003 阅读 · 1 评论 -
HDFS客户端域名解析失败导致UnknownHostException事故解析
生产环境HDFS客户端发生了临时的域名解析失败问题,此时HDFS客户端虽然在重试,但是实际上对域名却并未重新解析,因此重试无效。本文基于我们在生产环境遇到的这个问题,详细记录了分析的过程和最终的根本原因的查找。原创 2023-12-27 16:45:07 · 1350 阅读 · 2 评论 -
HDFS 短路读的实现(全网最全面深入讲解)
HDFS短路读是性能优化的一个重要特性,它利用操作系统的内存映射mmap和共享内存,避开传统的基于TCP的数据通信,极大提升了数据读取效率。整个短路读的过程完全放弃传统的基于TCP/IP的通信方式,基于进行通信,基于mmap和内存共享进行数据同步和块的高效率读取,整个读取过程涉及到了操作系统(mmap等)、Java等知识,同时也和HDFS的缓存系统交叉在一起,因此涉及到的东西很多,本文篇幅较长。原创 2023-10-28 11:23:07 · 549 阅读 · 2 评论 -
Presto(Trino)分布式(物理)执行计划的生成和调度
讲解物理执行计划的生成,以及基于物理执行计划的task 和 split 的调度过程。原创 2023-06-27 23:05:56 · 1846 阅读 · 0 评论 -
Presto Split 详解
文章目录Split加载TableScanNode中获取TableLayoutConnectorSplitManager通用接口使用BackgroundHiveSplitLoader加载SplitsloadSplits()加载splitsloadPartition()加载partition对于bucket table的处理逻辑对于非bucket table的处理逻辑HiveSplitSource 通用接口向Coordinator交付SplitConnectorSplitSource通用接口HiveSplitS原创 2020-10-22 09:30:02 · 9390 阅读 · 0 评论