Kafka丢数据、重复数据分析

作者:JerryXia | 发表于 , 阅读 (39)
前言填别人的坑again。数据不正常,追到kafka这里了,分析了很久的程序,做一个总结,关于丢数据和重复数据。
丢数据先说丢数据。目前遇到一种丢数据的情况。
如果auto.commit.enable=true,当consumer fetch了一些数据但还没有完全处理掉的时候,刚好到commit interval出发了提交offset操作,接着consumer crash掉了。这时已经fetch的数据还没有处理完成但已经被commit掉,因此没有机会再次被处理,数据丢失。
那么换一种方法,我们手动提交offset,这时会出现另外一种重复数据的情况,后面会提到。
重复数据1假设一个场景,我们使用High Level Consumer API来消费kafka中的数据,每当消费N条数据并成功插入Mysql后,我们手动执行一下consumer.commitSync()操作,提交一次offset。这种情况是先消费成功后再提交,因此不再丢数据了,但是会出现重复数据的情况。
但是! 如果当程序消费了一定数量的数据之后,还没来得及提交offset,程序crash了,那么下次再启动程序之后,就...阅读全文

Hadoop清空回收站

作者:JerryXia | 发表于 , 阅读 (33)
This should give you output similar to this. Basically in a minute the trash will be emptied.
执行完命令后,回收站的数据不会立即被清理,而是先打了一个checkpoint。显示的是一分钟后清除。
实际验证,11T的数据需要好几分钟…..
16/09/18 10:57:04 INFO fs.TrashPolicyDefault: Namenode trash configuration: Deletion interval = 1 minutes, Emptier interval = 0 minutes.16/09/18 10:57:04 INFO fs.TrashPolicyDefault: Created trash checkpoint: /user/hdfs/.Trash/160918105704参考http://centoshowtos.org/hadoop/emptying-the-hdfs-trash/
2016-09-18 12:39:00 hzct
作者:dante...阅读全文

Flume NG 基本架构及原理

作者:JerryXia | 发表于 , 阅读 (26)
前言由于数据量不是特别大,因此我们在使用Flume的时候没有使用分区,基本上就是在业务端的web server上部署了一个agent,然后输出到hdfs上。
部署kafka 数据源可以参考我的另一篇文章,里面讲了我在工作中遇到的定制的kafka source。
tail 数据源flume ng里面可以使用Exec Source来代替。其实就相当于执行了一个tail -f 的的命令。
Note You can use ExecSource to emulate TailSource from Flume 0.9x (flume og). Just use unix command tail -F /full/path/to/your/file. Parameter -F is better in this case than -f as it will also follow file rotation.
示例。
a1.sources = r1a1.channels = c1a1.sources.r1.type = execa1.sources.r1.command = tai...阅读全文

一次jVM性能调优记录

作者:JerryXia | 发表于 , 阅读 (33)
前言填别人留下来的坑其实挺无奈的,会被搞的特别烦,特别是我这种要填三四个人留下来的坑的时候,满满的都是无奈。
幸好的是填坑也可以选择一种更能提升自己的方式来填。
这次遇到的一个程序,是一个从kafka消费并且插入mysql的程序,该程序历经三人之手,频频出问题,一直没有被解决。传到现在,症状是这样的:该程序跑个两三天后会莫名其妙的停止消费,不再插入数据了,据说也不报错,进程还在,反正就是不干活了。
分析过程等了一天半,这个程序不出意料的出问题了,状况依然是停止消费,不再插入数据。我不太清楚之前的人是怎么排查的,暂时按照我自己的方式来摸索。
首先看一下jvm内存的分布情况,一下子就看到点子上了。old区和perm区基本上都满了,然后可以观察到每隔几秒钟就会进行一次full gc。这样的话,整个程序不是一直都在full gc了,哪还有心情干别的活?

抓紧时间看一下程序的报错,非常明显的OOM问题,不晓得之前的童鞋找到这没。

按理说看到程序出错了就该赶快补数据了,但是为了抓住错误的本质,我只能顶住一些压力,缓半个小时再说,抓紧时间看一下各个指标。
首先是top一下看看c...阅读全文

漫谈数据仓库之维度建模

作者:JerryXia | 发表于 , 阅读 (41)
0x01 经典数据仓库模型下面将分别介绍四种数据仓库模型,其中前三种模型分别对应了三本书:《数据仓库》、《数据仓库工具箱》和《数据架构 大数据 数据仓库以及Data Vault》,这三本书都有中文版,非常巧的是,我只有三本数据仓库的书,正好对应了这三种理论。
Anchor模型我并不是特别熟悉,放在这里以供参考。
一、实体关系(ER)模型数据仓库之父Immon的方法从全企业的高度设计一个3NF模型,用实体加关系描述的数据模型描述企业业务架构,在范式理论上符合3NF,它与OLTP系统中的3NF的区别,在于数据仓库中的3NF上站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系抽象,它更多的是面向数据的整合和一致性治理,正如Immon所希望达到的:“single version of the truth”。
但是要采用此方法进行构建,也有其挑战:
需要全面了解企业业务和数据实施周期非常长对建模人员的能力要求也非常高二、维度模型维度模型是数据仓库领域另一位大师Ralph Kimall所倡导,他的《The DataWarehouse Toolkit-The Complet...阅读全文