1. 程式人生 > >flume上傳檔案到hdfs上

flume上傳檔案到hdfs上

在第一篇文章中我們是將log4j的日誌輸出到了agent的日誌檔案當中。配置檔案如下:

  1. tier1.sources=source1  
  2. tier1.channels=channel1  
  3. tier1.sinks=sink1  
  4. tier1.sources.source1.type=avro  
  5. tier1.sources.source1.bind=0.0.0.0  
  6. tier1.sources.source1.port=44444  
  7. tier1.sources.source1.channels=channel1  
  8. tier1.channels.channel1.type=memory  
  9. tier1.channels.channel1.capacity=10000  
  10. tier1.channels.channel1.transactionCapacity=1000  
  11. tier1.channels.channel1.keep-alive=30  
  12. tier1.sinks.sink1.type=logger  
  13. tier1.sinks.sink1.channel=channel1  

本次我們把log4j的日誌直接採集輸出到hdfs中去。需要修改flume.conf中sink的配置:
  1. tier1.sources=source1  
  2. tier1.channels=channel1  
  3. tier1.sinks=sink1  
  4. tier1.sources.source1.type=avro  
  5. tier1.sources.source1.bind=0.0.0.0  
  6. tier1.sources.source1.port=44444  
  7. tier1.sources.source1.channels=channel1  
  8. tier1.channels.channel1.type=memory  
  9. tier1.channels.channel1.capacity=10000  
  10. tier1.channels.channel1.transactionCapacity=1000  
  11. tier1.channels.channel1.keep-alive=30  
  12. tier1.sinks.sink1.type=hdfs  
  13. tier1.sinks.sink1.channel=channel1  
  14. tier1.sinks.sink1.hdfs.path=hdfs://master68:8020/flume/events  
  15. tier1.sinks.sink1.hdfs.fileType=DataStream  
  16. tier1.sinks.sink1.hdfs.writeFormat=Text  
  17. tier1.sinks.sink1.hdfs.rollInterval=0  
  18. tier1.sinks.sink1.hdfs.rollSize=10240  
  19. tier1.sinks.sink1.hdfs.rollCount=0  
  20. tier1.sinks.sink1.hdfs.idleTimeout=60  
簡單說明一下修改的部分,我們將sink的type由logger變為hdfs,然後指定輸出path, 預設是輸出到HDFS後為sequencefile,裡面的內容無法直接開啟瀏覽,為了便於直觀看到我們輸出的日誌資訊,所以我這裡將fileType為DataStream, writeFormat=Text,這樣就可以直接開啟生成的檔案進行查看了。

下面幾個roll開頭的引數都是用來控制滾動日誌輸出的,官方文件上的說明也很詳細,我這裡配置的只按檔案大小來滾動rollSize=10240,也就是10K滾動生成一個新的檔案用來接收新的EVENTS。實際中這個Size應該更大一些,我覺得設定成HDFS的blocksize大小應該挺合適的。

idleTimeout設定為60秒(預設值為0),這裡面的原理是這樣的,flume裡面每生成一個接收檔案時的命名規則如:FlumeData.1406251462179.tmp,.tmp表示這個檔案正在被使用來接收EVENTS,當滿10K之後,這個檔案會被rename成FlumeData.1406251462179,把.tmp字尾去掉,但是如果你停止了應用程式後,FlumeData.1406251462179.tmp還沒滿10K,按照預設的idleTimeout設定,不會將它rename,也就是.tmp字尾一直在,造成了這個檔案一直在使用當中的一個假象,這是有問題的,我們設定idleTimeout=60,即60秒後這個檔案還沒有被寫入資料,就會關閉它然後rename它去掉.tmp,以後新進來的events,會新開一個.tmp檔案來接收。

我們再執行第一篇文章中的那個示例應用程式,然後去path指定的目錄下面就能看到log4j輸出的日誌資訊了。

補充注意點(針對cm安裝的flume):

首先在hdfs上建立/flume目錄:hadoop fs -mkdir /flume
給該目錄授權給flume使用者和組:hadoop fs -chown -R flume:flume /flume

注意給目錄授權很重要,不然會報錯。

相關推薦

將本地文字檔案HDFS,然後匯入hive/impala對應表中

1.本地文字檔案上傳前的準備 將文字儲存為"uft-8"格式,並用"|"進行欄位間的分割(個人習慣,可以選用其它符號,但要避免和程式語言產生衝突,Hive預設的欄位分隔符為ascii碼的控制符\001)。 2.將文字檔案通過Xshell上傳到HDFS上 (1)首先要新建(A

HDFS的文件遇到亂碼問題

utf-8 正常 bsp 問題 發現 works lin 選項 顯示亂碼 1.通過eclipse中的hdfs插件上傳文件,上傳成功,但是查看是亂碼。 查閱文件本身的編碼方式,發現是utf-8,同時文件在項目目錄下,顯示正常,因為我把它的編碼格式也設成了utf-8。 2.通過

java圖片-檔案/圖片到七牛

java圖片上傳-檔案(圖片)上傳到七牛 一、在配置檔案中引入依賴(注:七牛開發者url:https://developer.qiniu.com/kodo) <-- 引入依賴 --> <dependency> <

美化檔案框(圖片框)

//initfunction initFile(fo){var divFile = document.createElement("div");divFile.className="file"; fo.parentNode.insertBefore(divFile,fo);divFile.appendChil

vue-resource+iview檔案取消

vue-resource+iview上傳檔案取消上傳 子元件: <template> <div class="upload-area-div"> <Upload :type="upType" class="upload-area"

java 單個檔案, 批量檔案,單個下載,批量打成zip壓縮包下載檔案(如果不能接受httpsevletrequest請求的檔案可以使用MultipartFile[] files)

package net.wkang.intelligent_audit.hospitalization.utils; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; impor

retrofit2 進度回撥與 Interceptor衝突引起檔案資料兩次

原因:在開發過程中,遇到過上傳檔案資料上傳兩次的問題,發現是在OkHttp里加入了預設的HttpLoggingInterceptor引起的。在下面程式碼呼叫了wirteTo方法,導致會再次執行UploadFileRequestBody.writeto方法重複寫入資料。/*

h5特性formdata帶引數檔案到node端

html: <input type="file" id="addpic" multiple="multiple"/> <button id="uploadpic" style="

fastDFS中使用php檔案 -- http與下載圖片

CleverCode研究完fastDFS後,嘗試著使用php上傳檔案到fastdfs。 1 fastDFS安裝   fastdfs分散式架構配置參考:http://blog.csdn.net/clevercode/article/details/52267080。   fa

CKEditor+CKFinder for java (檔案視訊、新增行距編輯等等)

         CKEditor 、CKFinder    相互融合要注意的細節的確很多,因為功能的強大和介面的優勢,花費一些時間整合還是有意義的。           下載外掛:        CKEditor  : http://ckeditor.com/    

Flume之監聽目錄變化並檔案HDFS

vim /usr/local/flume/conf/exex-hdfs.conf a1.sources = r1         a1.sinks = k1         a1.channels = c1     # Describe/configure the sour

flume檔案hdfs

在第一篇文章中我們是將log4j的日誌輸出到了agent的日誌檔案當中。配置檔案如下: tier1.sources=source1  tier1.channels=channel1  tier1.sinks=sink1  tier1.sources.source1.ty

多個Flume合併一個channel檔案Hdfs

需要交流請進群-- 494831900 --我和群中朋友會及時回答 需要交流請進群-- 494831900 在tohdfs.conf 中配置如下 ----------------------------------------------------------------

Spark/HDFS檔案錯誤:Permission denied

問題描述 今天用spark將RDD結果輸出到HDFS時,因為CDH叢集重新配置的原因,許可權沒有設定好。導致寫檔案出bug。 錯誤情況 org.apache.hadoop.security.AccessControlException: Permission denied: use

HDFS檔案與Spark執行

根據並行度與檔案大小設定Block大小,上傳指令碼: hadoop dfs -D dfs.block.size=42724400 -D io.bytes.per.checksum=100 / -D dfs.namenode.fs-limits.min-block-size=324000 -pu

HDFS檔案

1.client端向namenode請求上傳檔案,檢視檔案是否存在,是否有許可權往hdfs寫入 2.如果檔案不存在,許可權OK就根據副本數N(例如2個),根據網路拓撲選擇N個離client端最近的datanode返回client。 (把檔案切塊,一個一個block塊的請求namenode,返回最優的d

hadoop錯誤解決辦法:-------HDFS檔案儲存錯誤或速度很慢

出現症狀: 2018-11-22 11:28:12,711 WARN hdfs.DataStreamer: Abandoning BP-2142139802-10.20.2.1-1536240602405:blk_1073765062_24289 2018-11-22 11:28:12,71

HDFS檔案的命令使用

開啟Hadoop,sbin/start-all.sh 上傳檔案:bin/hadoop fs -put /home/xleer/1.txt  /user/hadoop/input1/ 檢視HDFS中的檔案: bin/hadoop fs -ls /user/hadoop/in

【問題解決】利用Eclipse,在hadoop檔案hdfs沒有內容

本文適用於一些在網上找了半天答案都沒解決問題的人群,因為我也是在按網上說道弄了一天,最後才解決的。如果你是剛遇到問題,還沒有深入,建議你檢視這篇文章 http://f.dataguru.cn/hadoop-208802-1-1.html 將問題一步一步排除後仍沒有解決的話,可以試試我

在spring boot下如何通過rest 介面 來檔案 和下載檔案 到 hadoop hdfs

本文將用程式碼來演示在spring boot裡面,用hadoop client,通過restful API來上傳檔案 和下載檔案 到 hadoop hdfs。 裡面有一些程式碼依賴坑,注意繞行。 前提: 如果你的程式碼在windows上執行,去連線linux上的hado