- 博客(535)
- 资源 (14)
- 论坛 (1)
- 收藏
- 关注

原创 Spark2.3.2源码解析 [目录]
Spark基础知识详解Spark2.1 内存管理详解Spark2.3.2源码分析:1.代码阅读环境准备Spark2.3.2源码解析: 2.启动master节点流程源码分析Spark2.3.2源码解析: 3.启动worker节点启动流程源码分析Spark2.3.2源码解析: 4.1.Yarn cluster 模式 SparkSubmit源码分析(一)Spark2.3.2源码解析: 4.2.Yarn cluster 模式 SparkSubmit源码分析(二)ApplicationMasterSpa
2021-01-12 20:32:47
58

原创 Hadoop3.2.x YARN源码分析目录汇总 [持续更新中....]
Hadoop3.2.x YARN源码分析目录汇总如下:Hadoop3.2.1 【 YARN 】源码分析 : RPC通讯解析Hadoop3.2.1 【 YARN 】源码分析 : ResourceManager 浅析Hadoop3.2.1 【 YARN 】源码分析 : ClientRMService 浅析Hadoop3.2.1 【 YARN 】源码分析 : AdminService 浅析Hadoop3.2.1 【 YARN 】源码分析 : ApplicationMaster 浅析Hadoop3.2
2020-12-28 09:26:38
68

原创 Hadoop3.2.x HDFS源码分析目录汇总 [完结]
Hadoop3.2.0 源码编译 [一]MAC版本: Hadoop3.2.0 源码编译 [ 二 ]Hadoop3.2.0 源码分析: SHELL启动脚本 DEBUG 模式Hadoop3.2.0 源码分析: namenode 启动Hadoop3.2.0 源码分析: datanode 启动Hadoop3.2.0 源码分析: ResourceManager启动Hadoop3.2.0 源码分析: NodeManagerHadoop3.2.0 源码分析: Container 之...
2020-09-27 09:28:38
7996

原创 TO DO LIST
2019年任务名称作者状态开始时间Redis深度历险 核心原理与应用实践钱文品完成2019-01Java 多线程编程核心技术高洪岩完成2019-01Spark大数据商业实战三部曲王家林完成2019-01说透中台王健完成2019-01趣谈网络协议刘超完成2019-04数据结构与算法之美王争完成2019-04...
2020-08-27 10:10:07
10943

原创 [JVM]了断局: [ 目录 ]
[JVM]了断局: 说什么也没用,背就完了[必背][JVM]了断局: “运行时数据区“理论梳理[JVM]了断局: 类文件结构梳理[JVM]了断局: JDK默认配置.[JVM]了断局: G1 入门[JVM]了断局: 类加载机制原图:https://www.processon.com/view/5cff6c05e4b0a65d8095d130未完,待补充................
2020-08-24 21:09:07
9531

原创 Hadoop3.2.1 RPC通讯 一锅端
下面是最近整理的关于Hadoop3.2.1 RPC 的通讯文章汇总,以及我最后画的一张从Client端请求到Server端的流程图.有什么不对的地方,欢迎指正...Hadoop3.2.1 【 HDFS 】源码分析 : RPC实现 [一] proto接口协议Hadoop3.2.1 【 HDFS 】源码分析 : RPC实现 [二] 概述&使用Hadoop3.2.1 【 HDFS 】源码分析 : RPC原理 [三] 概述&原理Hadoop3.2.1 【 HDFS 】源...
2020-06-21 23:08:28
10585

原创 CentOS7.6 万兆网卡性能测试.
Table of Contents一. 物理机&软件:二.网卡信息三. 安装netperf四. 开启多队列功能五. 测试六. 查看结果七.总结最终结果极限 万兆网卡: 网络吞吐量 大约为9409.58Mbit/s ≈1176M/s本文章主要是为了测试万兆网卡的传输速率.一. 物理机&软件:1.两台装有万兆网卡的物理机, ...
2020-04-22 15:51:43
14114
原创 Ranger 2.0 页面权限配置图解
一. 前言为了记录ranger的配置,截图留念…注意: Service Name 不是随便写的,是根据插件的名字改定义的, 注意!!!二. HDFS2.1. 添加服务dfs.nameservices : masterdfs.ha.namenodes.master : nn0,nn1dfs.namenode.rpc-address.master.nn0 : server-host01:8020dfs.namenode.rpc-address.master.nn1 : server-hos
2021-01-11 22:03:50
37
原创 对象存储入门 [ minIo ozone ]
一. 前言OSS(Object Storage Service)俗称对象存储,主要提供图片、文档、音频、视频等二进制文件的海量存储功能。目前除了公有云提供对象存储服务外,一般私有云比较关心一些开源的分布式对象存储解决方案。公有云一般都提供对象存储服务,如阿里云的OSS,华为云的OBS,腾讯云的COS。一些开源的对象存储都会遵循Amazon s3协议。Amazon s3协议定义了操作对象存储的Resestfull风格的API。通过在pom中引用aws-java-sdk-s3可以实现对存储的操作。
2021-01-07 21:34:12
175
原创 Hadoop3.2.1 【 YARN 】源码分析 : 节点健康状况检测
一. 前言节点健康状况检测是NodeManager自带的健康状况诊断机制, 通过该机制,NodeManager可时刻掌握自己的健康状况, 并及时汇报给ResourceManager。 而ResourceManager则根据每个NodeManager的健康状况适当调整分配的任务数目。 当NodeManager认为自己的健康状况“欠佳”时, 可通知ResourceManager不再为之分配新任务, 待健康状况好转时, 再分配任务。 该机制不仅可帮助及时发现存在问题的NodeManager, 避免不必要的任务分
2021-01-04 03:04:32
130
原创 Hadoop3.2.1 【 YARN 】源码分析 : AsyncDispatcher概述
一. 前言YARN采用了基于事件驱动的并发模型, 该模型能够大大增强并发性, 从而提高系统整体性能。 为了构建该模型, YARN将各种处理逻辑抽象成事件和对应事件调度器, 并将每类事件的处理过程分割成多个步骤, 用有限状态机表示。整个处理过程大致为: 处理请求会作为事件进入系统, 由中央异步调度器(AsyncDispatcher) 负责传递给相应事件调度器(Event Handler) 。 该事件调度器可能将该事件转发给另外一个事件调度器, 也可能交给一个带有有限状态机的事件处理器, 其处理结果也以
2021-01-03 19:02:22
29
原创 Hadoop3.2.1 【 YARN 】源码分析 : NodeManager概述
一. 前言NodeManager是运行在单个节点上的代理, 它需要与应用程序的ApplicationMaster和集群管理者ResourceManager交互: 从ApplicationMaster上接收有关Container的命令并执行之(比如启动、 停止Container) ; 向ResourceManager汇报各个Container运行状态和节点健康状况, 并领取有关Container的命令(比如清理Container) 执行之.NodeManager(NM) 是YARN中单个节点上的代理, 它
2021-01-02 22:14:50
50
原创 Hadoop3.2.1 【 YARN 】源码分析 : RMNode状态机浅析
一. 前言ResourceManager中用来维护一个节点生命周期的数据结构是RMNode。 RMNode记录了节点可能存在的各个状态, 由RMNodeImpl类实现, 各状态之间的转换由事件触发。二.RMNode状态机2.1. RMNode状态机概述RMNode是ResourceManager中用于维护一个节点生命周期的数据结构, 它的实现是RMNodeImpl类, 该类维护了一个节点状态机, 记录了节点可能存在的各个状态以及导致状态间转换的事件。 当某个事件发生时, RMNodeImpl会根据实
2020-12-31 14:13:59
39
原创 Hadoop3.2.1 【 YARN 】源码分析 : RMApp状态机浅析
一. 前言在YARN中, 如果一个对象由若干个状态以及触发这些状态发生转移的事件构成, 它将被抽象成在这里插入代码片一个状态机, 在YARN ResourceManager内部, 共有4类状态机, 分别是RMApp、 RMAppAttempt、 RMContainer和RMNode。其中, 前2类状态机维护了一个应用程序相关的生命周期, 包括Application生命周期、 一次运行尝试的生命周期;RMContainer则维护了分配出去的各个资源的使用状态; RMNode维护了一个NodeManage
2020-12-31 10:34:14
48
原创 Hadoop3.2.1 【 YARN 】源码分析 : StateMachineFactory解析[二]
一. 前言RMNode是ResourceManager中用于维护一个节点生命周期的数据结构, 它的实现是RMNodeImpl类, 该类维护了一个节点状态机, 记录了节点可能存在的各个状态以及导致状态间转换的事件。 当某个事件发生时, RMNodeImpl会根据实际情况进行节点状态转移, 同时触发一个行为。在这里我们拿RMNodeImpl 查看一下构建后状态机的数据存储结构. 具体的状态不做说明, 先看一下RMNodeImpl流程图.二 . StateMachineFactory构建代码在实现类里面有
2020-12-30 20:29:53
53
原创 Hadoop3.2.1 【 YARN 】源码分析 : StateMachineFactory解析[一]
一. 事件处理模型YARN采用了基于事件驱动的并发模型, 该模型能够大大增强并发性, 从而提高系统整体性能。 为了构建该模型, YARN将各种处理逻辑抽象成事件和对应事件调度器, 并将每类事件的处理过程分割成多个步骤, 用有限状态机表示。整个处理过程大致为: 处理请求会作为事件进入系统, 由中央异步调度器(AsyncDispatcher) 负责传递给相应事件调度器(Event Handler) 。 该事件调度器可能将该事件转发给另外一个事件调度器, 也可能交给一个带有有限状态机的事件处理器, 其处理结
2020-12-29 02:50:28
172
原创 我和DolphinScheduler的这一年
Apache DolphinScheduler,为Apache开源项目, 简称”DS”, 中文名 “小海豚调度”(海豚聪明、人性化,又左右脑可互相换班,终生不用睡觉)。希望 DolphinScheduler 就像它的名字一样,成为一个“开箱即用”的灵活易用的调度系统。DolphinScheduler已经一岁了,很荣幸与它一起成长, 2020年就剩几天了,记录一下,就当是对这一年多的成长做了一个梳理(开启碎碎念模式…).一. 相遇2019年10月公司决定开展中台方面的业务,基于大数据体系,要搞一套从.
2020-12-24 10:46:20
251
原创 Hadoop3.2.1状态机图生步骤.
1. 进入项目目录, 执行命令mvn compile -Pvisualize2. 安装指令(mac 版本)brew install graphviz3. 执行转换操作dot -Tpng ResourceManager.gv > ResourceManager.pngdot -Tpng NodeManager.gv > NodeManager.pngdot -Tpng MapReduce.gv> MapReduce.png4. ResourceManager图
2020-12-16 23:20:44
7185
原创 Hadoop3.2.1 【 YARN 】源码分析 : ResourceManager # Application管理
一.前言在YARN中, Application是指应用程序, 它可能启动多个运行实例, 每个运行实例由一个ApplicationMaster与一组该ApplicationMaster启动的任务组成, 它拥有名称、 队列名、优先级等属性, 是一个比较宽泛的概念, 可以是一个MapReduce作业、 一个DAG应用程序, 甚至可以是一个Storm集群实例。YARN中Application管理涉及应用程序的权限管理、启动与关闭、 生命周期管理等…二. ApplicationACLsManagerAppl
2020-12-15 17:15:01
7274
原创 Hadoop3.2.1 【 YARN 】源码分析 : ResourceManager # NodeManager 浅析
一. 前言NodeManager管理部分主要由三个服务构成, 分别是NMLivelinessMonitor、 NodesListManager和ResourceTrackerService, 它们共同管理NodeManager的生存周期 .二. NMLivelinessMonitor该服务周期性遍历集群中所有NodeManager, 如果一个NodeManager在一定时间(可通过参数yarn.nm.liveness-monitor.expiry-interval-ms配置, 默认为10min) 内未
2020-12-14 01:30:30
7394
原创 Hadoop3.2.1 【 YARN 】源码分析 : ApplicationMaster 浅析
一 . 前言ApplictionMaster管理部分主要由三个服务构成, 分别是ApplicationMasterLauncher、AMLivelinessMonitor和ApplicationMasterService, 它们共同管理应用程序的ApplicationMaster的生存周期。二 . 整体流程步骤1 : 用户向YARN ResourceManager提交应用程序, ResourceManager收到提交请求后, 先向资源调度器申请用以启动ApplicationMaster的资源, 待
2020-12-13 20:09:21
207
原创 hadoop3.2.1版本docker编译报错 : [ Unable to locate package ghc ]
一.前言最近在用docker编译3.2.1版本的haodop代码的时候,发现 ghc 这个依赖无法下载.报错信息如下:Step 34/49 : RUN apt-get install -y ghc && apt-get -q update && apt-get -q install -y --no-install-recommends shellcheck && apt-get clean && rm -rf
2020-12-12 23:50:09
99
原创 Hadoop3.2.1 【 YARN 】源码分析 : AdminService 浅析
一. 前言AdminService是一个RPC Server [ 8033端口 ], 但它的服务对象是管理员。 在YARN中, 管理员列表由属性yarn.admin.acl指定(在yarn-site.xml中设置) , 默认情况下, 属性值为“*”, 表示所有用户都是管理员。 从实现角度看,它是一个实现了ResourceManagerAdministrationProtocol协议的服务在ResourceManager中, ClientRMService和AdminService两个服务分别负责处理来自
2020-12-11 17:47:54
82
原创 Hadoop3.2.1 【 YARN 】源码分析 : ClientRMService 浅析
一. 前言在ResourceManager中, ClientRMService和AdminService两个服务分别负责处理来自普通用户和管理员的请求, 需要注意的是, 之所以让这两类请求通过两个不同的通信通道发送给ResourceManager, 是因为要避免普通用户请求过多导致管理员请求被阻塞而迟迟得不到处理。二.ClientRMServiceClientRMService是一个RPC Server, 为来自客户端的各种RPC请求提供服务。它实现了ApplicationClientProtoco
2020-12-11 00:24:59
77
原创 JVM异常不打印堆栈信息 [ -XX:-OmitStackTraceInFastThrow ]
一. 背景生产环境日志突然膨胀到100G+, 为了定位问题,所以截取了部分报错日志,问题是 堆栈信息呢? 哪里报的NPE在哪???信息如下:[ERROR] 2020-12-09 09:41:50.053 - [taskAppId=TASK-1919-33805-97659]:[156] - wait task quit failed, instance id:33805, task id:97659[ERROR] 2020-12-09 09:41:50.053 - [taskAppId=TAS
2020-12-10 14:12:26
121
原创 Hadoop3.2.1 【 YARN 】源码分析 : ResourceManager 浅析
一.前言在YARN中, ResourceManager负责集群中所有资源的统一管理和分配, 它接收来自各个节点(NodeManager) 的资源汇报信息, 并把这些信息按照一定的策略分配给各个应用程序(实际上是ApplicationMaster) 。二. ResourceManager通讯❑ ResourceTracker [8031]: NodeManager通过该RPC协议向ResourceManager注册、 汇报节点健康状况和Container运行状态, 并领取ResourceManager
2020-12-09 00:41:54
44
原创 Hadoop3.2.1 【 YARN 】源码分析 : RPC通讯解析
一.前言远程过程调用(Remote Procedure Call, RPC) 是一个计算机通信协议。 该协议允许运行于一台计算机的程序调用另一台计算机的子程序, 同时将网络的通信细节隐藏起来,而程序员无需额外地为这个交互作用编程。作为一个分布式系统, Hadoop实现了自己的RPC通信协议, 它是上层多个分布式子系统(MR、 YARN、 HDFS等) 的公用网络通信模块, 保证其轻量级、 高性能。典型的RPC框架, 主要包括以下几个部分。( 1) 通信模块: 主要是请求-应答协议, 包括同步方式和
2020-12-07 03:08:36
233
1
原创 Hadoop3.2.1 【 HDFS 】源码分析 :DatanodeManager解析
一.前言DatanodeManager的主要功能是管理数据节点,包括退役和其他活动。记录了在Namenode上注册的Datanode, 以及这些Datanode在网络中的拓扑结构等信息。二.构造方法 DatanodeManager(final BlockManager blockManager, final Namesystem namesystem,final Configuration conf) throws IOException { this.names...
2020-12-01 09:17:31
306
原创 Hadoop3.2.1 【 HDFS 】源码分析 : DirectoryScanner 实现
一. 前言DirectoryScanner的主要任务是定期扫描磁盘上的数据块, 检查磁盘上的数据块信息是否与FsDatasetImpl中保存的数据块信息一致, 如果不一致则对FsDatasetImpl中的信息进行更新。 注意, DirectoryScanner只会检查内存和磁盘上FINALIZED状态的数据块是否一致二....
2020-11-29 01:04:44
2224
原创 Hadoop3.2.1 【 HDFS 】源码分析 : BlockScanner & VolumeScanner 实现
一. 前言每个Datanode都会初始化一个数据块扫描器周期性地验证Datanode上存储的所有数据块的正确性, 并把发现的损坏数据块报告给Namenode。 BlockScanner类就是Datanode上数据块扫描器的实现。二.BlockScannerBlockScanner中有一个属性scanners 用于存放BlockScanner所要监控的VolumeScanner对象. 然后VolumeScanner会启动线程来监控block状态.addVolumeScanner ,removeVolum
2020-11-25 17:17:52
2304
原创 Hadoop3.2.1 【 HDFS 】源码分析 : 写数据
一. 前言DataTransferProtocol.write()方法给出了写操作的接口定义, 操作码是80, DataXceiver.writeBlock()则真正实现了DataTransferProtocol.writeBlock()方法。HDFS使用数据流管道方式来写数据。 DFSClient通过调用Sender.writeBlock()方法触发一个写数据块请求, 这个请求会传送到数据流管道中的每一个数据节点, 数据流管道中的最后一个数据节点会回复请求确认, 这个确认消息逆向地通过数据流管道送回D
2020-11-25 01:27:44
2331
原创 Hadoop3.2.1 【 HDFS 】源码分析 : DataTransferThrottler[限流] 解析
一.前言Datanode是一个典型的IO密集型应用, 所以Datanode的磁盘I/O和网络I/O往往会成为系统的瓶颈。 数据节点上会有多种不同的任务共同占用网络I/O和磁盘I/O, 例如数据块读操作、 数据块写操作、 数据块复制操作以及数据块扫描操作等。 如果不对这些操作使用磁盘和网络进行一定的速度控制, 那么Datanode的吞吐量、 延迟以及服务的可用性会大大降低.所以Datanode使用节流器类DataTransferThrottler来提供简单的流控机制,DataTransferThrottl
2020-11-23 14:19:35
2214
原创 Hadoop3.2.1 【 HDFS 】源码分析 : 零拷贝数据传输
一. 前言Datanode最重要的功能之一就是读取数据块,如果高效的完成数据的读取是影响效率的关键.二. 操作系统层面读取数据步骤一 : Datanode会首先将数据块从磁盘存储(也可能是SSD、 内存等异构存储) 读入操作系统的内核缓冲区步骤二 : 将数据跨内核推到Datanode进程步骤三 : Datanode会再次跨内核将数据推回内核中的套接字缓冲区步骤四 : 最后将数据写入网卡缓冲区Datanode对数据进行了两次多余的数据拷贝操作(步骤二和步骤三) , Datano
2020-11-23 11:34:34
2232
原创 Hadoop3.2.1 【 HDFS 】源码分析 : DataXceiver: 读取数据块 解析 [二]
一. 前言Receiver.processOp()方法用于处理流式接口的请求, 它首先从数据流中读取序列化后的参数, 对参数反序列化, 然后根据操作码调用DataTransferProtocol中定义的方法, 这些方法都是在DataXceiver中具体实现的。流式接口中最重要的一个部分就是客户端从数据节点上读取数据块, DataTransferProtocol.readBlock()给出了读取操作的接口定义, 操作码是81。 DataXceiver.readBlock()则实现了DataTransfer
2020-11-23 09:43:24
5598
1
原创 Hadoop3.2.1 【 HDFS 】源码分析 : DataXceiver 解析 [一]
一. 前言DataXceiverServer主要用于监听并接收流式请求, 然后创建并启动DataXceiver对象。 DataXceiver是Receiver的子类, DataTransferProtocol真正的响应操作都是在DataXceiver类中实现的。二. run()方法DataXceiver的执行逻辑主要是在run()方法中完成的。 DataXceiver.run()方法首先根据传入的Peer对象获取此层网络的输入/ 输出流, 并对输入/ 输出流进行装饰, 然后调用父类Receiver的i
2020-11-22 00:25:01
3185
原创 Hadoop3.2.1 【 HDFS 】源码分析 : DataXceiverServer 解析
一. 前言DataXceiverServer对象用于在Datanode上监听流式接口的请求, 每当有Client通过Sender类发起流式接口请求时, DataXceiverServer就会监听并接收这个请求, 然后创建一个DataXceiver对象用于响应这个请求并执行对应的操作。二.DataXceiverServer的初始化在DataNode的初始化代码中, 会创建一个DataXceiverServer对象监听所有流式接口请求, Datanode会调用Datanode.initDataXceiv
2020-11-21 16:24:07
3291
原创 Hadoop3.2.1 【 HDFS 】源码分析 Sender和Receiver解析
..........................................一.前言二.调用流程三.Sender类四.Receiver 类一.前言DataTransferProtocol有两个子类——Sender和Receiver。其中Sender类封装了DataTransferProtocol的调用操作, 用于发起流式接口请求;Receiver类封装了DataTransferProtocol的执行操作, 用于响应流式接口请求。二.调用流程DFSClient发起了一个DataTrans
2020-11-20 19:37:46
3242
原创 Hadoop3.2.1 【 HDFS 】源码分析 : DataTransferProtocol解析
DataTransferProtocol是用来描述写入或者读出Datanode上数据的流式接口。■ readBlock(): 从当前Datanode上读取指定的数据块。■ writeBlock(): 将当前Datanode上存储的指定数据块写入数据流管道(pipeLine)中。■ transferBlock(): 将指定数据块复制(transfer) 到另一个Datanode上。 数据块复制操作是在数据流管道中的数据节点出现故障, 需要用新的数据节点替换异常的数据节点时, DFSClient调用这个
2020-11-20 18:49:26
3260
原创 Hadoop3.2.1 【 HDFS 】源码分析 : BlockPoolManager 解析
一. 前言BlockPoolManager类负责管理所有的BPOfferService实例, 对外提供添加、 删除、 启动、 停止、 关闭BPOfferService类的接口。 所有对BPOfferService的操作, 都必须通过BlockPoolManager类提供的方法来执行。DataNode.startDataNode()方法初始化了BlockPoolManager对象, 然后调用BlockPoolManager.refreshNamenodes()方法完成对BlockPoolManager的构
2020-11-20 18:24:11
2205
原创 Hadoop3.2.1 【 HDFS 】源码分析 : BPOfferService 解析
一.前言一个HDFS集群可以配置多个命名空间(Namespace) , 每个Datanode都会存储多个块池的数据块。 所以在Datanode实现中, 定义了BlockPoolManager类来管理Datanode上的所有块池, Datanode的其他模块对块池的操作都必须通过BlockPoolManager执行, 每个Datanode都有一个BlockPoolManager的实例。由于在HDFS Federation部署中, 一个Datanode会保存多个块池的数据块, 所以BlockPoolMana
2020-11-20 13:43:55
2276
[逻辑思维训练500题II].于雷.扫描版
2014-06-24
《谁说菜鸟不会数据分析》入门篇-简版电子书
2014-06-24
Thinking in UML(2 edition)
2014-06-24
JavaScript语言精粹
2014-06-24
jdk-8u251-macosx/linux/windows 多版本下载
2020-06-28
Flink基础教程.pdf
2019-05-28
深入理解计算机系统(原书第3版)PDF 计算机科学丛书 [美] 兰德尔 E.布莱恩特
2019-03-08
Java虚拟机规范(Java SE 8版) 带书签
2018-10-26
张伯毅的留言板
发表于 2020-01-02 最后回复 2020-01-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝