我有很多运行网络测试的文本报告和日志文件。我想将这些报告和日志存储在一个数据存储中,在那里我可以解析它们并基于解析的数据运行报告。我还希望这个系统是可扩展的,无论是在它接受的报告和日志的类型,以及它可以用于的数据量和查询/报告。
一位同事建议道 Hadoop
尽可能满足这一需求,我所在组织的另一个团队说他们使用 Cassandra
对于一个类似的项目(但是有更多的数据,大部分是机器生成的)。我一直在读关于 Hadoop and Cassandra
而且我真的不确定使用这样的东西是否会有点过头,也不确定为每种日志/报告类型使用一个自定义解析器的关系数据库是否会更合理。
从我对 Hadoop
,我需要写信 MapReduce
函数来解析每种类型的输入数据,如果使用 Cassandra
. 我也读过一些关于 Hive
,听起来可能有用,但我还没有深入研究。
在我的情况下,使用hadoop或cassandra(或其他东西)有什么好处(如果有的话)?
任何建议都将不胜感激。
1条答案
按热度按时间wvt8vs2t1#
以下是我对你的问题的描述:
您有一些生成日志和文本报告的测试过程。你能至少粗略估计一下这些数据的大小吗?
您希望在生成这些数据后对其进行分析(即不需要进行实时分析)
您需要在可接收和处理的数据大小以及可执行的查询和分析类型上具有灵活性
以下是关于您提到的工具的一些见解和注意事项:
给定一个已经配置好的hadoop集群,hive可能是最简单的解决方案:它可以让您将数据当作一组表来处理:sql查询、联接等等……hive(大致)与集群的大小一样快,但您不会得到即时的答案:换句话说,您可以将它用于批处理操作,不适用于交互式网络面板之类的东西。
cassandra用于存储大量数据。它很容易扩展,很健壮,而且相对容易使用。考虑到您的需求,我认为可能需要考虑的是,需要非常透彻地考虑将要用于存储数据的模式:模式将决定您以后可以做什么和不能做什么。因此,如果您想执行更广泛的分析,或者以您目前无法想象的新方式读取数据,那么您可能无法做到,因为数据存储在数据库中的方式不同。
其他我不太熟悉的选项:hbase(基于hdfs的数据存储)、pig(像hive一样,查询被编译成hadoop作业);模型发生了什么变化:您需要编写“流”而不是sql查询。
我建议尝试hive(或pig),也许可以使用类似amazonemr的服务(这样可以避免hadoop集群设置的麻烦)。