我们通过 API 接收大量 XML 数据。为了处理这个庞大的数据集,我们计划在 Hadoop 中进行。
在了解如何有效地将数据引入 Hadoop 方面需要您的帮助。有哪些可用的工具?是否有可能实时获取这些数据?
请提供您的意见。
谢谢你的帮助。
我们通过 API 接收大量 XML 数据。为了处理这个庞大的数据集,我们计划在 Hadoop 中进行。
在了解如何有效地将数据引入 Hadoop 方面需要您的帮助。有哪些可用的工具?是否有可能实时获取这些数据?
请提供您的意见。
谢谢你的帮助。
如果您的唯一目标是让数据进入 HDFS,您可以按照一些约定(例如 data-2013-08-05-01.xml)继续将 XML 响应写入磁盘,并编写每日(或每小时 cron)来导入HDFS 中的 XML 数据。如果您不需要流式传输功能,则运行 Flume 将是矫枉过正。从您的问题来看,您为什么需要 Hadoop 并不是很明显?您需要运行 MR 作业吗?
您希望将数据放入 Avro 或您选择的协议缓冲区进行处理。一旦你有一个缓冲区来匹配文本的格式,hadoop 生态系统就会更好地帮助处理结构化数据。
Hadoop 最初被发现对于获取日志文件的一行条目并从中构造/处理数据最有用。XML 已经结构化,需要更多的处理能力才能将其转换为对 hadoop 友好的格式。
一个更基本的解决方案是使用Wukong(Ruby 流式传输)或 python 替代方法对 xml 数据和进程进行分块。由于您的网络受第 3 方 api 的约束,因此流式处理解决方案可能会更加灵活,并且最终可以满足您的需求。
由于您正在接收大量数据,因此恕我直言,适当的方法是使用一些聚合工具,例如Flume。Flume 是一种分布式、可靠且可用的服务,用于从不同类型的源高效地收集、聚合和移动大量数据到您的 Hadoop 集群中。
您可以根据收集数据的需要轻松编写自定义源。您可能会发现此链接有助于入门。它提供了一个自定义 Flume 源,旨在连接到 Twitter Streaming API 并将原始 JSON 格式的推文摄取到 HDFS 中。您可以为您的 xml 数据尝试类似的方法。
您可能还想看看Apache Chukwa,它做同样的事情。
高温高压
Flume、Scribe 和 Chukwa 是可以完成上述任务的工具。然而,Flume 是这三者中最常用的工具。Flume 具有强大的可靠性和故障转移技术。Flume 还提供 Cloudera 提供的商业支持,而其他两个则没有。