每天要处理亿级的日志文件,该怎么做?

2015-06-30 18:08:08 +08:00
 whnzy

现在要做到每天处理亿级的日志文件,公司根本没有现成的系统.日志是由nginx打下的请求日志,要在日志中筛选需要的信息,有些还是加密的请求,需要解密.
我当时用python 搭建起一套系统,一天可以处理完,但是随着数据的增加,我为了提高查询数据库的速度,将一些内容放到了内存中,但是随着数据的增加,内存已经爆掉.
mongo,多维数组什么的都已经尝试过了,已经无能为力了,我刚刚毕业,没有那么多的经验,手中只有两台服务器可用,而且内存一个4G,一个1G,cpu最多的一个也才是双核的.
请教该怎么搞?

10518 次点击
所在节点    Hadoop
73 条回复
darrenxyli
2015-07-01 01:43:51 +08:00
elasticsearch+logstash+kibana
YORYOR
2015-07-01 08:49:32 +08:00
这tm 比我们渣浪还惨啊 擦
shiznet
2015-07-01 09:05:17 +08:00
@whnzy awk先做一次筛选 减少数据规模 然后在用其他工具处理呢
whnzy
2015-07-01 09:29:52 +08:00
@qsl0913 做统计,听说过一个 solar的东西
whnzy
2015-07-01 09:33:05 +08:00
@daoluan 挖掘日志中的用户信息的.
whnzy
2015-07-01 09:33:35 +08:00
@paulw54jrn 这个在infoQ上看到过一次,研究下
whnzy
2015-07-01 09:36:02 +08:00
真是谢谢大家了,感觉要重新设计下了,题主也是开发经验不足,架构的东西现在出现的问题,向前找原因,一开始就错了.
c89758972
2015-07-01 09:40:39 +08:00
@realpg 麻蛋啊,我之前的公司就是.我倒是想过拿回自己的,可那行政balabala的,当时内存也便宜啊,4G99,就没在意.
popok
2015-07-01 09:43:13 +08:00
处理啥啊,直接删。哈哈
whnzy
2015-07-01 09:46:21 +08:00
@c89758972 你们都是自己的服务器啊
whnzy
2015-07-01 09:48:47 +08:00
@popok 不要闹好不好呀,数据很重要哒
c89758972
2015-07-01 09:49:45 +08:00
@whnzy 这倒不是,是自己有内存多,刚好公司又缺内存,申请又麻烦就拿过去用了.结果都是悲剧,没能拿回来.哎
fxxkgw
2015-07-01 10:23:42 +08:00
ELK太占内存了 logstash匹配速度太慢 配置这么点的服务器根本承受不了
loryyang
2015-07-01 11:08:32 +08:00
亿级别的话,简单的还是用批处理吧,kafka+hadoop
实时流的技术难度太高了,而且稳定性是个很大的难题。
数据先用kafka导到hdfs,然后每天运行mr任务,可以上面架一个hive,写写sql就行。hadoop的整套实践方案,还是相对简单一些
不过一个应届生,要搞定这整一套环境,还是有点困难的。。
loryyang
2015-07-01 11:09:55 +08:00
额,没看到你只有两台服务器,那忽略我吧。。。
fengyqf
2015-07-01 11:19:16 +08:00
亿级日志的规模,竟然用1G 4G的服务器
lunaticus7
2015-07-01 11:26:41 +08:00
没折腾过nginx日志,不过对原始数据做好预处理,很多情况下可以极大的提高系统的性能,awk sed都可以用,一个比较通用的思路是,在进入流程中大运算量步骤之前,尽量筛掉无用的数据
由于机器配置低,所以做好分治+流式的规划,同时可以看看负载是耗在那一块了,可以考虑多线程,把cpu尽量用起来
Chip
2015-07-01 11:29:29 +08:00
花钱能解决的问题,Splunk大法好。
typcn
2015-07-01 11:56:30 +08:00
直接 fopen 全部读一遍,然后 fseek 到文件尾部,流式读取这个日志,插入队列

这个 CPU 基本 0% ,内存超不过 5MB

数据库如果无需复杂功能的话可以简单实现一个,挂个 epoll ,异步拿数据,然后转成 binary 每隔几秒 append 一次磁盘,这个 CPU 不会超过 5%,内存超不过 100MB
typcn
2015-07-01 12:02:02 +08:00
看错了,,,是离线日志,直接 while(line = getline())

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

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

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

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

© 2021 V2EX