任何人都可以向我指出参考资料或提供有关Facebook,Yahoo,Google等公司如何执行大规模(例如多TB范围)日志分析的高级概述,这些日志分析可用于运营,尤其是网络分析?
特别关注网络分析,我对两个密切相关的方面感兴趣:查询性能和数据存储。
我知道一般方法是使用map reduce在群集上分发每个查询(例如使用Hadoop)。但是,最有效的存储格式是什么?这是日志数据,因此我们可以假设每个事件都有一个时间戳,而且通常数据是结构化的而不是稀疏的。大多数Web分析查询涉及分析两个任意时间戳之间的数据片段,并检索该数据中的聚合统计信息或异常。
像Big Table(或HBase)这样的面向列的数据库是否是一种有效的存储方式,更重要的是,查询这些数据?您选择行的子集(基于时间戳)这一事实是否违背了此类存储的基本前提?将它存储为非结构化数据会更好吗,例如。反向指数?
答案 0 :(得分:5)
不幸的是,没有一种尺寸适合所有答案。
我目前正在使用Cascading,Hadoop,S3和Aster Data通过AWS内部的分阶段管道来处理100个Gigs。
Aster Data用于查询和报告,因为它为Hadoop上的级联进程清理和解析的海量数据集提供了一个SQL接口。使用级联JDBC接口,加载Aster Data是一个非常简单的过程。
请记住,像HBase和Hypertable这样的工具是键/值存储,所以不要在没有MapReduce / Cascading应用程序帮助的情况下进行临时查询和连接以执行带外连接,这是非常有用的图案。
在完整披露中,我是Cascading项目的开发人员。
答案 1 :(得分:5)
Hadoop一书:O'Reilly的权威指南有一章讨论了两个真实公司如何使用hadoop。
答案 2 :(得分:4)
请查看Google的论文Interpreting the Data: Parallel Analysis with Sawzall。这是一篇关于Google用于日志分析的工具的论文。