open-source
文章平均质量分 97
麦兜和小可的舅舅
Hadoop Engineer
Email: vico.wu1989@gmail.com
展开
-
GitHub Revert Merge Commit的现象观察和对PR的思考
本文以自己在revert 一个 merge时候遇到的问题为出发点,讲解了git revert和rebase的基本原理,讲了我们revert一个merge commit时候的基本流程。同时,讲解了Three-Dot-Diff和Two-Dot-Diff的区别,以及我们对PR中的diff的理解。很多时候,我们对事物的正确理解不在于我们认识他们多久,而在于我们是否真正思考过。原创 2024-07-30 18:57:34 · 788 阅读 · 0 评论 -
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 · 997 阅读 · 0 评论 -
Spark RPC框架详解
SparkContext构造过程的重要一步,就是Driver、ApplicationMaster以及Executor之间的协调和通信过程,这是基于RPC进行的。这里的Spark RPC是基于Netty的通信过程,而Netty的通信其实是基于Reactor架构进行的,Reactor架构其实是基于Java NIO模型进行的。本文详细讲解了基于Netty 的 SparkRPC 框架的实现细节。原创 2024-07-22 20:36:44 · 1274 阅读 · 0 评论 -
HDFS Decommission节点的长尾分析和问题解决
我们在一个HDFS集群中进行部分节点的Decommission操作。在Decommission过程中,我们发现了一些问题,比如调度缓慢,关键日志缺失等,我们通过参数调整、代码优化等方式尝试解决问题。本文详细记录了我们遇到问题和解决问题的过程,同时从代码层面讲解HDFS Decommission和块重构(Block Reconstruction)的流程。原创 2024-07-12 21:56:23 · 849 阅读 · 0 评论 -
HDFS WebHDFS 读写文件分析及HTTP Chunk Transfer Encoding相关问题探究
最近在调研使用WebHDFS进行HDFS文件读写的相关调查,因此需要对WebHDFS的整个读写流程进行探究,其中涉及到的必要的http重定向的整个流程必须搞清楚。同时,由于HDFS涉及到大量的流式写和大文件读,因为我们比较关心WebHDFS对Chunked Transfer Coding的支持,我们对WebHDFS的这个特性进行了测试和代码层面的研究。原创 2024-01-12 21:43:13 · 1548 阅读 · 2 评论 -
HDFS基于动态代理的客户端运行逻辑
本文详细解析整个HDFS客户端基于动态代理的、从上而下的调用和实现逻辑。本文关注的重点是动态代理的层层封装,以及基于动态代理实现的统一的重试逻辑。原创 2023-12-27 16:55:28 · 1036 阅读 · 1 评论 -
HDFS客户端域名解析失败导致UnknownHostException事故解析
生产环境HDFS客户端发生了临时的域名解析失败问题,此时HDFS客户端虽然在重试,但是实际上对域名却并未重新解析,因此重试无效。本文基于我们在生产环境遇到的这个问题,详细记录了分析的过程和最终的根本原因的查找。原创 2023-12-27 16:45:07 · 1607 阅读 · 2 评论 -
YARN ApplicationMaster与ResourceManager之间基于applicationmaster_protocol.proto协议的allocate()接口源码解析
YARN ApplicationMaster与ResourceManager之间的通信接口使用applicationmaster_protocol.proto协议进行,负责注册应用、为应用分配资源等核心任务,协议中最核心的是allocate()接口,负责资源申请、释放、抢占、心跳等核心任务,本文对该接口从代码层面进行全面和深入解析,相信有助于读者对Yarn的资源分配有更深入的认识原创 2017-07-14 11:07:36 · 8039 阅读 · 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 · 2626 阅读 · 2 评论 -
用Reactor模式构建的Kafka Server网络层和API层---架构和设计
1.前言从Yarn RPC Server到Kafka Server,凡是有高并发需求的服务端,无一例外采用了基于了Reactor设计模式。在我的博客《Hadoop RPC Server基于Reactor模式和Java NIO 的架构和原理》中,分析了Yarn的基于Reactor设计模式和Java NIO实现的RPC Server的架构和设计,而Kafka的Server端网络层也同样使用了R...原创 2017-08-19 22:01:19 · 2548 阅读 · 0 评论 -
Fetcher: KafkaConsumer消息消费的管理者
KafkaConsumer委托Fetcher进行消费请求的发送、消费响应的处理以及消费数据的解析组装,Fetcher使用ConsumerNetworkClient进行底层网络通信。Fetcher基于事件的异步回调的良好设计,是Kafka可以以极高吞吐量消费消息以及在有消息的时候我们几乎感觉不到任何阻塞的重要原因。本文从源码入手,分析Fetcher的设计和架构,感受高性能、稳定、高可扩展的消息中间件的客户端代码。原创 2017-07-29 17:31:45 · 7661 阅读 · 0 评论 -
一次实践:spark查询hive速度缓慢原因分析并以此看到spark基础架构
前一段时间数据挖掘组的同学向我返回说自己的一段pyspark代码执行非常缓慢,而代码本身非常简单,就是查询hive 一个视图中的数据,而且通过limit 10限制了数据量。 不说别的,先贴我的代码吧:from pyspark.sql import HiveContextfrom pyspark.sql.functions import *import jsonhc = HiveContext原创 2017-02-28 12:01:34 · 17853 阅读 · 0 评论