- 博客(83)
- 资源 (3)
- 问答 (2)
- 收藏
- 关注
原创 重读 《Paxos Made Simple》
重读 《Paxos Made Simple》为什要用paxos?paxos推理过程有什么值得关注的细节?重读paxos 带来了很多的思考。
2020-05-03 17:10:52 363
原创 Presto 无active worker的一次定位过程
从presto无active worker的问题出发,一步步通过接口和源码定位问题:1. 如何获取node的信息2. 如何确定worker的状态;3. 如何查看worker的具体详情;4. 版本号是怎么确立的。
2019-09-29 21:16:34 1381 1
原创 翻开源码看Spark是如何确立RDD分区数的
1. Bucketed RDD 和Non Bucketed RDD的区别2. 说明maxSplitBytes 的计算方式,结合实例说明相关参数和计算过程;3. 通过maxSplitBytes 看小文件的合并方式4. 一些思考和疑问。
2019-09-28 17:27:38 605
原创 Presto worker发现机制 (on k8s)
1. Presto依靠apache airlift实现服务发现;2. worker上配置有discovery.uri, 指定了discovery服务的地址,也就是各node汇报自己信息的目的地址;3. worker上配置有本节点的信息,可以改成域名,可自定义;4. airlift将节点信息汇报称为Announce,源码中discovery模块,有服务定时announce的逻辑代码;5. announce的方法可以从类“**HttpDiscoveryAnnouncementClient**”中发现,通
2019-09-21 15:54:23 2285
原创 Apache Flink中Watermark、Window、State三者的关系
Watermark和Window的关系?Window和Watermark是基于key的么?Window和State的关系?本文主要从这三个问题入手来理解Watermark、Window、State三者之间的联系
2019-05-29 11:48:26 2434 7
原创 Flink状态管理(二)状态数据结构和注册流程
Flink的状态存储算的是框架的一个精华,本文结合代码理解状态的注册过程,观察数据的存储结构
2019-05-21 18:06:57 1374 1
原创 解读Flink双流Join
基本概念双流Join是Flink面试的高频问题。一般情况下说明以下几点基本就可以cover了:Join大体分类只有两种:Window Join和Interval Join。Window Join又可以根据Window的类型细分出3种:Tumbling Window Join、Sliding Window Join、Session Widnow Join。Windows类型的join都是利...
2019-05-04 16:04:21 17930 3
原创 Flink Partitioning,不只是Shuffle
在Flink中,partiioning可以细分为Shuffle、Rebalance、Rescale、Broadcast多种。本文也通过channelSelector的实现来窥探partitioning的过程。
2019-04-18 21:56:43 6262
原创 Flink状态管理(一) 原理和数据持久化
前言Flink documentation 中 “work with state” 中提到了Flink的状态恢复机制。实现思想来源于Chandy-Lamport的分布式快照算法。分别对理论和源码了解后,发现Flink其实是算法的一个极简实现。具体来说一下怎么来简化实现的。Chandy-Lamport 分布式快照算法熟肉版文章中通过Token传递的两个典型场景来分析分布式快照应该遵循的法则:...
2019-04-18 17:49:14 2187
原创 理解分布式一致性协议Paxos
Make it SimpleQuestion:大名鼎鼎的Paxos协议是啥?Ansower:“分布式一致性协议”。这么逼格的术语,就问你怕不怕??能不能搞的中国话一点,简单一点,而不是翻译《Paxos Made Simple》呢?一直觉得Lesile Lamport的脑回路和常人不一样好伐。文章前面部分一眼都懂,后面的,眼睛瞄瞎都不一定看得懂。本文并不是完整的讲解PAXOS算法,但是希望这些能...
2019-03-19 09:07:58 377
原创 Chandy Lamport分布式快照(全局状态决策)算法阅读总结
初衷Flink快照机制以Chandy&Lamport的经典分布式算法为理论基础。算法原文地址:https://lamport.azurewebsites.net/pubs/chandy.pdf该算法的结论很简单,不少同行进行过翻译/解读。详看原文的动机是自己立了个内部培训的Flag,结果原文看了近一个星期才达到可培训的程度。时隔数月,记忆稍显模糊,那就再梳理一次吧。主要依据行文结构进行...
2019-03-19 08:55:18 1042 3
原创 Flink 一键更换用户程序(with Python3)
背景开发过程中会将JAR提交到Flink上集群上运行,结果发现有错。然后改代码、cancel老的job、删除老的jar包,上传新的jar包。然后上面的步骤一天重复个N次。于是用python,结合Flink Rest Api的说明文档,搞个脚本去跑。Flink Rest API官网地址:https://ci.apache.org/projects/flink/flink-docs-relea...
2019-03-13 11:54:31 1015 1
原创 Flink JAR包上传和运行逻辑
文章目录说明启动ResetServer注册HandlerUpload JARRun Jar生成JobGraph的过程调用用户程序main方法执行用户程序main方法执行execute (和接触过一个概念很类似-打桩测试)提交JobGraphExectionGraph Deploy的过程说明目标:走读Flink Clint中Upload jar、Run jar相关代码源码版本:1.6.1部...
2019-02-08 11:21:48 15679
原创 Flink 远程调试
Flink 远程调试原文链接https://cwiki.apache.org/confluence/display/FLINK/Remote+Debugging+of+Flink+Clusters 不好意思,按照原文操作,是有BUG的。BUG说明Flink的文档中告诉你这么操作,在conf/flink-conf.yaml中添加如下一行:-agentlib:jdwp...
2018-04-28 10:41:43 5023
原创 Kafka 设计
本文是对kafka Document中Design一段的理解和整理。涉及kafka的设计初衷(用户场景)、据持久化、效率、数据查询、Producer、Consumer、Partition、Replication、日志压缩等。
2017-11-30 20:06:52 406
原创 IO分类
容易模糊的两种分类IO的分类,从两个角度可以分为:阻塞/非阻塞 & 同步/异步。如果进行细分,可以衍生出4种组合:同步阻塞、异步非阻塞….通常很少有人会去细究,阻塞和同步也是混着叫。本次总结基本就是要扣细节。要想分得清,得明白这两种分类是对什么分的类,分类依据是什么。先甩一个结果: 分类 分类对象 分类依据 阻塞/非阻塞 IO接口 是否需要等待底层数据
2017-10-11 16:48:31 2607
原创 Trident API 简介
1. 简介Storm作为流式计算框架,提供了spout和bolt接口,我们自己实现接口,然后将spout和bolt组合成topology,就构成了一个流的处理过程。Trident 是Storm的上层封装,提供更加上层的操作方法和接口,提供基于状态的操作。多数情况下,我们实际接触的是Trident
2016-11-02 13:40:00 659
原创 Trident状态机制
如何理解有状态和无状态啊?一个数据淌过拓扑的时候,有状态相对于无状态的区别,就是我们知道它从哪里来的,知道当前流经过了那些节点的处理。是错误回滚的先决条件。这篇文档从Spout和State两方面入手,着重讲数据重放和出错处
2016-10-31 22:19:37 532
原创 Storm窗口机制
storm可同时处理窗口内的所有tuple。可以从时间或数量上来对窗口进行划分,窗口由如下两个因素决定:窗口的长度,可以是时间或Tuple数量;滑动间隔(sliding Interval),同样也可以是时间或Tuple数量,后面Sliding Window中介绍;
2016-10-28 10:23:35 6500 1
原创 Python 比较static method和class method
static method只是借用了类的namespace,本质上开始可以认为是一个function。所以将static method和 class method拿来比较就没有意思了。
2016-09-26 15:26:45 1116
原创 Amabri 组件配置的生成/替换
配置项是从页面来,组件启动的时候要带上去。这里就有个配置生成/配置转化的过程。玩法要义:抛开组件自带的配置文件,让amabri给你生成个配置文件,启动时传新的配置文件。
2016-09-23 17:41:12 852
原创 confluent 对kafka格式化数据的处理
1. 说明关注重点:confluent版本对timestamp等类型的支持基本是残的。本次梳理相关处理流程,并尝试修复该问题。看数据如何变迁。
2016-09-22 14:42:24 5040
原创 amabri服务状态监控和PID目录、文件玩法
1. amabri需要检测服务进程状态,基本玩法是服务启动后将进程ID记录在一个特定文件。ambari定时检测文件是否存在,PID对应进程是否存在。2. PID文件和目录怎么玩
2016-09-09 11:16:32 1208
原创 centos7 安装nmon
centos7 安装nmon下载官网下载:http://nmon.sourceforge.net/pmwiki.php?n=Site.Download centos7 x86的最新的安装包 nmon16e_mpginc.tar.gz 安装解压:tar -zxf nmon16e_mpginc.tar.gz 拷贝 : cp nmon_x86_64_centos7 /usr/local/bin/
2016-08-23 18:28:31 4754
原创 rdkafka(kafka C lib) 数据写入流程
将rdkafka数据写入过程分为两个部分:1. 用户程序调用相关接口,produce数据;2. rdkafka内部线程异步发送数据;
2016-07-26 14:21:17 7411
原创 confluent 版本比较 3.0.0 vs 2.0.0
Confluent从2.0.0到3.0.0升了两个版本,中间还有个2.0.1版本。两次升级过程似乎都是和kafka的重要升级相对应的。原文出处:http://docs.confluent.io/3.0.0/upgrade.html3.0.0 release note:1. kafka streams新增功能,JAR包形式,是kafka数据一种轻量化流式处理工具。和流式处理框架如sp
2016-07-22 09:28:05 3036
原创 kafka 0.9.0.0 rebalance后部分分区不再读数据
kafka 0.9.0.0 版本,rebalance可能导致部分consumer不能再消费分区数据;fetched和consumed标记设置的时机不同。但是发起fecth请求时,要求两个标记内容一致。
2016-07-21 14:28:22 3361
原创 kafka connect到底会不会重写/丢失数据
1. 从hdfs 中根据文件名拿到最后一条记录的offset,假设为*12345678*;2. 通知kafka 该分区的数据,connect consumer group下次从*12345678*开始读数据;这个流程基本保证了数据不会重写,但是会丢。数据丢失的情况:
2016-07-13 16:09:09 3566 1
原创 Kafka connect的offset commit机制
“offset.storage.topioc”的含义。1 . 主要是给SourceTask来记录Kafka connector对源数据的消费状态;2 . SinkTask用不到;1. 调用task的flush机制记录offset;2. 异步向kafka Server commit offset
2016-07-13 13:44:33 14371 1
原创 建kafka gradle工程解决证书认证问题
Down了份kafka confluent特供版本,对应版本号是3.0.0。创建gradle工程,提示认证不过,提示”Cause: peer not authenticated “之类的。 1. 用浏览器访问对应的网站(都访问不通就不要继续了); 2. 导出证书,各浏览器差别不大;3. 将证书导入jre
2016-07-11 20:25:28 3813
原创 librdkafka 打印连接断开错误
kafka 0.9.0+ 版本会每隔一段时间主动关闭空闲连接,默认是10分钟。在librdkafka中,有一个决定是否打印断连信息的开关。如果对接的是0.9.0+版本的kafka,建议关闭。非关闭状态下,librdkafka可能会打印断连接信息,实际不会丢数据。
2016-07-08 16:17:33 14580 3
原创 kafka connect rebalance时herder大概率异常
如果因为some reason触发了task的rebalance,herder work可能发生异常,导致connect进程退出。1. herder close sink worker时,不要走acquire流程;2. herder close sink worker时,先等待一定时长(sleep或者加锁)3. 在V3.0.0 版本,框架上做了改动,herder 只是置位close标记,不错其他的操作。
2016-07-07 11:17:15 3478
原创 kafka hdfs connect 会产生只有一个记录的小文件
如果用kafka hdfs connect将流式数据导入hdfs,处理开始一定会产生N个只有一条记录的小文件,其中N 为kafka topic的分区数。不影响功能,但不友好。
2016-07-06 15:33:31 2787
原创 kafka connect 数据写hdfs详解
源码解读写入状态机实现。WRITE_STARTEDWRITE_PARTITION_PAUSEDSHOULD_ROTATETEMP_FILE_CLOSEDWAL_APPENDEDFILE_COMMITED
2016-07-05 16:24:09 12820 2
原创 kafka connector commit 失败
有个很重要的概念,kafka会管理如何分配分区的消费(1)当某个consumer消费了数据,但是在特定的时间内没有commit,它就认为consumer挂了。这个时候就要reblance了。这个时间和“heartbeat.interval.ms”配置相关。(2)每次consumer从kafka poll数据时,每次poll会有一个量的控制,“max.partition.fetch.bytes”配置决定。
2016-07-01 17:30:30 13082 6
原创 hadoop 相关配置搜集
1. hadoop多目录挂载配置放在~/hadoop-2.7.1/etc/hadoop/hdfs-site.xml2. hdfs常用端口 参数 描述 默认 配置文件 例子 fs.default.name namenode RPC交互端口 8020 core-site.xml hdfs://master:8020/ dfs.http.address Name
2016-07-01 16:34:23 335
如果项目已有spring缓存,还需要hibernate二级缓存么
2015-10-22
spring源码中synchronized疑问
2015-06-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人