- 博客(14)
- 资源 (1)
- 收藏
- 关注
原创 Flink源码系列——指标监测
1、Metric简介Flink对于指标监测有一套自己的实现,指标的统计方式有四种,这些指标都实现了Metric这个接口,而Metric这个接口只是一个标识,本身并没有定义如何方法接口,部分子类的继承关系如下所示。 从图中可以看出,Metric这个接口有四个直接子类,分别是: Gauge —— 最简单的度量指标,只是简单的返回一个值,比如返回一个队列中当前元素的个数; Cou...
2018-03-20 14:48:45
8486
4
原创 Flink源码系列——TaskManager处理SubmitTask的过程
接《Flink源码系列——JobManager处理SubmitJob的过程》,在从JobManager中,将SubmitTask提交到TaskManager后,继续分析TaskManager的处理逻辑。 TaskManager是个Actor,混入了LeaderSessionMessageFilter这个trait,所以在从JobManager接收到JobManagerMessages.Leade...
2018-03-16 18:15:42
3543
原创 Flink源码系列——JobManager处理SubmitJob的过程
接《Flink源码系列——获取JobGraph的过程》,在获取到JobGraph后,客户端会封装一个SubmitJob消息,并将其提交给JobManager,本文就接着分析,JobManager在收到SubmitJob消息后,对其处理逻辑。JobManager是一个Actor,其对接受到的各种消息的处理入口是handleMessage这个方法,其中对SubmitJob的处理入口如下:ove...
2018-03-16 15:33:13
6699
原创 Flink源码系列——获取JobGraph的过程
接《Flink源码系列——获取StreamGraph的过程》获取到StreamGraph后,继续分析,如果通过获取到的StreamGraph来转化为JobGraph。转化逻辑在StreamingJobGraphGenerator这个类中,入口是createJobGraph(StreamGraph)方法。先是初始化了一个StreamingJobGraphGenerator的实例,StreamingJ...
2018-03-10 17:41:54
3215
1
原创 Flink源码系列——获取StreamGraph的过程
接着《Flink源码系列——一个简单的数据处理功能的实现过程》一文的结尾继续分析,在完成对数据流的转换操作之后,需要执行任务,这时会调用如下代码:env.execute("Socket Window WordCount");在StreamExecutionEnvironment中,这是一个抽象方法,具体的实现在其子类中,其子类StreamContextEnvironment的实现如下:...
2018-03-09 16:19:06
2084
原创 Flink源码系列——Flink中一个简单的数据处理功能的实现过程
在Flink中,实现从指定主机名和端口接收字符串消息,对接收到的字符串中出现的各个单词,每隔1秒钟就输出最近5秒内出现的各个单词的统计次数。代码实现如下:public class SocketWindowWordCount { public static void main(String[] args) throws Exception { /** 需要连接...
2018-03-08 18:40:05
12178
3
原创 Netty源码系列(2)——ServerBootstrap
先上一段经典使用姿势的样例代码。 EventLoopGroup bossGroup = new NioEventLoopGroup(1); EventLoopGroup workerGroup = new NioEventLoopGroup(); try { ServerBootstrap b = new ServerBootst
2017-12-24 19:02:57
363
原创 Netty源码分析(1)——Bootstrap
开始之前,还是先贴一段netty客户端的经典使用姿势,如下: try { // 通过无参构造函数,新建一个Bootstrap实例 Bootstrap b = new Bootstrap(); // 设置EventLoop线程组 b.group(new NioEventLoopGroup())
2017-12-24 18:48:59
293
原创 AKKA-源码-Actor的结构设计
这是一个很简单的AKKA的使用实例,功能也很简单,就是创建一个名叫example1的actor,然后向其发送一条消息hello akka,而actor在接受到消息时,将其打印出来。object Example1 extends App { val actorSystem : ActorSystem = ActorSystem.create("exampleSystem") val a
2017-08-12 11:40:11
1228
1
原创 AKKA-源码-mailbox构建的主要逻辑
ActorSystem中的一个变量mailboxes,定义如下:val mailboxes: Mailboxes = new Mailboxes(settings, eventStream, dynamicAccess, deadLetters)MailBoxes的具体定义如下:private[akka] class Mailboxes( val settings: ActorSystem.Se
2017-08-12 11:10:11
4318
原创 AKKA-源码-dispatcher的构建过程
ActorSystem中对dispatcher的定义如下val dispatchers: Dispatchers = new Dispatchers(settings, DefaultDispatcherPrerequisites( threadFactory, eventStream, scheduler, dynamicAccess, settings, mailboxes, default
2017-08-12 10:56:21
1643
原创 Kylin源码解析——Cube构建过程中如何实现降维
-维度简述Kylin中Cube的描述类CubeDesc有两个字段,rowkey和aggregationGroups。@JsonProperty("rowkey")private RowKeyDesc rowkey;@JsonProperty("aggregation_groups")private List<AggregationGroup> aggregationGroups;其中rowkey
2017-06-26 00:00:56
3731
1
原创 Kylin源码解析——从CubingJob的构建过程看Kylin的工作原理
在Kylin中通过数据源、计算引擎、存储之间的相互协作来实现CubeSegment的构建,向Kylin服务端发送构建新的CubeSegment的请求后,会走到JobService的submitJob方法中,CubingJob构建入口如下: job = EngineFactory.createBatchCubingJob(newSeg, submitter);从这里可以看出,CubingJob的构建
2017-06-22 21:48:32
3811
1
原创 logback 日志不输出到指定文件
在使用logback作为日志输出的时候,会遇到日志并没有按照logback.xml中的配置进行输出,出现这一问题的原因,有如下可能。-原因1:与log4j的jar包冲突 采用logback作为日志输出时,不能包含如下依赖,如果加入该依赖,会导致日志都输出到log4j的日志文件中<dependency> <groupId>org.slf4j</groupId> <artifactId
2017-06-13 11:28:28
8073
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人