- 博客(60)
- 收藏
- 关注
原创 【Flink入门修炼】2-3 Flink Checkpoint 原理机制
如果让你来做一个有状态流式应用的故障恢复,你会如何来做呢?单机和多机会遇到什么不同的问题?Flink Checkpoint 是做什么用的?原理是什么?
2024-04-25 20:41:56 2024 4
原创 【编译原理】Antlr 入门使用
前面文章我们学习了编译器前端的词法和语法分析工具,本篇我们来看看如何借助 Antlr 工具,快速生成词法和语法分析代码。
2024-04-09 21:04:24 1165
原创 【Flink入门修炼】2-2 Flink State 状态
- 什么是状态?状态有什么作用?- 如果你来设计,对于一个流式服务,如何根据不断输入的数据计算呢?- 又如何做故障恢复呢?
2024-03-06 19:29:54 1135
原创 【Flink入门修炼】2-1 Flink 四大基石
前一章我们对 Flink 进行了总体的介绍。对 Flink 是什么、能做什么、入门 demo、架构等进行了讲解。本章我们将学习 Flink 重点概念、核心特性等。本篇对 Flink 四大基石进行概括介绍,是 Flink 中非常关键的四个内容。
2024-03-01 19:17:56 1223
原创 【Flink入门修炼】1-4 Flink 核心概念与架构
前面几篇文章带大家了解了 Flink 是什么、能做什么,本篇将带大家了解 Flink 究竟是如何完成这些的,Flink 本身架构是什么样的,让大家先对 Flink 有整体认知,便于后期理解。
2024-02-19 19:32:27 1253
原创 【Flink入门修炼】1-3 Flink WordCount 入门实现
本篇文章将带大家运行 Flink 最简单的程序 WordCount。先实践后理论,对其基本输入输出、编程代码有初步了解,后续篇章再对 Flink 的各种概念和架构进行介绍。下面将从创建项目开始,介绍如何创建出一个 Flink 项目;然后从 DataStream 流处理和 FlinkSQL 执行两种方式来带大家学习 WordCount 程序的开发。
2024-02-07 17:40:15 1904
原创 【Flink入门修炼】1-2 Mac 搭建 Flink 源码阅读环境
在后面学习 Flink 相关知识时,会深入源码探究其实现机制。因此,需要现在本地配置好源码阅读环境。本文搭建环境:● Mac M1(Apple Silicon)● Java 8● IDEA● Flink 官方源码
2024-02-06 14:57:36 1267
原创 【Flink入门修炼】1-1 为什么要学习 Flink?
流处理和批处理是什么?什么是 Flink?为什么要学习 Flink?Flink 有什么特点,能做什么?本文将为你解答以上问题。
2024-02-05 18:28:17 1618
原创 【深入浅出 Yarn 架构与实现】6-4 Container 生命周期源码分析
本文将深入探讨 AM 向 RM 申请并获得 Container 资源后,在 NM 节点上如何启动和清理 Container。将详细分析整个过程的源码实现。
2023-05-15 19:41:43 747 1
原创 【深入浅出 Yarn 架构与实现】6-3 NodeManager 分布式缓存
不要跳过这部分知识,对了解 NodeManager 本地目录结构,和熟悉 Container 启动流程有帮助。
2023-05-08 20:08:56 757
原创 【深入浅出 Yarn 架构与实现】6-2 NodeManager 状态机管理
NodeManager(NM)中的状态机分为三类:Application、Container 和 LocalizedResource,它们均直接或者间接参与维护一个应用程序的生命周期。
2023-04-03 20:09:49 445
原创 【深入浅出 Yarn 架构与实现】6-1 NodeManager 功能概述
本节开始将对 Yarn 中的 NodeManager 服务进行剖析。NodeManager 需要在每个计算节点上运行,与 ResourceManager 和 ApplicationMaster 进行交互。管理节点的计算资源以及调度容器。后续将对 NM 的功能职责、状态机、容器生命周期和资源隔离等方面进行讲解。本篇将从整体上对 NM 进行介绍。
2023-03-31 18:18:27 831
原创 【深入浅出 Yarn 架构与实现】5-3 Yarn 调度器资源抢占模型
本篇将对 Yarn 调度器中的资源抢占方式进行探究。分析当集群资源不足时,占用量资源少的队列,是如何从其他队列中抢夺资源的。我们将深入源码,一步步分析抢夺资源的具体逻辑。
2023-03-27 20:28:02 735
原创 【深入浅出 Yarn 架构与实现】5-2 Yarn 三种调度器
本篇文章将深入介绍 Yarn 三种调度器。Yarn 本身作为资源管理和调度服务,其中的资源调度模块更是重中之重。下面将介绍 Yarn 中实现的调度器功能,以及内部执行逻辑。
2023-03-23 19:39:44 431
原创 【深入浅出 Yarn 架构与实现】5-1 Yarn 资源调度器基本框架
资源调度器是 YARN 中最核心的组件之一,它是 ResourceManager 中的一个插拔式服务组件,负责整个集群资源的管理和分配。Yarn 默认提供了三种可用资源调度器,分别是FIFO (First In First Out )、 Yahoo! 的 Capacity Scheduler 和 Facebook 的 Fair Scheduler。 本节会重点介绍资源调度器的基本框架,在之后文章中详细介绍 Capacity Scheduler 和 Fair Scheduler。
2023-03-21 18:55:28 640
原创 【深入浅出 Yarn 架构与实现】4-6 RM 行为探究 - 申请与分配 Container
本小节介绍应用程序的 ApplicationMaster 在 NodeManager 成功启动并向 ResourceManager 注册后,向 ResourceManager 请求资源(Container)到获取到资源的整个过程,以及 ResourceManager 内部涉及的主要工作流程。
2023-03-01 20:12:01 426
原创 【深入浅出 Yarn 架构与实现】4-5 RM 行为探究 - 启动 ApplicationMaster
本节开始,将对 ResourceManager 中一些常见行为进行分析探究,看某些具体关键的行为,在 RM 中是如何流转的。本节将深入源码探究「启动 ApplicationMaster」的具体流程。
2023-02-28 20:37:35 370
原创 【深入浅出 Yarn 架构与实现】4-4 RM 管理 Application
在 YARN 中,Application 是指应用程序,它可能启动多个运行实例,每个运行实例由 —个 ApplicationMaster 与一组该 ApplicationMaster 启动的任务组成,它拥有名称、队列、优先级等属性,是一个比较宽泛的概念,可以是一个 MepReduce 作业、一个 DAG 应用程序等。YARN 中 Application 管理涉及应用程序的权限管理、启动与关闭、生命周期管理等,本节只介绍最基本的管理内容,比如权限管理、启动与关闭等,而生命周期管理则放到下一节中介绍。
2023-01-11 18:19:40 410
原创 【深入浅出 Yarn 架构与实现】4-3 RM 管理 NodeManager
本篇继续对 RM 中管理 NodeManager 的部分进行深入的讲解。主要有三个部分:检查 NM 是否存活;管理 NM 的黑白名单;响应 NM RPC 请求。
2022-12-26 19:03:20 419 3
原创 【深入浅出 Yarn 架构与实现】4-2 RM 管理 Application Master
本篇将对 RM 中管理 Application Master 的部分进行深入的讲解。下面将会介绍 RM 与 AM 整体通信执行流程,并对 RM 中涉及的对应服务进行具体讲解。为了更好的学习本篇知识,建议先熟悉以下知识点,不了解的部分可翻到前面对应的文章进行学习:
2022-12-23 21:47:50 326
原创 git cherry-pick 同步修改到另一个分支
我们在开发中有时会遇到,需要将另一个分支部分修改同步到当前分支。如下图,想把 devA 分支中 commit E 和 F,同步到下面绿色的 devB 分支中。这时候就可以使用来完成这项任务。(cherry-pick 有筛选、精选的意思)
2022-12-20 19:16:22 2005
原创 【Java面试指北】反射(1) 初识反射
如果你被问到:什么是反射?为什么需要反射、以及反射的应用?你会如何回答呢?本篇会带大家初识反射,了解反射概念和基本应用。反射的原理以及深入源码的探究将会在后面几篇介绍。
2022-12-18 23:55:37 620
原创 【Java面试指北】Exception Error Throwable 你分得清么?
读本篇文章之前,如果让你叙述一下 Exception Error Throwable 的区别,你能回答出来么?你的反应是不是像下面一样呢?你在写代码时会经常 try catch(Exception)在 log 中会看到 OutOfMemoryErrorThrowable 似乎不常见,但也大概听说过
2022-12-04 00:01:30 475
原创 【Java并发入门】03 互斥锁(上):解决原子性问题
原子性问题的源头是线程切换Q:如果禁用 CPU 线程切换是不是就解决这个问题了?A:单核 CPU 可行,但到了多核 CPU 的时候,有可能是不同的核在处理同一个变量,即便不切换线程,也有问题。所以,解决原子性的关键是「同一时刻只有一个线程处理该变量,也被称为互斥」。如何做到呢?用「锁」。
2022-12-02 22:31:03 533
原创 【Java并发入门】02 Java内存模型:看Java如何解决可见性和有序性问题
如何解决其中的可见性和有序性导致的问题,这也就引出来了今天的主角——Java 内存模型。
2022-11-30 23:39:43 183
原创 【Java并发入门】01 并发编程Bug的源头
并发编程Bug的源头:可见性、原子性和有序性问题。「CPU、内存、磁盘之间的速度差异」- 为了能同时执行多个任务,CPU 发展出时间片轮转、多核等- CPU 要从内存中读数据太慢了,所以给自己设置了缓存- CPU 读磁盘更慢了,所以可以让该线程阻塞
2022-11-28 18:56:35 323
原创 Linux输出转换命令 xargs
`xargs`命令的作用,是将标准输入转为命令行参数。原因:大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数
2022-11-25 22:00:03 703
原创 【深入浅出 Yarn 架构与实现】4-1 ResourceManager 功能概述
前面几篇文章对 Yarn 基本架构、程序基础库、应用设计方法等进行了介绍。之后几篇将开始对 Yarn 核心组件进行剖析。ResourceManager(RM)是 Yarn 的核心管理服务,负责集群管理、任务调度、状态机管理等,本篇将对 RM 总体架构进行介绍。
2022-11-22 20:03:31 781
原创 【深入浅出 Yarn 架构与实现】3-3 Yarn Application Master 编写
本篇文章继续介绍 Yarn Application 中 ApplicationMaster 部分的编写方法。
2022-11-18 20:44:07 882
原创 【深入浅出 Yarn 架构与实现】3-2 Yarn Client 编写
上篇文章介绍了编写 Yarn Application 的整体框架流程,本篇文章将详细介绍其中 Client 部分的编写方式。
2022-11-17 20:17:29 983
原创 【深入浅出 Yarn 架构与实现】3-1 Yarn Application 流程与编写方法
本篇学习 Yarn Application 编写方法,将带你更清楚的了解一个任务是如何提交到 Yarn ,在运行中的交互和任务停止的过程。通过了解整个任务的运行流程,帮你更好的理解 Yarn 运作方式,出现问题时能更好的定位。
2022-11-14 18:42:15 1238
原创 【深入浅出 Yarn 架构与实现】2-4 Yarn 基础库 - 状态机库
当一个服务拥有太多处理逻辑时,会导致代码结构异常的混乱,很难分辨一段逻辑是在哪个阶段发挥作用的。这时就可以引入状态机模型,帮助代码结构变得清晰。
2022-11-01 20:20:08 498
原创 Linux Expect 实现脚本自动交互
expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。
2022-10-25 18:32:40 333
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人