谁能给我指点引用或提供有关 Facebook、雅虎、谷歌等公司如何执行大规模(例如多 TB 范围)日志分析的引用资料或高级概述,这些分析是他们为运营所做的,尤其是网络分析?
特别关注网络分析,我对两个密切相关的方面很感兴趣:查询性能和数据存储。
我知道一般方法是使用 map reduce 将每个查询分布到集群上(例如使用 Hadoop)。但是,最有效的存储格式是什么?这是日志数据,所以我们可以假设每个事件都有一个时间戳,并且通常数据是结构化的而不是稀疏的。大多数网络分析查询涉及分析两个任意时间戳之间的数据片段,并检索该数据中的聚合统计信息或异常情况。
像 Big Table(或 HBase)这样的面向列的数据库是否是一种有效的存储方式,更重要的是,查询此类数据?您正在选择行的子集(基于时间戳)这一事实是否违背了此类存储的基本前提?将其存储为非结构化数据会更好吗,例如。反向索引?
最佳答案
不幸的是,没有一个适合所有人的答案。
我目前正在使用 Cascading、Hadoop、S3 和 Aster Data 通过 AWS 内部的分阶段管道每天处理 100 个 Gig。
Aster Data 用于查询和报告,因为它为 Hadoop 上的级联进程清理和解析的海量数据集提供了一个 SQL 接口(interface)。使用级联 JDBC 接口(interface),加载 Aster Data 是一个非常简单的过程。
请记住,像 HBase 和 Hypertable 这样的工具是键/值存储,所以不要在没有 MapReduce/Cascading 应用程序执行带外连接的帮助下进行临时查询和连接,这是非常有用的模式。
坦白说,我是 Cascading 项目的开发人员。
关于storage - 实现大规模日志文件分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/794885/