V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ashiamd
V2EX  ›  问与答

菜鸟问下 ELK、知识图谱、推荐算法相关的应用问题

  •  
  •   ashiamd · 2020-11-06 11:17:12 +08:00 · 1530 次点击
    这是一个创建于 1257 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近有需求,需要做一个日志分析系统=>打算用 Elastic Stack ( ELK+B )来实现,但是本人还在学习阶段,只知道 B 用来数据获取,L 用于数据过滤,E 用于搜索+分析,K 用于数据可视化。

    一、个人理想计划如下: ( 1 ) nginx 端 或 具体 java 后端进程产生的 log 日志 -> 用 Beats 相关技术监听 nginx 的 HTTP 请求 or 获取 java 日志文件;接着 beats 传递数据到 kafka 消息队列

    ( 2 )从 kafka 中消费数据,数据给 logstash 进行数据过滤(变成简单格式,比如 IP:HTTP 方法( POST 等):具体方法:{参数列表之类的};接着 logstash 再将过滤后的数据给另一个 kafka 队列

    ( 3 )从 kafka 消费数据,数据给 ElasticSearch,进行数据分析,然后 Kiana 数据可视化。

    总体:nginx/java 进程 日志来源 -> beats -> kafka -> logstash -> kafka -> ElasticSearch -> Kibana

    二、问题 ( 1 )我自己想得比较理想,但据说不适合用 ElasticSearch 当作存储,但是居然要分析,不就不得不把数据加载到内存上的 ES 上吗?有什么避免内存占用过大的方法吗?

    ( 2 )上面只想了 ELK 进行日志分析,但是后续需要根据 ELK 的日志分析来进行 一些产品之类的东西的推荐,也就是涉及推荐系统的搭建,个人想法就是可能可以根据日志的用户行为,构建 图数据库,然后根据图数据库进行用户的产品推荐之类的。不知道这种想法可行不可行。

    ( 3 )请教一下各位看官,ELK (正在学)、图数据库(了解过,没用过)、推荐算法(这个没了解过),是不是这几个部分就能够实现以下几个事情了?(日志可视化、用户行为分析、用户产品推荐)

    ps:本人比较菜,ELK 、图数据库相关概念稍有了解,但是推荐算法纯不知道。

    9 条回复    2020-11-11 16:48:30 +08:00
    Morriaty
        1
    Morriaty  
       2020-11-06 11:49:22 +08:00   ❤️ 1
    1. 先用最简单的 ELK,docker 现成的,kafka 都不要,快速验证快速试错
    2. 真要认真做推荐系统当然是要上 Hadoop 、spark 这些的,一般成熟的系统也是 online/nearline/offline 多层架构的,数据层比算法层重要
    3. 大数据开发、知识图谱、搜索推荐,每个都是要求很高的,如果是一个人做,玩玩就好,不要期望太高....
    ashiamd
        2
    ashiamd  
    OP
       2020-11-06 12:32:18 +08:00
    感谢回复,那意思是如果不上大数据技术的话,现阶段先只考虑 ELK 的日志行为分析就最可行的方案?如果图数据库和推荐系统需要大数据技术支持的话,那确实现阶段学习可能吃不消(内容太多了)。

    再次感谢。那我现阶段就:
    ( 1 )先考虑 ELK 使用(我本地也是用 docker,但是某些参数可能设置有些问题=>之后再自己解决)
    ( 2 )构建整个完整的日志处理流程
    ( 3 )考虑 LogStash 过滤后在 ElasticSearch 上存储的数据结构设计
    ( 4 )根据“有用”的信息(能看出平台用户爱好趋向等信息)构建 kibana 视图。

    根据以上流程,至少小目标应该能根据用户日志,大致通过 kibana 的图表等内容来人为分析出平台用户爱好、流量走向等关键信息。
    ashiamd
        3
    ashiamd  
    OP
       2020-11-06 12:35:08 +08:00
    @Morriaty 感谢回复,刚才没点到 @符号,楼上补了一条回复。
    yisany
        4
    yisany  
       2020-11-06 13:55:57 +08:00   ❤️ 1
    log -> beats -> logstash -> kafka -> es
    beats 是能够直接对接到 logstash 的, 不需要 kafka 做中转(当然也可以用).
    同时 es 虽然全文搜索很强, 但你如果要用来做数据分析, 是不如 olap 数据库的
    Morriaty
        5
    Morriaty  
       2020-11-06 14:27:58 +08:00   ❤️ 1
    搜索推荐是非常面向业务的,你要先想好你想关心的数据,然后再去反推你的 scheme / mapping 设计,比如:

    1. 用户关心的热门内容,那就需要从日志里抽取至少 content_id, user_id, tags,目前的数据里有 tags 吗?如果没有,或者数据量不足,怎么抽取呢?
    2. 用户的兴趣变化,那要再加个 timestamp 字段,上周还没人阅览的内容,这周暴增了十倍

    诸如此类
    ashiamd
        6
    ashiamd  
    OP
       2020-11-06 19:54:37 +08:00
    @yisany 感谢回复,我学的东西比较少,第一次听说 OLAP 这个词,查了下,貌似 V2EX 里有人也有过类似问题。
    [OLAP 数据库推荐]( https://www.v2ex.com/t/705920)
    看了下方有人选择了 Druid,说是 java 写的?或许我可以去了解了解。(之前项目里用的 Druid 连接池,我还以为这个就是个连接池,原来 Apache Druid 是个数据库)
    ashiamd
        7
    ashiamd  
    OP
       2020-11-06 20:00:22 +08:00
    @Morriaty 好的,感谢你的宝贵意见。
    ( 1 ) tags,数据库现在还没有确定下来,不过居然现在知道需要 tags 了,之后就可以考虑在哪些内容上加了。(貌似之后会有业务是注册登录后,先让用户选择几个感兴趣的标签=>现在很多 app 、网站的常见模式)
    ( 2 )时间戳 timestamp,这个我之前还真没考虑过。确实如果没有时间因素的话,就没法看出用户兴趣变化了。(这方面第一次接触,还是没能想全)
    yisany
        8
    yisany  
       2020-11-10 09:43:12 +08:00   ❤️ 1
    @ashiamd OLAP 数据库各有各的特性, 需要根据你自身的业务来选择.
    例如 clickhouse 是最快的数据库(单表查询), 但它对于 update/delete 之类的操作不大友好, 且 join 性能一般.
    可以看一下相关的评测文章:
    - http://www.clickhouse.com.cn/topic/5c453371389ad55f127768ea
    - http://www.clickhouse.com.cn/topic/5e16bd88bf358d57027ec6fc
    但文章里测试 clickhouse 性能用的是 log 引擎, mergeTree 引擎才是 clickhouse 的精髓.
    ashiamd
        9
    ashiamd  
    OP
       2020-11-11 16:48:30 +08:00 via Android
    @yisany 感谢回复。这两篇文章好详细,对我这种没了解过 OLAP 的人来说很有帮助,收藏了。(老哥说的 log 引擎等,这个我也没听说过,看来我需要新学的东西还挺多,哈哈)


    再次感谢!

    楼下个人吐槽兼感想,老哥可以不用往下看了。
    ====================================

    ps:才知道 OLAP 产品原来那么多,这方面好像主要和大数据挂钩?那好像推荐系统,还有点遥远(大数据零基础,本人目前只接触过前后端的相关技术)


    ps:最近下载了一些大数据相关的书记 OLAP 或许我也该查查,至少可以翻阅翻阅,先了解最基础的概念。


    ps:最近主要在连滚带爬尝试搭建 elk+beat 了,github 备份了下近期( nginx,java,mysql,elk,beat 的一整个 Demo,从 niginx 收集日志到 elk ),因为有些东西不太熟,花了很多时间才只弄了个 docker-compose 可以跑的版本。OLAP 可以替代 elasticsearch 的话,那我得看看,不知道 OLAP 是不是硬性要求大数据(我看好像都和大数据有点关系?),现在貌似暂时还没有那个量级的需求。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1292 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 17:43 · PVG 01:43 · LAX 10:43 · JFK 13:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.