求助,数据统计

2018-03-28 14:53:23 +08:00
 hechen0

问题描述

最近在做一个系统的优化,希望能得到大家的帮助

这是一个比较原始的统计系统,统计的是应用中的埋点日志。统计的量级在每天 5000w 行左右,文件大小在 5G 左右。

现在的统计方法是,将日志按行读取,解析出来放在内存中,为啥呢,因为埋点的日志之间有关联性,需要在内存中将这其中的埋点日志关联关系找出来,比如说埋点日志状态跳转 A->B->C->D,A/B/C/D 都是一条埋点日志 结构是一样的 但是具体的信息不同,尤其是其中包含的状态信息不同。

现有问题

  1. 现有的统计方式对内存使用量非常大,我们现在的机器已经接近内存上限,只能对内存进行扩容 /改变统计方式

可能的解决方法

  1. 优化存储在内存中的结构,这部分已经完成了,减少了 20%左右的内存使用
  2. 改变现有的统计方式

希望得到的帮助

  1. 有什么更好的方式能直接找到各个日志之间的关联关系
971 次点击
所在节点    数据库
3 条回复
Debiancc
2018-03-28 16:09:53 +08:00
上 ETL 吧
hadoop || spark || MongoDB map-reduce 也行
然后开始数据搬砖,一遍不够就开始洗第二遍

手动的办法其实也是 ETL 的思路,你得建立数据仓库
把所有的数据压在内存上是不对的,如果没有关联依赖 用 steaming 或许是个不错的办法
tonylinzhen
2018-03-28 17:33:07 +08:00
什么叫吧日志的关联关系找出来?
你是要生成一棵棵树么

并没有说你需要统计什么? 使用 mr 的思路应该可以解决 ,不需要全部放内存
你可以用 session 作为存储单元 放到 kv 数据库里,然后你需要哪个 session 就 get 出来 ,再生成关系树
hechen0
2018-03-28 18:46:34 +08:00
@tonylinzhen 关联关系现在是用链表

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/442135

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX