2012-05-20 110 views
0

我準備好了hadoop實現的所有部分 - 我有一個正在運行的集羣,以及一個將活動數據推送到HDFS的客戶端編寫器。我有一個關於接下來會發生什麼的問題。我知道我們針對已經轉儲到HDFS的數據運行作業,但我的問題是:Hadoop操作化

1)首先,我正在寫入流並定期刷新 - 我通過線程寫入文件HDFS java客戶端,直到我殺掉我的服務器纔看到文件出現在HDFS中。如果我寫足夠的數據來填充塊,它會自動出現在文件系統中嗎?如何獲得準備好由M/R作業處理的文件?

2)我們什麼時候運行M/R作業?就像我說的,我正在通過HDFS java客戶端中的線程寫入文件,並且該線程鎖定了要寫入的文件。我應該在什麼時候發佈該文件?這種互動如何工作?在什麼時候對這些數據運行作業是'安全'的,而HDFS中的數據完成後會發生什麼?

回答

1

我會盡量避免數據插入到hadoop和處理結果之間的「硬」同步。我的意思是,在很多情況下,最不實際的進程是最實際的:
a)一個進程將文件放入HDFS。在許多情況下 - 按日期構建目錄結構是有用的。
b)爲除最新數據以外的所有數據運行作業。
您可以在最近的數據上運行作業,但應用程序不應該繼續最新的結果。在任何情況下,任何情況下通常需要幾分鐘的時間

另一點 - 追加不是100%的主流,但爲HBase建立的先進的東西。如果你在不使用它的情況下構建你的應用程序 - 你將能夠使用其他的不支持append的amazon s3等DFS。我們正在本地文件系統中收集數據,然後在文件足夠大時將它們複製到HDFS。

1
  1. 寫入數據來填充塊,你會看到文件系統

  2. M/R提交給調度程序,這需要來執行這種數據的關心,大家不用擔心abt

+0

因此,m/r作業負責處理已寫入塊的文件中的數據,並且我們可以繼續從java hdfs客戶端寫入相同的句柄? –

+0

是的,一旦配置我們可以繼續寫作 – Satya