自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

笨鸟先飞的博客

Stay hungry, stay foolish.

  • 博客(59)
  • 收藏
  • 关注

原创 【Java面试指北】单例模式

单线程和多线程下的单例模式

2024-04-10 20:40:14 640

原创 【编译原理】Antlr 入门使用

前面文章我们学习了编译器前端的词法和语法分析工具,本篇我们来看看如何借助 Antlr 工具,快速生成词法和语法分析代码。

2024-04-09 21:04:24 821

原创 【编译原理】手工打造语法分析器

上一篇「词法分析器」将字符串拆分为了一个一个的 token。本篇我们将 token 变成语法树。

2024-04-07 20:03:53 896

原创 【编译原理】手工打造词法分析器

带你手工打造词法分析器

2024-03-28 19:37:47 300

原创 【Flink入门修炼】2-2 Flink State 状态

- 什么是状态?状态有什么作用?- 如果你来设计,对于一个流式服务,如何根据不断输入的数据计算呢?- 又如何做故障恢复呢?

2024-03-06 19:29:54 1056

原创 【Flink入门修炼】2-1 Flink 四大基石

前一章我们对 Flink 进行了总体的介绍。对 Flink 是什么、能做什么、入门 demo、架构等进行了讲解。本章我们将学习 Flink 重点概念、核心特性等。本篇对 Flink 四大基石进行概括介绍,是 Flink 中非常关键的四个内容。

2024-03-01 19:17:56 1112

原创 【Flink入门修炼】1-4 Flink 核心概念与架构

前面几篇文章带大家了解了 Flink 是什么、能做什么,本篇将带大家了解 Flink 究竟是如何完成这些的,Flink 本身架构是什么样的,让大家先对 Flink 有整体认知,便于后期理解。

2024-02-19 19:32:27 1097

原创 【Flink入门修炼】1-3 Flink WordCount 入门实现

本篇文章将带大家运行 Flink 最简单的程序 WordCount。先实践后理论,对其基本输入输出、编程代码有初步了解,后续篇章再对 Flink 的各种概念和架构进行介绍。下面将从创建项目开始,介绍如何创建出一个 Flink 项目;然后从 DataStream 流处理和 FlinkSQL 执行两种方式来带大家学习 WordCount 程序的开发。

2024-02-07 17:40:15 1581

原创 【Flink入门修炼】1-2 Mac 搭建 Flink 源码阅读环境

在后面学习 Flink 相关知识时,会深入源码探究其实现机制。因此,需要现在本地配置好源码阅读环境。本文搭建环境:● Mac M1(Apple Silicon)● Java 8● IDEA● Flink 官方源码

2024-02-06 14:57:36 1151

原创 【Flink入门修炼】1-1 为什么要学习 Flink?

流处理和批处理是什么?什么是 Flink?为什么要学习 Flink?Flink 有什么特点,能做什么?本文将为你解答以上问题。

2024-02-05 18:28:17 1573

原创 【深入浅出 Yarn 架构与实现】6-4 Container 生命周期源码分析

本文将深入探讨 AM 向 RM 申请并获得 Container 资源后,在 NM 节点上如何启动和清理 Container。将详细分析整个过程的源码实现。

2023-05-15 19:41:43 650 1

原创 【深入浅出 Yarn 架构与实现】6-3 NodeManager 分布式缓存

不要跳过这部分知识,对了解 NodeManager 本地目录结构,和熟悉 Container 启动流程有帮助。

2023-05-08 20:08:56 650

原创 【深入浅出 Yarn 架构与实现】6-2 NodeManager 状态机管理

NodeManager(NM)中的状态机分为三类:Application、Container 和 LocalizedResource,它们均直接或者间接参与维护一个应用程序的生命周期。

2023-04-03 20:09:49 395

原创 【深入浅出 Yarn 架构与实现】6-1 NodeManager 功能概述

本节开始将对 Yarn 中的 NodeManager 服务进行剖析。NodeManager 需要在每个计算节点上运行,与 ResourceManager 和 ApplicationMaster 进行交互。管理节点的计算资源以及调度容器。后续将对 NM 的功能职责、状态机、容器生命周期和资源隔离等方面进行讲解。本篇将从整体上对 NM 进行介绍。

2023-03-31 18:18:27 691

原创 【深入浅出 Yarn 架构与实现】5-3 Yarn 调度器资源抢占模型

本篇将对 Yarn 调度器中的资源抢占方式进行探究。分析当集群资源不足时,占用量资源少的队列,是如何从其他队列中抢夺资源的。我们将深入源码,一步步分析抢夺资源的具体逻辑。

2023-03-27 20:28:02 619

原创 【深入浅出 Yarn 架构与实现】5-2 Yarn 三种调度器

本篇文章将深入介绍 Yarn 三种调度器。Yarn 本身作为资源管理和调度服务,其中的资源调度模块更是重中之重。下面将介绍 Yarn 中实现的调度器功能,以及内部执行逻辑。

2023-03-23 19:39:44 366

原创 【深入浅出 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 536

原创 【深入浅出 Yarn 架构与实现】4-6 RM 行为探究 - 申请与分配 Container

本小节介绍应用程序的 ApplicationMaster 在 NodeManager 成功启动并向 ResourceManager 注册后,向 ResourceManager 请求资源(Container)到获取到资源的整个过程,以及 ResourceManager 内部涉及的主要工作流程。

2023-03-01 20:12:01 373

原创 【深入浅出 Yarn 架构与实现】4-5 RM 行为探究 - 启动 ApplicationMaster

本节开始,将对 ResourceManager 中一些常见行为进行分析探究,看某些具体关键的行为,在 RM 中是如何流转的。本节将深入源码探究「启动 ApplicationMaster」的具体流程。

2023-02-28 20:37:35 322

原创 【深入浅出 Yarn 架构与实现】4-4 RM 管理 Application

在 YARN 中,Application 是指应用程序,它可能启动多个运行实例,每个运行实例由 —个 ApplicationMaster 与一组该 ApplicationMaster 启动的任务组成,它拥有名称、队列、优先级等属性,是一个比较宽泛的概念,可以是一个 MepReduce 作业、一个 DAG 应用程序等。YARN 中 Application 管理涉及应用程序的权限管理、启动与关闭、生命周期管理等,本节只介绍最基本的管理内容,比如权限管理、启动与关闭等,而生命周期管理则放到下一节中介绍。

2023-01-11 18:19:40 371

原创 【深入浅出 Yarn 架构与实现】4-3 RM 管理 NodeManager

本篇继续对 RM 中管理 NodeManager 的部分进行深入的讲解。主要有三个部分:检查 NM 是否存活;管理 NM 的黑白名单;响应 NM RPC 请求。

2022-12-26 19:03:20 388 3

原创 当你的对象想要一棵圣诞树时

当你的对象想要一棵圣诞树时专属于 TA 的浪漫给你最爱的人送上一棵圣诞树吧。

2022-12-25 21:37:30 121

原创 【深入浅出 Yarn 架构与实现】4-2 RM 管理 Application Master

本篇将对 RM 中管理 Application Master 的部分进行深入的讲解。下面将会介绍 RM 与 AM 整体通信执行流程,并对 RM 中涉及的对应服务进行具体讲解。为了更好的学习本篇知识,建议先熟悉以下知识点,不了解的部分可翻到前面对应的文章进行学习:

2022-12-23 21:47:50 294

原创 git cherry-pick 同步修改到另一个分支

我们在开发中有时会遇到,需要将另一个分支部分修改同步到当前分支。如下图,想把 devA 分支中 commit E 和 F,同步到下面绿色的 devB 分支中。这时候就可以使用来完成这项任务。(cherry-pick 有筛选、精选的意思)

2022-12-20 19:16:22 1739

原创 【Java面试指北】反射(1) 初识反射

如果你被问到:什么是反射?为什么需要反射、以及反射的应用?你会如何回答呢?本篇会带大家初识反射,了解反射概念和基本应用。反射的原理以及深入源码的探究将会在后面几篇介绍。

2022-12-18 23:55:37 586

原创 【Java面试指北】Exception Error Throwable 你分得清么?

读本篇文章之前,如果让你叙述一下 Exception Error Throwable 的区别,你能回答出来么?你的反应是不是像下面一样呢?你在写代码时会经常 try catch(Exception)在 log 中会看到 OutOfMemoryErrorThrowable 似乎不常见,但也大概听说过

2022-12-04 00:01:30 433

原创 【Java并发入门】03 互斥锁(上):解决原子性问题

原子性问题的源头是线程切换Q:如果禁用 CPU 线程切换是不是就解决这个问题了?A:单核 CPU 可行,但到了多核 CPU 的时候,有可能是不同的核在处理同一个变量,即便不切换线程,也有问题。所以,解决原子性的关键是「同一时刻只有一个线程处理该变量,也被称为互斥」。如何做到呢?用「锁」。

2022-12-02 22:31:03 512

原创 【Java并发入门】02 Java内存模型:看Java如何解决可见性和有序性问题

如何解决其中的可见性和有序性导致的问题,这也就引出来了今天的主角——Java 内存模型。

2022-11-30 23:39:43 157

原创 【Java并发入门】01 并发编程Bug的源头

并发编程Bug的源头:可见性、原子性和有序性问题。「CPU、内存、磁盘之间的速度差异」- 为了能同时执行多个任务,CPU 发展出时间片轮转、多核等- CPU 要从内存中读数据太慢了,所以给自己设置了缓存- CPU 读磁盘更慢了,所以可以让该线程阻塞

2022-11-28 18:56:35 296

原创 Linux输出转换命令 xargs

`xargs`命令的作用,是将标准输入转为命令行参数。原因:大多数命令都不接受标准输入作为参数,只能直接在命令行输入参数,这导致无法用管道命令传递参数

2022-11-25 22:00:03 669

原创 【深入浅出 Yarn 架构与实现】4-1 ResourceManager 功能概述

前面几篇文章对 Yarn 基本架构、程序基础库、应用设计方法等进行了介绍。之后几篇将开始对 Yarn 核心组件进行剖析。ResourceManager(RM)是 Yarn 的核心管理服务,负责集群管理、任务调度、状态机管理等,本篇将对 RM 总体架构进行介绍。

2022-11-22 20:03:31 673

原创 【深入浅出 Yarn 架构与实现】3-3 Yarn Application Master 编写

本篇文章继续介绍 Yarn Application 中 ApplicationMaster 部分的编写方法。

2022-11-18 20:44:07 829

原创 【深入浅出 Yarn 架构与实现】3-2 Yarn Client 编写

上篇文章介绍了编写 Yarn Application 的整体框架流程,本篇文章将详细介绍其中 Client 部分的编写方式。

2022-11-17 20:17:29 897

原创 【深入浅出 Yarn 架构与实现】3-1 Yarn Application 流程与编写方法

本篇学习 Yarn Application 编写方法,将带你更清楚的了解一个任务是如何提交到 Yarn ,在运行中的交互和任务停止的过程。通过了解整个任务的运行流程,帮你更好的理解 Yarn 运作方式,出现问题时能更好的定位。

2022-11-14 18:42:15 1159

原创 Intellij IDEA 中 .properties文件中文乱码

Intellij IDEA 中 .properties文件中文乱码

2022-11-10 19:56:13 1662 1

原创 【深入浅出 Yarn 架构与实现】2-4 Yarn 基础库 - 状态机库

当一个服务拥有太多处理逻辑时,会导致代码结构异常的混乱,很难分辨一段逻辑是在哪个阶段发挥作用的。这时就可以引入状态机模型,帮助代码结构变得清晰。

2022-11-01 20:20:08 460

原创 Mac 安装多版本 protoc / protobuf

在 mac 环境下安装多版本 protobuf

2022-10-31 20:20:19 2735

原创 Python datetime 时区转换大坑

Python datetime 时区转换大坑

2022-10-28 19:26:48 764 1

原创 Linux Expect 实现脚本自动交互

expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。

2022-10-25 18:32:40 253

原创 【深入浅出 Yarn 架构与实现】2-3 Yarn 基础库 - 服务库与事件库

一个庞大的分布式系统,各个组件间是如何协调工作的?组件是如何解耦的?线程运行如何更高效,减少阻塞带来的低效问题?本节将对 Yarn 的服务库和事件库进行介绍,看看 Yarn 是如何解决这些问题的。

2022-10-13 20:23:33 1227

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除