Flume和Sqoop


在我們了解Flume和Sqoop之前,讓我們研究資料載入到Hadoop的問題:

使用Hadoop分析處理資料,需要裝載大量從不同來源的資料到Hadoop叢集。

從不同來源大容量的資料載入到Hadoop,然後這個過程處理它,這具有一定的挑戰。

維護和確保資料的一致性,並確保資源的有效利用,選擇正確的方法進行資料載入前有一些因素是要考慮的。

主要問題:

1. 使用指令碼載入資料

傳統的使用指令碼載入資料的方法,不適合於大容量資料載入到 Hadoop;這種方法效率低且非常耗時。

2. 通過 Map-Reduce 應用程式直接存取外部資料

提供了直接存取駐留在外部系統中的資料(不載入到Hadopp)到map reduce,這些應用程式複雜性。所以,這種方法是不可行的。

3.除了具有龐大的資料的工作能力,Hadoop可以在幾種不同形式的資料上工作。這樣,裝載此類異構資料到Hadoop,不同的工具已經被開發。Sqoop和Flume 就是這樣的資料載入工具。

SQOOP介紹

Apache Sqoop(SQL到Hadoop)被設計為支援批次從結構化資料儲存匯入資料到HDFS,如關聯式資料庫,企業級資料倉庫和NoSQL系統。Sqoop是基於一個連線器體系結構,它支援外掛來提供連線到新的外部系統。

一個Sqoop 使用的例子是,一個企業執行在夜間使用 Sqoop 匯入當天的生產負荷交易的RDBMS 資料到 Hive 資料倉庫作進一步分析。

Sqoop 連線器

現有資料庫管理系統的設計充分考慮了SQL標準。但是,每個不同的 DBMS 方言化到某種程度。因此,這種差異帶來的挑戰,當涉及到整個系統的資料傳輸。Sqoop連線器就是用來解決這些挑戰的元件。

Sqoop和外部儲存系統之間的資料傳輸在 Sqoop 連線器的幫助下使得有可能。

Sqoop 連線器與各種流行的關係型資料庫,包括:MySQL, PostgreSQL, Oracle, SQL Server 和 DB2 工作。每個這些連線器知道如何與它的相關聯的資料庫管理系統進行互動。 還有用於連線到支援Java JDBC協定的任何資料庫的通用JDBC連線器。 此外,Sqoop提供優化MySQL和PostgreSQL連線器使用資料庫特定的API,以有效地執行批次傳輸。


除了這一點,Sqoop具有各種第三方連線器用於資料儲存,

從企業資料倉庫(包括Netezza公司,Teradata和甲骨文)到 NoSQL儲存(如Couchbase)。但是,這些連線器沒有配備Sqoop束;  這些需要單獨下載並很容易地安裝新增到現有的Sqoop。

FLUME 介紹

Apache Flume 用於移動大規模批次流資料到 HDFS 系統。從Web伺服器收集當前紀錄檔檔案資料到HDFS聚集用於分析,一個常見的用例是Flume。

Flume 支援多種來源,如:

  • “tail”(從本地檔案,該檔案的管道資料和通過Flume寫入 HDFS,類似於Unix命令“tail”)
  • 系統紀錄檔
  • Apache log4j (允許Java應用程式通過Flume事件寫入到HDFS檔案)。

在 Flume 的資料流

Flume代理是JVM進程,裡面有3個組成部分 - Flume Source, Flume Channel 和 Flume Sink -通過該事件傳播發起在外部源之後。

  1. 在上面的圖中,由外部源(Web伺服器)生成的事件是由Flume資料源消耗。 外部源將事件以目標源識別的格式傳送給 Flume 源。
  2. Flume 源接收到一個事件,並將其儲存到一個或多個通道。通道充當儲存事件,直到它由 flume消耗。此通道可能使用本地檔案系統以便儲存這些事件。
  3. Flume 將刪除通道,並儲存事件到如HDFS外部儲存庫。可能會有多個 flume 代理,在這種情況下,flume將事件轉發到下一個flume代理。

FLUME 一些重要特性

  • Flume 基於串流媒體資料流靈活的設計。這是容錯和強大的多故障切換和恢復機制。 Flume 有不同程度的可靠性,提供包括“盡力傳輸'和'端至端輸送'。盡力而為的傳輸不會容忍任何 Flume 節點故障,而“終端到終端的傳遞”模式,保證傳遞在多個節點出現故障的情況。
  • Flume 承載源和接收之間的資料。這種資料收集可以被預定或是事件驅動。Flume有它自己的查詢處理引擎,這使得在轉化每批新資料移動之前它能夠到預定接收器。
  • 可能 Flume 包括HDFS和HBase。Flume 也可以用來輸送事件資料,包括但不限於網路的業務資料,也可以是通過社交媒體網站和電子郵件訊息所產生的資料。

自2012年7月Flume 發布了新版本 Flume NG(新一代),因為它和原來的版本有明顯的不同,因為被稱為 Flume OG (原代)。