我需要一个系统来分析大型日志文件。前几天一位朋友指导我使用 hadoop,它似乎非常适合我的需求。我的问题围绕着将数据导入hadoop-
当我的集群上的节点将数据输入 HDFS 时,是否可以让它们流式传输数据?还是每个节点都需要写入本地临时文件并在临时文件达到一定大小后提交?是否可以附加到 HDFS 中的文件,同时在同一文件上运行查询/作业?
我需要一个系统来分析大型日志文件。前几天一位朋友指导我使用 hadoop,它似乎非常适合我的需求。我的问题围绕着将数据导入hadoop-
当我的集群上的节点将数据输入 HDFS 时,是否可以让它们流式传输数据?还是每个节点都需要写入本地临时文件并在临时文件达到一定大小后提交?是否可以附加到 HDFS 中的文件,同时在同一文件上运行查询/作业?
Fluentd日志收集器刚刚发布了它的WebHDFS 插件,它允许用户即时将数据流式传输到 HDFS。它非常易于安装且易于管理。
当然,您可以直接从您的应用程序导入数据。这是一个针对 Fluentd 发布日志的 Java 示例。
一个 hadoop 作业可以运行多个输入文件,因此实际上没有必要将所有数据保存为一个文件。但是,在文件句柄正确关闭之前,您将无法处理文件。
HDFS 不支持追加(还没有?)
我所做的是定期运行 map-reduce 作业并将结果输出到“processed_logs_#{timestamp}”文件夹。另一个作业稍后可以获取这些处理过的日志并将它们推送到数据库等,以便可以在线查询
我建议使用Flume将日志文件从您的服务器收集到 HDFS 中。