数据库 海量日志分析方案

chad_lwm · 2013年09月10日 · 最后由 saxieyu 回复于 2014年09月12日 · 9202 次阅读

目前做一个项目,思路正在整理,在做立项准备。目前思考的还不太清晰,先放到这听听大家的意见,谢谢了!

项目的核心功能是日志分析,改日志是自定义的格式,目前需求比较清晰,出来的结果应该是类似报表一类的。 原始的日志文件存在 sqlite 文件中,有很多小文件。目前压缩后大小 220G, 估算了下大概的有 3 亿条以上的记录,目前单日日志以 20+G 的速度增长。

有两个问题不太清晰

  • 这么大得数据量,用 psql 合适,还是用 mongodb 合适,还是有其他更好的选择? 要考虑存储和查询速度

  • 有没有现成的比较好的框架选择,还是自己直接实现(目前自己决定用 ruby + rails 实现)

我怎么觉得应该用 hadoop 之类的算是比较靠谱呢

@ywjno hadoop + nosql 方案?主要是第一次做这类的,不太清楚,有没有好的教程推荐下,我也会在 google 上查询下,谢谢了

#2 楼 @chad_lwm 因为我也不是做这方面的东西,所以特地给你问了一个做这方面的人,以下是他的回复

不清楚具体什么样的需求
如果不查询,只是做一次挖掘,统计类的
感觉单机都可以
毕竟一天才20G

如果什么需求都不知道
那最好hive吧
hadoop+hive
管他什么需求
反正能抛出结果

不知道对你有没有帮助

hadoop+hive 应该是比较好一点,百度的一些产品线的日志存储,分析系统采取的就是这个方案。

elasticsearch + logstash + kibana3 logstash 负责日志传输和索引 elasticsearch 用于存储和搜索,支持分布式 kibana 用来 web 展示,kibana2 是用 ruby 写的,3 用 javascript 重写了,性能更好

github 用的就是 elasticsearch -> http://exploringelasticsearch.com/book/elasticsearch-at-scale-interviews/interview-with-the-github-elasticsearch-team.html 国内人人在用

@ywjno @mobiwolf @saxieyu 非常感谢各位推荐的方案,我看一下,等最终方案确定后,到时贴出来

#5 楼 @saxieyu 这套方案看起来整合程度挺高的,最近也要搭个日志分析系统,准备用这个试试

@chad_lwm

哈,其实我就是干这样事的。

虽然说原始数据有几百 G,但是也并不是不可压缩的,原则就是尽量采用可枚举值或整数,比如 IP 按整数存。具体可以参考我以前做的 Android 优亿市场数据采集分析系统概要

另外如果你的需求只是单表 Group By 的话(如果多表 Join,也可以对数据进行预处理成单表的),推荐采用 statlysis 这个分析引擎框架,特别适合 Mongoid/ActiveRecord 这两个 ORM,具体操作你看 README 就好了,统计出来的结果基本就对应到最终图表了。欢迎反馈:)

@mvj3 你的方案也挺不错的,貌似。我现在想做的也是差不多,不过我用的 erlang,加载进来就可以是结构化的,不需要正则解析之类。

#9 楼 @algking 正则解析是属于 ETL 这部分的流程吧。。。

数据结构化之后,用 Python, SQL, R 等都可以分析的,用 Erlang 做数据分析还是第一次听说哈

主要是日志在磁盘里不是文本格式,是 erlang 存的特殊二进制,用 erlang 读出来可以很方便的结构化。 用上 erlang 的 SMP 还是挺快的。大约 10 多 G 的日志文件,100 个文件左右,5 分钟(包括解压的时间)。就分析完了。

楼主你好。我现在实习也是在做类似的项目。不是很清楚 elasticsearch+logstash+kibana 和 hadoop+hive 各自的优缺点。有人能分析下么?哪个开发起来比较容易。我们单位的日志量不算特别大。每天就 500 多个 MB

#5 楼 @saxieyu 您好。。问一下。。elasticsearch 能用来存储数据么?我看得是官网的介绍。没提到有这部分功能的介绍。求指教

@bravomao elasticsearch 支持多种存储方式,本地文件系统,HDFS,Amazon S3 都可以。每天 500M 日志直接用 splunk storm 吧,5 个免费 project,每个 20G 空间。自己做也可以在产品上参考 splunk storm,功能真的很强大。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号