簡體   English   中英

Flume-將文件從文件服務器加載到HDFS

[英]Flume - loading files from file server to HDFS

我想經常將文件從文件服務器加載到HDFS。 較小的文件(2 MB至20 MB)會經常加載到文件服務器中。 這些文件必須加載到HDFS中以進行MR處理。 在將這些文件提供給Map-Reduce作業之前,我看到了2個問題。

  1. 如果在運行MR作業時選擇了這些文件並將其加載到HDFS中,則將這些文件加載​​到HDFS本身將花費很長時間。

  2. 這些較小的文件必須合並才能完成MR工作。

問題

  1. Flume可以用來更頻繁地讀取文件服務器中的這些較小文件並存儲在HDFS中嗎?

  2. 我知道有CombineFileInputFormat和SequenceFiles可以合並這些文件以進行處理,但是這些較小的文件是否可以在存儲在HDFS中之前進行串聯?

問題的可能答案。

從那以后已經有一段時間了,我使用了水槽。 仍然希望他們能提供幫助。

  1. Flume可以用來更頻繁地讀取文件服務器中的這些較小文件並存儲在HDFS中嗎?

由於數據源是可定制的,因此Flume可用於傳輸大量事件數據,包括但不限於網絡流量數據,社交媒體生成的數據,電子郵件消息以及幾乎所有可能的數據源。

注意:Flume不支持將tail作為源。 可以將tail命令包裝在exec源中以流式傳輸文件。

對於拖尾文件,您可以檢查一下

可以跟蹤目錄作為多個文件源的實現。

您可以在此處閱讀有關HDFS接收器的信息 ,該信息可以寫入HDFS

2 我知道有CombineFileInputFormat和SequenceFiles可以合並這些文件以進行處理,但是這些較小的文件是否可以在存儲在HDFS中之前進行串聯?

Flume基本上適用於事件機制。 可以根據經過的時間或數據大小或事件數定期滾動文件(關閉當前文件並創建一個新文件)。 檢查HDFS接收器的相同鏈接。

如果文件數量很大,則可以使用CombineFileINputFormat。 我不知道在寫入HDFS之前如何做到這一點。

注意:

正如我已經說過的,flume在基於事件的機制上起作用,據我所知,它不用於傳輸文件。 如果您在Event的界面中查看 ,則會注意到以下方法

byte[] getBody() :返回此事件中包含的數據的原始字節數組。

void setBody(byte[] body) :設置此事件中包含的數據的原始字節數組。

因此,事件的最大大小是byte []可以占用的大小。 我不知道您的文件是否可以放入其中。 您必須自己進行測試。 此外,還涉及其他一些條件,我現在不記得了,這些條件可能會阻止您將文件傳輸到HDFS。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM