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

2020-11-06 11:17:12 +08:00
 ashiamd

最近有需求,需要做一个日志分析系统=>打算用 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 、图数据库相关概念稍有了解,但是推荐算法纯不知道。

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

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

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

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

诸如此类
ashiamd
2020-11-06 19:54:37 +08:00
@yisany 感谢回复,我学的东西比较少,第一次听说 OLAP 这个词,查了下,貌似 V2EX 里有人也有过类似问题。
[OLAP 数据库推荐]( https://www.v2ex.com/t/705920)
看了下方有人选择了 Druid,说是 java 写的?或许我可以去了解了解。(之前项目里用的 Druid 连接池,我还以为这个就是个连接池,原来 Apache Druid 是个数据库)
ashiamd
2020-11-06 20:00:22 +08:00
@Morriaty 好的,感谢你的宝贵意见。
( 1 ) tags,数据库现在还没有确定下来,不过居然现在知道需要 tags 了,之后就可以考虑在哪些内容上加了。(貌似之后会有业务是注册登录后,先让用户选择几个感兴趣的标签=>现在很多 app 、网站的常见模式)
( 2 )时间戳 timestamp,这个我之前还真没考虑过。确实如果没有时间因素的话,就没法看出用户兴趣变化了。(这方面第一次接触,还是没能想全)
yisany
2020-11-10 09:43:12 +08:00
@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
2020-11-11 16:48:30 +08:00
@yisany 感谢回复。这两篇文章好详细,对我这种没了解过 OLAP 的人来说很有帮助,收藏了。(老哥说的 log 引擎等,这个我也没听说过,看来我需要新学的东西还挺多,哈哈)


再次感谢!

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

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


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


ps:最近主要在连滚带爬尝试搭建 elk+beat 了,github 备份了下近期( nginx,java,mysql,elk,beat 的一整个 Demo,从 niginx 收集日志到 elk ),因为有些东西不太熟,花了很多时间才只弄了个 docker-compose 可以跑的版本。OLAP 可以替代 elasticsearch 的话,那我得看看,不知道 OLAP 是不是硬性要求大数据(我看好像都和大数据有点关系?),现在貌似暂时还没有那个量级的需求。

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

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

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

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

© 2021 V2EX