在我們了解Flume和Sqoop之前,讓我們研究數(shù)據(jù)加載到Hadoop的問題:
使用Hadoop分析處理數(shù)據(jù),需要裝載大量從不同來源的數(shù)據(jù)到Hadoop集群。
從不同來源大容量的數(shù)據(jù)加載到Hadoop,然后這個過程處理它,這具有一定的挑戰(zhàn)。
維護(hù)和確保數(shù)據(jù)的一致性,并確保資源的有效利用,選擇正確的方法進(jìn)行數(shù)據(jù)加載前有一些因素是要考慮的。
主要問題:
1. 使用腳本加載數(shù)據(jù)
傳統(tǒng)的使用腳本加載數(shù)據(jù)的方法,不適合于大容量數(shù)據(jù)加載到 Hadoop;這種方法效率低且非常耗時。
2. 通過 Map-Reduce 應(yīng)用程序直接訪問外部數(shù)據(jù)
提供了直接訪問駐留在外部系統(tǒng)中的數(shù)據(jù)(不加載到Hadopp)到map reduce,這些應(yīng)用程序復(fù)雜性。所以,這種方法是不可行的。
3.除了具有龐大的數(shù)據(jù)的工作能力,Hadoop可以在幾種不同形式的數(shù)據(jù)上工作。這樣,裝載此類異構(gòu)數(shù)據(jù)到Hadoop,不同的工具已經(jīng)被開發(fā)。Sqoop和Flume 就是這樣的數(shù)據(jù)加載工具。
Apache Sqoop(SQL到Hadoop)被設(shè)計為支持批量從結(jié)構(gòu)化數(shù)據(jù)存儲導(dǎo)入數(shù)據(jù)到HDFS,如關(guān)系數(shù)據(jù)庫,企業(yè)級數(shù)據(jù)倉庫和NoSQL系統(tǒng)。Sqoop是基于一個連接器體系結(jié)構(gòu),它支持插件來提供連接到新的外部系統(tǒng)。
一個Sqoop 使用的例子是,一個企業(yè)運(yùn)行在夜間使用 Sqoop 導(dǎo)入當(dāng)天的生產(chǎn)負(fù)荷交易的RDBMS 數(shù)據(jù)到 Hive 數(shù)據(jù)倉庫作進(jìn)一步分析。
Sqoop 連接器
現(xiàn)有數(shù)據(jù)庫管理系統(tǒng)的設(shè)計充分考慮了SQL標(biāo)準(zhǔn)。但是,每個不同的 DBMS 方言化到某種程度。因此,這種差異帶來的挑戰(zhàn),當(dāng)涉及到整個系統(tǒng)的數(shù)據(jù)傳輸。Sqoop連接器就是用來解決這些挑戰(zhàn)的組件。
Sqoop和外部存儲系統(tǒng)之間的數(shù)據(jù)傳輸在 Sqoop 連接器的幫助下使得有可能。
Sqoop 連接器與各種流行的關(guān)系型數(shù)據(jù)庫,包括:MySQL, PostgreSQL, Oracle, SQL Server 和 DB2 工作。每個這些連接器知道如何與它的相關(guān)聯(lián)的數(shù)據(jù)庫管理系統(tǒng)進(jìn)行交互。 還有用于連接到支持Java JDBC協(xié)議的任何數(shù)據(jù)庫的通用JDBC連接器。 此外,Sqoop提供優(yōu)化MySQL和PostgreSQL連接器使用數(shù)據(jù)庫特定的API,以有效地執(zhí)行批量傳輸。


除了這一點,Sqoop具有各種第三方連接器用于數(shù)據(jù)存儲,
從企業(yè)數(shù)據(jù)倉庫(包括Netezza公司,Teradata和甲骨文)到 NoSQL存儲(如Couchbase)。但是,這些連接器沒有配備Sqoop束; 這些需要單獨(dú)下載并很容易地安裝添加到現(xiàn)有的Sqoop。
Apache Flume 用于移動大規(guī)模批量流數(shù)據(jù)到 HDFS 系統(tǒng)。從Web服務(wù)器收集當(dāng)前日志文件數(shù)據(jù)到HDFS聚集用于分析,一個常見的用例是Flume。
Flume 支持多種來源,如:
在 Flume 的數(shù)據(jù)流
Flume代理是JVM進(jìn)程,里面有3個組成部分 - Flume Source, Flume Channel 和 Flume Sink -通過該事件傳播發(fā)起在外部源之后。


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