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


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


自2012年7月Flume 發(fā)布了新版本 Flume NG(新一代),因?yàn)樗驮瓉?lái)的版本有明顯的不同,因?yàn)楸环Q為 Flume OG (原代)。