- Apache Flume 教程
- Apache Flume - 首頁
- Apache Flume - 簡介
- Hadoop 中的資料傳輸
- Apache Flume - 架構
- Apache Flume - 資料流
- Apache Flume - 環境
- Apache Flume - 配置
- Apache Flume - 獲取 Twitter 資料
- 序列生成器 Source
- Apache Flume - NetCat Source
- Apache Flume 資源
- Apache Flume - 快速指南
- Apache Flume - 有用資源
- Apache Flume - 討論
Apache Flume - 序列生成器 Source
在上一章中,我們瞭解瞭如何從 Twitter 源獲取資料到 HDFS。本章將解釋如何從**序列生成器**獲取資料。
先決條件
要執行本章提供的示例,您需要安裝**HDFS**以及**Flume**。因此,在繼續操作之前,請驗證 Hadoop 安裝並啟動 HDFS。(請參閱上一章瞭解如何啟動 HDFS)。
配置 Flume
我們必須使用**conf**資料夾中的配置檔案來配置源、通道和接收器。本章提供的示例使用**序列生成器源**、**記憶體通道**和**HDFS 接收器**。
序列生成器 Source
它是持續生成事件的源。它維護一個從 0 開始並遞增 1 的計數器。它用於測試目的。在配置此源時,您必須為以下屬性提供值:
通道
**源型別** - seq
通道
我們使用**記憶體**通道。要配置記憶體通道,您*必須*為通道的型別提供一個值。以下是配置記憶體通道時需要提供的屬性列表:
**型別** - 它儲存通道的型別。在我們的示例中,型別為 MemChannel。
**容量** - 它是通道中儲存事件的最大數量。其預設值為 100。(可選)
**事務容量** - 它是通道接受或傳送事件的最大數量。其預設值為 100。(可選)。
HDFS 接收器
此接收器將資料寫入 HDFS。要配置此接收器,您*必須*提供以下詳細資訊。
通道
**型別** - hdfs
**hdfs.path** - HDFS 中要儲存資料的目錄的路徑。
並且我們可以根據場景提供一些可選值。以下是我們在應用程式中配置的 HDFS 接收器的可選屬性。
**檔案型別** - 這是我們 HDFS 檔案所需的格式。**SequenceFile、DataStream** 和**CompressedStream** 是此流提供的三種類型。在我們的示例中,我們使用**DataStream**。
**寫入格式** - 可以是文字或可寫。
**批處理大小** - 它是寫入檔案中的事件數量,然後將其重新整理到 HDFS。其預設值為 100。
**滾動大小** - 它是觸發滾動的檔案大小。其預設值為 100。
**滾動計數** - 它是寫入檔案中的事件數量,然後將其滾動。其預設值為 10。
示例 - 配置檔案
以下是配置檔案示例。複製此內容並將其另存為 Flume 的 conf 資料夾中的**seq_gen .conf**。
# Naming the components on the current agent SeqGenAgent.sources = SeqSource SeqGenAgent.channels = MemChannel SeqGenAgent.sinks = HDFS # Describing/Configuring the source SeqGenAgent.sources.SeqSource.type = seq # Describing/Configuring the sink SeqGenAgent.sinks.HDFS.type = hdfs SeqGenAgent.sinks.HDFS.hdfs.path = hdfs://:9000/user/Hadoop/seqgen_data/ SeqGenAgent.sinks.HDFS.hdfs.filePrefix = log SeqGenAgent.sinks.HDFS.hdfs.rollInterval = 0 SeqGenAgent.sinks.HDFS.hdfs.rollCount = 10000 SeqGenAgent.sinks.HDFS.hdfs.fileType = DataStream # Describing/Configuring the channel SeqGenAgent.channels.MemChannel.type = memory SeqGenAgent.channels.MemChannel.capacity = 1000 SeqGenAgent.channels.MemChannel.transactionCapacity = 100 # Binding the source and sink to the channel SeqGenAgent.sources.SeqSource.channels = MemChannel SeqGenAgent.sinks.HDFS.channel = MemChannel
執行
瀏覽 Flume 主目錄並按如下所示執行應用程式。
$ cd $FLUME_HOME $./bin/flume-ng agent --conf $FLUME_CONF --conf-file $FLUME_CONF/seq_gen.conf --name SeqGenAgent
如果一切順利,源將開始生成序列號,這些序列號將以日誌檔案形式推送到 HDFS 中。
以下是命令提示符視窗的快照,該視窗將序列生成器生成的資料提取到 HDFS 中。
驗證 HDFS
您可以使用以下 URL 訪問 Hadoop 管理 Web UI:
https://:50070/
單擊頁面右側名為**實用程式**的下拉選單。您可以看到如下所示的兩個選項。
單擊**瀏覽檔案系統**並輸入您已將序列生成器生成的資料儲存在其中的 HDFS 目錄的路徑。
在我們的示例中,路徑將為** /user/Hadoop/ seqgen_data /**。然後,您可以看到序列生成器生成的日誌檔案列表,儲存在 HDFS 中,如下所示。
驗證檔案內容
所有這些日誌檔案都包含按順序排列的數字。您可以使用如下所示的**cat**命令驗證檔案系統中這些檔案的內容。