在我們了解Flume和Sqoop之前,讓我們研究資料載入到Hadoop的問題:
使用Hadoop分析處理資料,需要裝載大量從不同來源的資料到Hadoop叢集。
從不同來源大容量的資料載入到Hadoop,然後這個過程處理它,這具有一定的挑戰。
維護和確保資料的一致性,並確保資源的有效利用,選擇正確的方法進行資料載入前有一些因素是要考慮的。
主要問題:
1. 使用指令碼載入資料
傳統的使用指令碼載入資料的方法,不適合於大容量資料載入到 Hadoop;這種方法效率低且非常耗時。
2. 通過 Map-Reduce 應用程式直接存取外部資料
提供了直接存取駐留在外部系統中的資料(不載入到Hadopp)到map reduce,這些應用程式複雜性。所以,這種方法是不可行的。
3.除了具有龐大的資料的工作能力,Hadoop可以在幾種不同形式的資料上工作。這樣,裝載此類異構資料到Hadoop,不同的工具已經被開發。Sqoop和Flume 就是這樣的資料載入工具。
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。
Apache Flume 用於移動大規模批次流資料到 HDFS 系統。從Web伺服器收集當前紀錄檔檔案資料到HDFS聚集用於分析,一個常見的用例是Flume。
Flume 支援多種來源,如:
在 Flume 的資料流
Flume代理是JVM進程,裡面有3個組成部分 - Flume Source, Flume Channel 和 Flume Sink -通過該事件傳播發起在外部源之後。
自2012年7月Flume 發布了新版本 Flume NG(新一代),因為它和原來的版本有明顯的不同,因為被稱為 Flume OG (原代)。