3 不清不慎

尚未进行身份认证

热爱编程,热爱生活。

等级
博文 163
排名 1w+

Docker Dockerfile详解

在前面的一篇文章中,我们介绍了如何构建镜像,其中使用Dockerfile文件是最为常用的一种方式,在本篇文章中我们将详细介绍Dockerfile构建镜像的过程以及其命令参数等等。首先我们来看看Dockerfile构建镜像的过程:从基础镜像运行一个容器执行一条指令对容器做出修改执行类似dockercommit的操作,提交一个新的镜像层再基于刚提交的镜像运行一个容器执行Dockerfi...

2019-07-07 22:46:10

Docker镜像创建,拉取以及推送

本篇文章主要讲述如何创建镜像,拉取镜像以及推送镜像到自己的仓库中。创建镜像创建镜像有两种方式:dockercommit构建容器dockerbuild使用Dockerfile文件来构建dockercommit方式来构建容器命令格式如下:例如使用下面命令就可以构建一个镜像:#构建一个镜像dockercommit-a'ljcan'-m'nginx'commi...

2019-07-07 13:00:34

实现LRU Cache(java版)

LRU算法,也叫最近最少使用算法,我们可以使用该算法来实现cache机制,简单地说就是缓存一定量的数据,当超过设定阀值的时候就把一些过期的数据删除掉,本篇文章我们来看看如何实现LRUCache,下面我们使用两种方式来实现。基于LinkedHashMap在java的集合类中有LinkedHashMap类,当参数accessOrder为true的时候,就会按照访问顺序排序,最后访问的放在最前面,...

2019-07-07 09:57:36

Linux系统常用压测工具和性能分析工具

本篇文章介绍几款linux系统性能压测以及分析工具,在实际开发环境中,我们会经常使用到它们对我们的系统进行性能分析。当我们需要判断linux系统的性能时,常常会观察几个常用的指标:平均负载、CPU使用率,IO负载等等。那么当我们需要查看系统平均负载的时候可以使用uptime命令来查看,它代表系统1分钟内、5分钟内、15分钟内的平均负载:[root@izuf64g0bbe3dug64wpdck...

2019-06-29 14:53:03

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

Spark是一个分布式计算框架,当我们提交一个任务,会划分为多个子任务分发到集群的各个节点进行计算,这里思考一个问题,Spark是如何进行消息的传递,如何将任务分发到各个节点,并且如何将计算结果汇总起来的呢?实际上,Spark内部使用Akka进行消息的传递,心跳报告等,使用Netty提供RPC服务进行数据的上传与下载功能。这点与Flink类似。块管理器BlockManager是Spark存储...

2019-06-17 10:24:43

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

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

2019-06-16 20:08:21

Flink Savepoint简单介绍

一、什么是savepoint?savepoint是通过checkpoint机制为streamingjob创建的一致性快照,比如数据源offset,状态等。需要我们手动去触发,因此,需要和checkpoint进行区分。checkpoint主要用于自动故障恢复,由Flink自动创建、拥有和发布,不需要用户去交互,当作业呗cancel的时候,checkpoint会被删除,除非设置了External...

2019-06-10 17:00:02

浅谈Kafka选举机制

Kafka是一个高性能,高容错,多副本,可复制的分布式消息系统。在整个系统中,涉及到多处选举机制,被不少人搞混,这里总结一下,本篇文章大概会从三个方面来讲解。控制器(Broker)选主分区多副本选主消费者选主控制器(Broker)选举所谓控制器就是一个Borker,在一个kafka集群中,有多个broker节点,但是它们之间需要选举出一个leader,其他的broker充当follo...

2019-06-09 00:10:46

Spark容错机制剖析

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

2019-06-06 09:43:34

Spark Streaming Window核心源码剖析

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

2019-06-05 12:40:15

Spark SQL源码剖析之SqlParser解析

在使用Spark的过程中,由于Scala语法复杂,而且更多的人越来越倾向使用SQL,将复杂的问题简单化处理,避免编写大量复杂的逻辑代码,所以我们想是不是可以开发一款类似Hive的工具,将其思想也应用在Spark之上,建立SQL来处理一些离线计算场景,由于SparkSQL应用而生。在本篇文章中,我们准备深入源码了解SparkSQL的内核组件以及其工作原理。熟悉Spark的读者都知道,当我们调用...

2019-06-04 00:18:01

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

在上篇文章中介绍了如何Flink的State状态,本篇文章接着上篇文章继续介绍Flink的Checkpoint机制。启动checkpoint机制它可以为每一个job备份了一份快照,当job遇到故障重启或者失败的时候,我们就不必从每个job的源头去重新计算,而是从最近的一个完整的checkpoint开始恢复,避免了重复计算,节省了资源,并且保证了ExactlyOnce语义。具体的使用方法以及实现...

2019-05-30 16:15:17

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

一、State状态在Flink中,它使用了State状态机制以及Checkpoint策略提供了强大的容错机制,不过我们需要注意区分它们,State状态是指一个FlinkJob中的task中的每一个operator的状态,而Checkpoint是指在某个特定的时刻下,对整个job一个全局的快照,当我们遇到故障或者重启的时候可以从备份中进行恢复。在Flink中,State中主要分为Operato...

2019-05-29 11:04:56

Flink Window介绍

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

2019-05-27 11:10:46

Flink Runtime详解

Flink运行时架构Flink集群的架构,也是典型的主从架构模型,启动Flink,它会启动JobManager以及TaskManager进程,这里以standalone模式来讲解其运行时的架构以及一些细节,集群模式后面的文章汇介绍到。JobManager是master主节点,它主要负责资源的分配、任务的调度以及集群的管理。TaskManager是从节点,如果单独运行在一台机器上则可以称作一个s...

2019-05-26 18:53:34

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

在分布式系统中,有很多复杂的理论,从CAP理论到BASE理论,我们不断的在可用性以及一致性之间做出抉择,每一部分都相当复杂,就分布式一致性而言,又有许多协议,从2PC到3PC再到paxos算法,到ZAB协议,再到Raft算法。本篇文章主要介绍Raft算法的实现过程,最近有空看了下国外的论文,这里做个简单的总结,本人水平有限,如有问题,欢迎批评指正。在介绍Raft算法之前,你肯定听说过Paxo...

2019-05-24 21:37:40

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

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

2019-05-24 00:29:49

【JVM实战】类的加载机制

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

2019-05-23 16:09:41

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

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

2019-05-21 23:35:07

Flink DataSet迭代运算

对于迭代运算,通常应用于一些数学计算,机器学习算法以及图计算等领域,在Flink中,对于批处理作业,也提供了相应的迭代运算,主要分为下面两大类:BulkIterateDeltaIterate什么是迭代运算?所谓迭代运算,就是给定一个初值,用所给的算法公式计算初值得到一个中间结果,然后将中间结果作为输入参数进行反复计算,在满足一定条件的时候得到计算结果。BulkIterate这...

2019-05-18 14:43:53
CSDN身份
  • 博客专家
奖章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周上午根据用户上周的博文发布情况由系统自动颁发。