目前做一个项目,思路正在整理,在做立项准备。目前思考的还不太清晰,先放到这听听大家的意见,谢谢了!
项目的核心功能是日志分析,改日志是自定义的格式,目前需求比较清晰,出来的结果应该是类似报表一类的。 原始的日志文件存在 sqlite 文件中,有很多小文件。目前压缩后大小 220G, 估算了下大概的有 3 亿条以上的记录,目前单日日志以 20+G 的速度增长。
有两个问题不太清晰
这么大得数据量,用 psql 合适,还是用 mongodb 合适,还是有其他更好的选择? 要考虑存储和查询速度
有没有现成的比较好的框架选择,还是自己直接实现(目前自己决定用 ruby + rails 实现)
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 国内人人在用
哈,其实我就是干这样事的。
虽然说原始数据有几百 G,但是也并不是不可压缩的,原则就是尽量采用可枚举值或整数,比如 IP 按整数存。具体可以参考我以前做的 Android 优亿市场数据采集分析系统概要 。
另外如果你的需求只是单表 Group By 的话(如果多表 Join,也可以对数据进行预处理成单表的),推荐采用 statlysis 这个分析引擎框架,特别适合 Mongoid/ActiveRecord 这两个 ORM,具体操作你看 README 就好了,统计出来的结果基本就对应到最终图表了。欢迎反馈:)
主要是日志在磁盘里不是文本格式,是 erlang 存的特殊二进制,用 erlang 读出来可以很方便的结构化。 用上 erlang 的 SMP 还是挺快的。大约 10 多 G 的日志文件,100 个文件左右,5 分钟(包括解压的时间)。就分析完了。
楼主你好。我现在实习也是在做类似的项目。不是很清楚 elasticsearch+logstash+kibana 和 hadoop+hive 各自的优缺点。有人能分析下么?哪个开发起来比较容易。我们单位的日志量不算特别大。每天就 500 多个 MB
@bravomao elasticsearch 支持多种存储方式,本地文件系统,HDFS,Amazon S3 都可以。每天 500M 日志直接用 splunk storm 吧,5 个免费 project,每个 20G 空间。自己做也可以在产品上参考 splunk storm,功能真的很强大。