ImproveJin
码龄16年
关注
提问 私信
  • 博客:165,276
    社区:9,719
    174,995
    总访问量
  • 121
    原创
  • 485,859
    排名
  • 41
    粉丝
  • 0
    铁粉

个人简介:大龄失业程序员

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:上海市
  • 加入CSDN时间: 2008-09-16
博客简介:

jinjiating的专栏

查看详细资料
个人成就
  • 获得56次点赞
  • 内容获得21次评论
  • 获得53次收藏
创作历程
  • 8篇
    2023年
  • 4篇
    2022年
  • 4篇
    2021年
  • 19篇
    2020年
  • 25篇
    2019年
  • 13篇
    2018年
  • 22篇
    2017年
  • 9篇
    2016年
  • 3篇
    2015年
  • 25篇
    2014年
  • 2篇
    2013年
  • 1篇
    2012年
  • 3篇
    2011年
成就勋章
TA的专栏
  • Career
    7篇
  • Algorithm
    21篇
  • Software Engineering
    3篇
  • Symbian
  • Linux
    8篇
  • BigData
    34篇
  • Java
    33篇
  • Database
    6篇
  • Python
    23篇
  • Hadoop
    2篇
  • Storm
    7篇
  • Architecture
    5篇
兴趣领域 设置
  • 后端
    spring boot
创作活动更多

超级创作者激励计划

万元现金补贴,高额收益分成,专属VIP内容创作者流量扶持,等你加入!

去参加
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Flink源码之Checkpoint执行流程

以下对整个流程具体说明。
原创
发布博客 2023.08.22 ·
863 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Flink源码之State创建流程

Flink内置状态管理是相比其他分布式流式处理系统最大的优势之一,不用借助外部存储组件,就可实现高效可靠的分布式状态管理,极大降低了学习和使用成本。
原创
发布博客 2023.08.15 ·
1272 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Flink源码之StreamTask启动流程

submitTask 方法核心就是构造org.apache.flink.runtime.taskmanager.Task实例,该实例继承自Runnable接口,有个Thread成员变量,构造完成后就启动线程执行Task逻辑。每个ExecutionVertex分配Slot后,JobMaster就会向Slot所在的TaskExecutor提交RPC请求执行Task,接口为TaskExecutorGateway::submitTask。
原创
发布博客 2023.08.14 ·
850 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Flink源码之JobMaster启动流程

在整个提交过程中,首先获取JobMasterService的Leader权限,然后对一个JobGraph生成一个JobMaster,JobMaster先将JobGraph转换为ExecutionGraph,转换核心逻辑在DefaultExecutionGraph::attachJobGraph方法中,最后为每个Execution申请Slot资源,对每个Execution向TM提交TaskDeploymentDescriptor调度执行。
原创
发布博客 2023.08.11 ·
1243 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Flink源码之TaskManager启动流程

从启动命令flink-daemon.sh可以看出TaskManger入口类为org.apache.flink.runtime.taskexecutor.TaskManagerRunner这些服务在构造TaskExecutor时作为构造函数参数传入构造TaskExecutor前会先构造TaskManagerServices辅助TaskExecutor实现其核心功能TaskManager中管理Slot的实现类TaskSlotTableImpl,该实例记录了Slot的分配信息。
原创
发布博客 2023.08.10 ·
1045 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Flink源码之JobManager启动流程

JobManager的启动过程就是创建三大组件RestServer/RM/Dispacher实例初始化的过程,RestSever通过Netty启动HTTP服务,RM/Dispacher被AkkaRpcService包装成AkkaActor提供本地或远程RPC服务,RestServer仅仅是接受请求解析消息后由具体Handler处理,JobGrap提交执行会转发给Dispatcher处理。
原创
发布博客 2023.08.09 ·
1030 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Flink源码之RPC

因此实现一个具体的Component只要同时继承RpcGateway和RpcEndPoint就能实现将RpcGateway的业务接口暴露出去提供远程服务,在JobManager/TaskManger启动过程中,都是先创建一个RpcService实例,然后new出各个业务组件实例,这样各个组件完成初始化后就能各司其职,协调配合完成具体业务功能。组件间通信基于Actor, 负责RPC通信功能则被抽象成一个RPCEndPoint。这些接口的具体实现就是组件提供的核心功能。
原创
发布博客 2023.08.08 ·
780 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Python登录QQ邮箱发送邮件

Python发QQ邮件
原创
发布博客 2023.08.08 ·
314 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Spark中Join实现原理

spark中join实现方式
翻译
发布博客 2022.11.21 ·
2479 阅读 ·
2 点赞 ·
1 评论 ·
14 收藏

字节面试题求累计UV

字节面试题求累计UV
原创
发布博客 2022.11.19 ·
494 阅读 ·
2 点赞 ·
1 评论 ·
4 收藏

Redis笔记

Redids笔记
原创
发布博客 2022.11.19 ·
557 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Roaring Bitmap原理

最近面试字节,被问roaring bitmap原理,虽然说之前看过,时间久了细节忘了,再次mark下,这边文章讲的很透彻。
原创
发布博客 2022.11.18 ·
156 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java中5中发送HTTP请求的的方式

发送HTTP请求时现代编程中的核心功能,也是我们学习一种编程语言时最先想做的事。在Java中,有多种方式实现此功能,比如JDK或第三方库,这篇文章将会介绍我所知的Java中HTTP客户端,如果你使用过其他的,那很好,请告诉我。这篇文章将会涉及:JDK中:HttpURLConnectionHttpClient流行的第三方库:ApacheHttpClientOkHttpRetrofit我将会使用 NASA APIs 中每天一图Astronomy Picture of the Day做为示
翻译
发布博客 2021.12.24 ·
350 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

ETL优化之道

天下武功,唯快不破。ETL Job优化的目标是执行快,耗费时间更短,总结起来有以下方式:增加硬件资源,比如增大内存、CPU等,但优化往往是在资源不足的情况下数据缓存,空间换时间服务常驻,减少初始化化时间减少输入数据量,常用以下技术数据压缩,缓存中能存放更多数据索引+BloomFilter,也是空间换时间,加快数据查找速度列裁剪,原理也是提高了缓存利用率谓词下推,减少扫描数据,一般要借助预分区或索引相关技术数据分区分桶避免重启读取相同数据,比如对同一张表多次查询UNIO
原创
发布博客 2021.12.18 ·
659 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

数据倾斜产生原因及应对之道

产生数据倾斜的根本原因是某个task处理数据过多,执行时间较长,导致整个Job执行时间长,因此解决数据倾斜的根本之道就是避免过多的数据进入同一个task,总结起来主要有以下方式:Group By产生数据倾斜直接增加task并行度,简单粗暴,但并不一定能正在解决问题。倾斜是由多个key组合输入一个task导致数据过多, 这种方式有效,但如果存在单个hot key数据量大则无效。预聚合,类似于Map Combine, 相当与把聚合运算提前分散到多个task, 减少最终聚合task的输入数据量hi
原创
发布博客 2021.12.17 ·
1260 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

理解LSM树:频繁写的数据库基石

log-structured merge-tree(LSM tree)是可支持大量写的一种数据结构,写操作被优化成顺序写,LSM树是许多数据库背后的核心数据结构,包括BigTable, Cassandra, Scylla, 和 RocksDB.SSTablesLSM树在磁盘上以有序表(Sorted String Table)的形式存在。下图所示,SSTable存储了以key排序的key-value键值对,其中name为key。一个SSTable是由多个排序的文件组成,每个文件是一个Segment, 这些
翻译
发布博客 2021.12.15 ·
227 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

最详细的HyperLogLog介绍

不仅有原理,还有空间复杂度分析
转载
发布博客 2020.08.06 ·
1766 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

动态规划之最大正方形

最大的以 1 为边界的正方形给你一个由若干 0 和 1 组成的二维网格 grid,请你找出边界全部由 1 组成的最大 正方形 子网格,并返回该子网格中的元素数量。如果不存在,则返回 0。[leetcode] public int largest1BorderedSquare(int[][] grid) { int n = grid.length; int[] dp = new int[n]; for(int i=0;i<n;++i) {
原创
发布博客 2020.07.09 ·
321 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

动态规划之最低票价

在一个火车旅行很受欢迎的国度,你提前一年计划了一些火车旅行。在接下来的一年里,你要旅行的日子将以一个名为 days 的数组给出。每一项是一个从 1 到 365 的整数。火车票有三种不同的销售方式:一张为期一天的通行证售价为 costs[0] 美元;一张为期七天的通行证售价为 costs[1] 美元;一张为期三十天的通行证售价为 costs[2] 美元。通行证允许数天无限制的旅行。 例如,如果我们在第 2 天获得一张为期 7 天的通行证,那么我们可以连着旅行 7 天:第 2 天、第 3 天、第 4
原创
发布博客 2020.07.09 ·
358 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

快排应用-第k大元素

在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。leetcode public int findKthLargest(int[] nums, int k) { return findKthLargest(nums, 0, nums.length,k); } private int findKthLargest(int[] nums, int start, int end, int k) {
原创
发布博客 2020.06.18 ·
244 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多