- Apache Flume 教程
- Apache Flume - 主頁
- Apache Flume - 簡介
- Hadoop 中的資料傳輸
- Apache Flume - 架構
- Apache Flume - 資料流
- Apache Flume - 環境
- Apache Flume - 配置
- Apache Flume - 獲取 Twitter 資料
- 序列生成器源
- Apache Flume - NetCat 源
- Apache Flume 資源
- Apache Flume - 快速指南
- Apache Flume - 有用資源
- Apache Flume - 討論
Apache Flume - Hadoop 中的資料傳輸
大資料,眾所周知,是包含大量資料集的集合,這些資料集無法使用傳統的計算技術進行處理。大資料經過分析後,可以得出有價值的結果。Hadoop 是一個開源框架,它允許使用簡單的程式設計模型在計算機叢集的分散式環境中儲存和處理大資料。
流式/日誌資料
通常,大多數要分析的資料將由各種資料來源生成,例如應用程式伺服器、社交網路站點、雲伺服器和企業伺服器。這些資料將以日誌檔案和事件的形式存在。
日誌檔案 - 通常,日誌檔案是列出作業系統中發生的事件/操作的檔案。例如,Web 伺服器會在日誌檔案中列出對伺服器發出的每個請求。
在收集此類日誌資料後,我們可以獲取有關以下方面的資訊:-
- 應用程式效能並定位各種軟體和硬體故障。
- 使用者行為並獲得更好的業務洞察力。
將資料傳輸到 HDFS 系統的傳統方法是使用put命令。讓我們看看如何使用put命令。
HDFS put 命令
處理日誌資料的最大挑戰在於將這些由多個伺服器生成的日誌移動到 Hadoop 環境中。
Hadoop檔案系統 Shell提供命令將資料插入 Hadoop 並從中讀取資料。您可以使用如下所示的put命令將資料插入 Hadoop。
$ Hadoop fs –put /path of the required file /path in HDFS where to save the file
put 命令的問題
我們可以使用 Hadoop 的put命令將資料從這些源傳輸到 HDFS。但是,它存在以下缺點:-
使用put命令,我們一次只能傳輸一個檔案,而資料生成器生成資料的速度要快得多。由於對舊資料的分析準確性較低,因此我們需要一個解決方案來即時傳輸資料。
如果我們使用put命令,則需要打包資料並準備好上傳。由於 Web 伺服器會持續生成資料,因此這是一項非常困難的任務。
我們需要的是一個能夠克服put命令缺點的解決方案,並能夠以更少的延遲將“流資料”從資料生成器傳輸到集中儲存(特別是 HDFS)。
HDFS 的問題
在 HDFS 中,檔案作為目錄條目存在,並且在關閉檔案之前,檔案長度將被視為零。例如,如果某個源正在將資料寫入 HDFS 並且操作過程中網路中斷(未關閉檔案),則寫入檔案中的資料將丟失。
因此,我們需要一個可靠、可配置且可維護的系統來將日誌資料傳輸到 HDFS。
注意 - 在 POSIX 檔案系統中,每當我們訪問檔案(例如執行寫入操作)時,其他程式仍然可以讀取此檔案(至少可以讀取檔案的已儲存部分)。這是因為檔案在關閉之前就已存在於磁碟上。
可用解決方案
為了將流資料(日誌檔案、事件等)從各種來源傳送到 HDFS,我們有以下工具可以使用:-
Facebook 的 Scribe
Scribe 是一款非常流行的工具,用於聚合和流式傳輸日誌資料。它旨在擴充套件到大量節點,並能夠抵抗網路和節點故障。
Apache Kafka
Kafka 由 Apache 軟體基金會開發。它是一個開源訊息代理。使用 Kafka,我們可以處理具有高吞吐量和低延遲的饋送。
Apache Flume
Apache Flume 是一種用於收集、聚合和傳輸大量流式資料的工具/服務/資料攝取機制,例如來自各種 Web 伺服器的日誌資料、事件(等)到集中式資料儲存中。
它是一個高度可靠、分散式且可配置的工具,主要用於將流式資料從各種來源傳輸到 HDFS。
在本教程中,我們將詳細討論如何使用 Flume 以及一些示例。