不清不慎的博客

java大数据开发工程师、数据挖掘、人工智能、区块链兴趣爱好者。 Github地址:https://github.com/ljcan...

Spark源码剖析之数据通信模块解析

Spark是一个分布式计算框架,当 我们提交一个任务,会划分为多个子任务分发到集群的各个节点进行计算,这里思考一个问题,Spark是如何进行消息的传递,如何将任务分发到各个节点,并且如何将计算结果汇总起来的呢? 实际上,Spark内部使用Akka进行消息的传递,心跳报告等,使用Netty提供RPC...

2019-06-17 10:24:43

阅读数 15

评论数 0

Spark源码解读之Shuffle计算引擎剖析

Shuffle是Spark计算引擎的关键所在,是必须经历的一个阶段,在前面的文章中,我们剖析了Shuffle的原理以及Map阶段结果的输出与Reduce阶段结果如何读取。该篇文章是对前面两篇文章 【Spark源码解读之Shuffle原理剖析与源码分析】 【Spark存储机制源码剖析】 细节的深入探...

2019-06-16 20:08:21

阅读数 28

评论数 0

Flink Savepoint简单介绍

一、什么是savepoint? savepoint是通过checkpoint机制为streaming job创建的一致性快照,比如数据源offset,状态等。 需要我们手动去触发,因此,需要和checkpoint进行区分。checkpoint主要用于自动故障恢复,由Flink自动创建、拥有和发布,...

2019-06-10 17:00:02

阅读数 27

评论数 0

浅谈Kafka选举机制

Kafka是一个高性能,高容错,多副本,可复制的分布式消息系统。在整个系统中,涉及到多处选举机制,被不少人搞混,这里总结一下,本篇文章大概会从三个方面来讲解。 控制器(Broker)选主 分区多副本选主 消费者选主 控制器(Broker)选举 所谓控制器就是一个Borker,在一个kafka集...

2019-06-09 00:10:46

阅读数 31

评论数 0

Spark容错机制剖析

在一个分布式系统中,非常重要的一点就是容错性,Spark也不例外,当它机器发生故障的时候,可以很轻松的应对。本篇容错机制的剖析主要针对Standalone模式进行分析。 阅读本篇文章之前,你可以查看之前的【Spark源码解读之Master剖析】以及【Spark源码解读之Worker剖析】的文章,该...

2019-06-06 09:43:34

阅读数 54

评论数 0

Spark Streaming Window核心源码剖析

在Spark Streaming中,提供了窗口计算,可以转换滑动窗口内的数据。每次窗口都在DStream中滑动,窗口内的RDD将被合并生成窗口内的DStream的RDD。如下图所示为滑动窗口的操作: 从上图可以看见,window操作需要指定两个参数: 窗口长度(window length):窗...

2019-06-05 12:40:15

阅读数 43

评论数 0

Spark SQL源码剖析之SqlParser解析

在使用Spark的过程中,由于Scala语法复杂,而且更多的人越来越倾向使用SQL,将复杂的问题简单化处理,避免编写大量复杂的逻辑代码,所以我们想是不是可以开发一款类似Hive的工具,将其思想也应用在Spark之上,建立SQL来处理一些离线计算场景,由于Spark SQL应用而生。在本篇文章中,我...

2019-06-04 00:18:01

阅读数 33

评论数 0

Flink State状态以及Checkpoint机制(二)

在上篇文章中介绍了如何Flink的State状态,本篇文章接着上篇文章继续介绍Flink的Checkpoint机制。启动checkpoint机制它可以为每一个job备份了一份快照,当job遇到故障重启或者失败的时候,我们就不必从每个job的源头去重新计算,而是从最近的一个完整的checkpoint...

2019-05-30 16:15:17

阅读数 32

评论数 0

Flink State状态以及Checkpoint机制(一)

一、State状态 在Flink中,它使用了State状态机制以及Checkpoint策略提供了强大的容错机制,不过我们需要注意区分它们,State状态是指一个Flink Job中的task中的每一个operator的状态,而Checkpoint是指在某个特定的时刻下,对整个job一个全局的快照,...

2019-05-29 11:04:56

阅读数 46

评论数 0

Flink Window介绍

一、Window的分类 什么是window? Flink是一个流处理计算框架,它底层基于流处理引擎,实现了批处理与流处理,在流处理中,为了处理无限的数据集,使用window将无限的数据流切分多个有限的数据块进行计算。 我们按照具体的业务需求将window划分为KeyedWindow以及Non-Ke...

2019-05-27 11:10:46

阅读数 53

评论数 0

Flink Runtime详解

Flink运行时架构 Flink集群的架构,也是典型的主从架构模型,启动Flink,它会启动JobManager以及TaskManager进程,这里以standalone模式来讲解其运行时的架构以及一些细节,集群模式后面的文章汇介绍到。 JobManager是master主节点,它主要负责资源的分...

2019-05-26 18:53:34

阅读数 36

评论数 0

分布式一致性协议:Raft算法详解

在分布式系统中,有很多复杂的理论,从CAP理论到BASE理论,我们不断的在可用性以及一致性之间做出抉择,每一部分都相当复杂,就分布式一致性而言,又有许多协议,从2PC到3PC再到paxos算法,到ZAB协议,再到Raft算法。本篇文章主要介绍Raft算法的实现过程,最近有空看了下国外的论文,这里做...

2019-05-24 21:37:40

阅读数 86

评论数 0

如何设计一个多级缓存系统?

在一个高并发的分布式系统中,缓存系统是必不可少的一部分,大多数情况下,我们需要设计一个多级缓存系统到生产中使用,那么如何设计呢?这也是笔者在前一段时间的面试中,被问到的一个问题,虽然当时这道题过了,但是面试结束之后对自己的回答不是很满意,所以,再反复思考之后决定分享下自己的设计思路。欢迎留言批评指...

2019-05-24 00:29:49

阅读数 124

评论数 0

【JVM实战】类的加载机制

所谓虚拟机类的加载机制,就是把一个描述类的class文件加载到内存当中,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的java类型的过程。 一个类从被加载到虚拟机内存开始,到卸载出内存为止,它的主要生命周期有:加载、连接、初始化。而连接过程又被分为验证、准备、解析这几个过程。所...

2019-05-23 16:09:41

阅读数 80

评论数 0

Flink数据类型、序列化与累加器Accumulator

本篇文章简单介绍一下Flink中的数据类型与累加器以及计数器的使用。 一、数据类型 在Flink的DataSet以及DataStream中对可使用的元素添加了一些约束条件,目的是为了能够有效的分析这些类型的执行策略以及选择不同的序列化方式。 以下列举7种Flink种常用的数据类型: Java/...

2019-05-21 23:35:07

阅读数 27

评论数 0

Flink DataSet迭代运算

对于迭代运算,通常应用于一些数学计算,机器学习算法以及图计算等领域,在Flink中,对于批处理作业,也提供了相应的迭代运算,主要分为下面两大类: Bulk Iterate Delta Iterate 什么是迭代运算? 所谓迭代运算,就是给定一个初值,用所给的算法公式计算初值得到一个中间结果,然...

2019-05-18 14:43:53

阅读数 44

评论数 1

Flink DataSet Transformations【翻译】

在前面的文章中介绍了一下DataStream的一些Operator的操作,这篇文章主要讲述DataSet的一些Transformations操作。它主要有以下操作: 下面会逐一进行讲解 Map Map操作为DataSet提供了一个用户自定义的map函数,它实现了一对一的映射,并且该函数只能返回一...

2019-05-17 23:29:15

阅读数 17

评论数 0

【JVM实战】再谈GC算法

JVM GC算法,对于了解JVM的程序员,应该都不会陌生,在这篇文章中,整理一下常见的GC算法分享给大家。 GC算法 复制算法 标记清除算法(Mark-Sweep) 标记压缩算法(Mark-Compact) 分代算法(Genarational Collection) 分区算法(Region 主要...

2019-05-17 16:15:33

阅读数 26

评论数 0

【JVM实战】JVM常用参数

在虚拟机运行过程中,如果可以跟踪系统的运行状态,那么对于问题的故障排查会有一定帮助,本篇文章主要总结一些常用的参数,这样就可以在系统能够运行时监控垃圾回收,便于分析。 主要参数如下: -XX:+PrintGC 打印GC日志 -XX:+PrintGCDetails 打印详细的...

2019-05-14 16:46:57

阅读数 35

评论数 0

Flink Operator之CoGroup、Join以及Connect

在Flink中由很多Operator,大致分为两类,DataStream和DataSet,即流处理数据和批处理数据,这an文章主要讲解CoGroup、Join和Connect的使用,之所以将它们放在一起是因为它们比较相似,但也有所不同,在DataStream和DataSet中都存在这三个Opera...

2019-05-13 16:55:39

阅读数 81

评论数 0

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