数据库 海量日志分析方案

chad_lwm · September 10, 2013 · Last by saxieyu replied at September 12, 2014 · 9205 hits

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

项目的核心功能是日志分析,改日志是自定义的格式,目前需求比较清晰,出来的结果应该是类似报表一类的。 原始的日志文件存在 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,功能真的很强大。

You need to Sign in before reply, if you don't have an account, please Sign up first.