我们目前正在使用mysql记录几个网站的印象数据,并正在寻找一个更合适的替代品来记录我们网站现在看到的高流量。我们在mysql数据库中最终需要的是聚合数据。
我所说的“高容量”是指我们每个月要记录大约5000万条关于这个印象的数据。需要注意的是,这个表活动几乎完全是写的,很少是读的(与此用例不同的是:哪个nosql数据库(用于存储非常大的数据量)。我们已经解决了一些mysql的性能问题,通过按范围划分数据并执行大容量插入,但是从总体上看,我们不应该使用mysql。
我们在mysql数据库中最终需要的是聚合数据,我相信还有其他技术更适合这个用例的大容量日志记录部分。我读过关于mongodb、hbase(带map reduce)、cassandra和apacheflume的文章,我觉得我走上了正确的道路,但需要一些关于我应该研究什么技术(或组合)的指导。
我特别想知道的是,哪些平台最适合大容量日志记录,以及如何每天将聚合/精简的数据集输入mysql。
2条答案
按热度按时间fdbelqdn1#
一种方法是简单地将原始印象日志转储到平面文件中。每天都会有一批使用mapreduce程序处理这些文件。mapreduce聚合的输出可以存储到hive或hbase中。
如果你发现这种方法有什么问题,请告诉我。bigdata技术栈根据数据类型和聚合方式有很多选择。
jum4pzuy2#
hive不存储信息,它只允许您使用类似sql语言(hql)的查询“原始”数据。
如果聚合的数据足够小,可以存储在mysql中,而这是数据的唯一用途,那么hbase对您来说可能太多了。
我的建议是使用hadoop(hdfs和mapreduce)
使用impression事件创建日志文件(文本文件)。
然后将它们移动到hdfs中(如果需要接近实时的解决方案,可以使用kafka或storm)。
创建一个能够读取和聚合日志的mapreduce作业,并在reduce输出中使用dboutputformat将聚合的数据存储到mysql中。