记录大数据以使用Hadoop组织和存储它并使用Hive进行查询的正确方法是什么?



所以基本上我有不同平台的应用程序发送日志数据到我的服务器。它是一个节点服务器,本质上接受日志条目的有效负载,并将它们保存到各自的日志文件中(作为写流缓冲区,因此速度很快),并在一个日志文件填满时创建一个新的日志文件。

我存储日志的方式基本上是每个"端点"一个文件,每个日志文件由与指标对应的空格分隔的值组成。例如,玩家事件日志结构可能如下所示:

timestamp user mediatype event

,然后日志条目看起来像这样

1433421453 bob iPhone play

基于阅读文档,我认为这种格式对Hadoop这样的东西很好。我认为的工作方式是,我将这些日志存储在服务器上,然后运行一个cron作业,定期将这些文件移动到S3。从S3,我可以使用这些日志作为使用Amazon的EMR的Hadoop集群的源。从那里,我可以用Hive查询它。

这个方法有意义吗?我的逻辑有缺陷吗?我应该如何为亚马逊的电子病历保存/移动这些文件?我是否需要将所有日志文件连接到一个大文件中?

另外,如果我将来在日志中添加一个度量标准会怎么样?这会不会打乱我之前的所有数据?

我意识到我有很多问题,那是因为我刚接触大数据,需要一个解决方案。非常感谢您的宝贵时间,非常感谢。

如果您有大量定期更改的日志转储,那么您布置的方法是有意义的。使用EMRFS,您可以直接处理来自S3的日志(您可能知道这一点)。

当您将新的日志事件"追加"到Hive时,将生成部件文件。因此,您不必在将它们加载到Hive之前将它们连接起来。

(在第0天,日志以某种分隔形式加载到Hive,部分文件作为各种转换的结果生成。)在随后的循环中,新的事件/日志将出现在这些部件文件中。

持续添加新字段是一个挑战。您可以创建新的数据结构/集和Hive表并连接它们。但是连接会很慢。因此,您可能希望在模式中定义填充符/占位符。

如果你要接收日志流(许多小日志文件/事件),并且需要运行接近实时的分析,那么看看Kinesis。

(也试驾黑斑羚。它更快)

. .我的2 c。

最新更新