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