[英]Flume - loading files from file server to HDFS
我想經常將文件從文件服務器加載到HDFS。 較小的文件(2 MB至20 MB)會經常加載到文件服務器中。 這些文件必須加載到HDFS中以進行MR處理。 在將這些文件提供給Map-Reduce作業之前,我看到了2個問題。
如果在運行MR作業時選擇了這些文件並將其加載到HDFS中,則將這些文件加載到HDFS本身將花費很長時間。
這些較小的文件必須合並才能完成MR工作。
問題
Flume可以用來更頻繁地讀取文件服務器中的這些較小文件並存儲在HDFS中嗎?
我知道有CombineFileInputFormat和SequenceFiles可以合並這些文件以進行處理,但是這些較小的文件是否可以在存儲在HDFS中之前進行串聯?
問題的可能答案。
從那以后已經有一段時間了,我使用了水槽。 仍然希望他們能提供幫助。
- 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.