2013-07-31 18 views
-1

我們通過API接收大量的XML數據。爲了處理這個龐大的數據集,我們計劃在Hadoop中完成它。通過API登錄到Hadoop的XML數據

需要您幫助理解如何有效地將數據帶入Hadoop。有什麼工具可用?是否有可能實時提供這些數據?

請提供您的意見。

感謝您的幫助。

+0

哦..看起來你已經意識到Flume :) – Tariq

+0

我正在尋找使用Flume將XML數據引入hadoop的示例。 (假設一些API) – Maverick

+0

恐怕,我不知道有任何這樣的例子。看看這是否有幫助:http://stackoverflow.com/questions/14275153/write-a-custom-httpsource-handler-for-flume-ng – Tariq

回答

0

既然你收到巨大的數據量,適當的方式,恕我直言,將是使用像Flume一些聚合工具。 Flume是一種分佈式,可靠且可用的服務,用於從不同類型的源有效收集,彙總和將大量數據移入Hadoop羣集。

您可以根據自己的需要輕鬆編寫自定義源以收集數據。你可能會發現這個link有助於開始。它提供了一個定製的Flume源代碼,旨在連接到Twitter Streaming API並以原始JSON格式將推文接收到HDFS中。你可以嘗試類似的XML數據。

你可能也想看看Apache Chukwa它做同樣的事情。

HTH

0

水槽,抄寫& Chukwa是可以完成上述任務的工具。然而Flume是所有三種中最普遍使用的工具。 Flume具有強大的可靠性和故障切換技術。 Flume還有Cloudera提供的商業支持,而其他兩個則沒有。

+0

這是一個外部API,它在我們公司的防火牆之外。因此,爲了使用Flume每天從API中提取XML文件,需要完成哪些工作? Flume代理是否應該安裝在外部API提供商網站上?配置是什麼? – Maverick

0

如果您唯一的目標是讓數據在HDFS中登陸,您可以按照約定(如data-2013-08-05-01.xml)繼續將XML響應寫入磁盤,然後每天寫一次(或每小時一次的cron )在HDFS中導入XML數據。如果您不需要流式傳輸功能,則運行Flume將會過度。從你的問題來看,爲什麼你需要Hadoop並不明顯?你需要運行MR作業嗎?

0

您想將數據放入Avro或您選擇的協議緩衝區中進行處理。一旦你有一個緩衝區來匹配文本的格式,hadoop生態系統在處理結構化數據方面會有更好的幫助。

Hadoop最初被發現最有用的方法是獲取日誌文件的一行條目並構建/處理其中的數據。 XML已經結構化並且需要更多處理能力才能將其轉換爲適合於Hadoop的格式。

更基本的解決方案是使用Wukong(Ruby流式處理)或python替代方法分塊xml數據和進程。由於您的網絡受到第三方API的約束,因此流式傳輸解決方案可能更加靈活,並且最終滿足您的需求。