Flume 學習 —— 案例三:Flume 監聽本地目錄,並將目錄下文件上傳至 HDFS

案例三:Flume 監聽本地目錄,並將目錄下文件上傳至 HDFS

創建配置文件

1.在這裏,我使用 Flume 監聽的是 /usr/wang/data/upload 目錄下的文件
2.在 flume 的 conf 同級目錄下創建 job 文件夾,並在 job 文件夾內創建 flume-dir-hdfs.conf

cd /usr/wang/flume
mkdir job
cd job
vim flume-dir-hdfs.conf

將下方文件拷貝到 flume-dir-hdfs.conf 中

a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /usr/wang/data/upload
a1.sources.r1.fileHeader = true
#忽略所有以.tmp結尾的文件,不上傳
a1.sources.r1.ignorePattern = ([^ ]*\.tmp)

# Describe the sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://master:9000/flume/upload/%Y%m%d/%H
#上傳文件的前綴
a1.sinks.k1.hdfs.filePrefix = upload-
#是否按照時間滾動文件夾
a1.sinks.k1.hdfs.round = true
#多少時間單位創建一個新的文件夾
a1.sinks.k1.hdfs.roundValue = 1
#重新定義時間單位
a1.sinks.k1.hdfs.roundUnit = hour
#是否使用本地時間戳
a1.sinks.k1.hdfs.useLocalTimeStamp = true
#積攢多少個Event才flush到HDFS一次
a1.sinks.k1.hdfs.batchSize = 1000
#設置文件類型,可支持壓縮
a1.sinks.k1.hdfs.fileType = DataStream
#多久生成一個新的文件
a1.sinks.k1.hdfs.rollInterval = 600
#設置每個文件的滾動大小
a1.sinks.k1.hdfs.rollSize = 134217700
#文件的滾動與Event數量無關
a1.sinks.k1.hdfs.rollCount = 0
#最小冗餘數
a1.sinks.k1.hdfs.minBlockReplicas = 1


# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

注意上方的 a1.sinks.k1.hdfs.path 中的 hdfs 端口號應該與你在 hadoop 下的 core-site.xml 中配置的 NameNode 的地址相同,之前因爲端口號不正確,會在 log 日誌中出現 connect refused

<configuration>
        <!-- 指定HDFS中NameNode的地址 -->
        <property>
                <name>fs.defaultFS</name>
                <value>hdfs://master:9000</value>
        </property>

        <!-- 指定Hadoop運行時產生文件的存儲目錄 -->
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/usr/wang/hadoop/data/tmp</value>
        </property>
</configuration>

測試

1.在執行監控配置之前,需要先將 HDFS 集羣啓動起來

cd /usr/wang/hadoop/sbin
./start-dfs.sh

HDFS 集羣
2.執行監控配置

cd /usr/wang/flume
bin/flume-ng agent --conf conf/ --name a1 --conf-file job/flume-file-hdfs.conf

3.查看 HDFS 上是否創建成功

/usr/wang/hadoop/bin/hdfs dfs -ls /flume

結果
4.查看本地的被監控文件夾
本地文件夾
另注:在這個過程中,當我在 /usr/wang/data/upload 文件夾下創建 hello.txt 並向其中寫入數據,保存關閉後,Flume同樣會將 hello.txt 這個文件上傳至 HDFS
創建 hello.txt
5.關閉
在執行監控配置端輸入 ctrl + c 即可關閉,或者直接使用

sudo kill -9 進程號

關閉

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章