V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hechen0
V2EX  ›  数据库

求助,数据统计

  •  
  •   hechen0 · 2018-03-28 14:53:23 +08:00 · 996 次点击
    这是一个创建于 2430 天前的主题,其中的信息可能已经有所发展或是发生改变。

    问题描述

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

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

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

    现有问题

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

    可能的解决方法

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

    希望得到的帮助

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

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

    并没有说你需要统计什么? 使用 mr 的思路应该可以解决 ,不需要全部放内存
    你可以用 session 作为存储单元 放到 kv 数据库里,然后你需要哪个 session 就 get 出来 ,再生成关系树
    hechen0
        3
    hechen0  
    OP
       2018-03-28 18:46:34 +08:00
    @tonylinzhen 关联关系现在是用链表
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   975 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 20:47 · PVG 04:47 · LAX 12:47 · JFK 15:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.