Flume和Sqoop是Hadoop數(shù)據(jù)集成和收集系統(tǒng),兩者的定位不一樣,下面根據(jù)個(gè)人的經(jīng)驗(yàn)與理解和大家做一個(gè)介紹:
成都創(chuàng)新互聯(lián)主營(yíng)宣城網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,成都app開(kāi)發(fā),宣城h5小程序制作搭建,宣城網(wǎng)站營(yíng)銷推廣歡迎宣城等地區(qū)企業(yè)咨詢
Flume由cloudera開(kāi)發(fā)出來(lái),有兩大產(chǎn)品:Flume-og和Flume-ng,F(xiàn)lume-og的架構(gòu)過(guò)于復(fù)雜,在尋問(wèn)當(dāng)中會(huì)有數(shù)據(jù)丟失,所以放棄了?,F(xiàn)在我們使用的是Flume-ng,主要是日志采集,這個(gè)日志可以是TCP的系統(tǒng)的日志數(shù)據(jù),可以是文件數(shù)據(jù)(就是通常我們?cè)贗ntel服務(wù)器,通過(guò)其中的機(jī)構(gòu)傳過(guò)來(lái)的接口,或者通過(guò)防火墻采集過(guò)來(lái)的日志),在HDFS上去存儲(chǔ),可以和kafka進(jìn)行集成,這就是Flume的功能。
Flume架構(gòu)是分布式,可以根據(jù)需要進(jìn)行擴(kuò)展Flume的節(jié)點(diǎn)和數(shù)量。它的擴(kuò)展有兩個(gè)含義:一個(gè)是橫向的,根據(jù)原數(shù)據(jù)源的個(gè)數(shù)、種類不同進(jìn)行擴(kuò)展;第二個(gè)就是縱向的,可以增加更多的匯聚層,去做更多的過(guò)程的數(shù)據(jù)處理,而不是數(shù)據(jù)加載進(jìn)來(lái)之后再進(jìn)行轉(zhuǎn)換。
Flume的性能高可靠并且高可用的,可靠性主要體現(xiàn)在兩個(gè)方面:一方面就是有一份數(shù)據(jù)比較重要,為了保證數(shù)據(jù)傳輸?shù)目煽啃?,可以兩個(gè)agent指向這份數(shù)據(jù),而且兩個(gè)agent可以進(jìn)行示范切換,如果其中一個(gè)失敗,另一個(gè)還可以進(jìn)行傳輸。另一方面就是在agent的內(nèi)部可以做緩存通透區(qū),接收到數(shù)據(jù)可以存到磁盤(pán),放到數(shù)據(jù)庫(kù),縱使agent出問(wèn)題,數(shù)據(jù)依然存在。
Flume是做日志采集的,但是更多的數(shù)據(jù)是從結(jié)構(gòu)化數(shù)據(jù)庫(kù)過(guò)來(lái)的,這時(shí)我們就需要Sqoop。Sqoop是關(guān)系型數(shù)據(jù)庫(kù)和HDFS之間的一個(gè)橋梁,可以實(shí)現(xiàn)數(shù)據(jù)在關(guān)系型數(shù)據(jù)庫(kù)與HDFS之間的一個(gè)傳送。那么我們什么時(shí)候?qū)?shù)據(jù)傳遞到HDFS呢?主要是把新增交易,新增賬戶加載過(guò)來(lái),寫(xiě)的時(shí)候除了hdfs,還可以寫(xiě)hive,甚至可以直接去建表。而且可以在源數(shù)據(jù)庫(kù)設(shè)立是導(dǎo)整個(gè)數(shù)據(jù)庫(kù),還是導(dǎo)某一個(gè)表,或者導(dǎo)特定的列,這都是常見(jiàn)的在數(shù)據(jù)倉(cāng)庫(kù)中進(jìn)行的ETL.
sqoop允許增量導(dǎo)入,增量有兩種,一種是直接追加(比如新增訂單、交易可以追加);另一種是狀態(tài)的改變,比如一個(gè)客戶之前是白名單客戶,還款很好,但是如果某個(gè)月逾期,加入黑名單,后期還款了又回到白名單,狀態(tài)在不停改變,那么就不能再和交易等一樣做追加,這個(gè)時(shí)候需要做的就是拉鏈。需要一個(gè)修改的日期,那么這個(gè)狀態(tài)有沒(méi)有修改,如果修改了,那么之前加載的怎么辦?可以通過(guò)sqoop進(jìn)行配置,加載的時(shí)候讓它們?cè)贖adoop里面進(jìn)行更新。我們知道HDFS文件不能更新,這個(gè)時(shí)候進(jìn)行文件合并,通過(guò)合并的方式把文本的數(shù)據(jù)清除。
數(shù)據(jù)什么時(shí)候?qū)С瞿???dǎo)出數(shù)據(jù)就在于Hadoop里面分析好的數(shù)據(jù),我們可能需要下載一個(gè)數(shù)據(jù)集市,基于這個(gè)集市把數(shù)據(jù)導(dǎo)出來(lái),所以sqoop也可以把數(shù)據(jù)導(dǎo)出。sqoop導(dǎo)出的機(jī)制是:默認(rèn)的是MySQL,mysql效率較低,那么選擇第二種方式---直接模式,利用數(shù)據(jù)庫(kù)本身提供的一些導(dǎo)出工具。但是這些導(dǎo)出工具的效率還不夠高,更高的就是專業(yè)的定制的連接器,目前定制的連接器有MySQL、Postgres、Netezza、Teradata、Oracle。
以上就是根據(jù)自己的一些學(xué)習(xí)和工作經(jīng)驗(yàn)總結(jié)的關(guān)于Flume和Sqoop的相關(guān)知識(shí),有些具體的知識(shí)這里沒(méi)有多涉及,如果想了解的可以自己去學(xué)習(xí)。我自己平常也會(huì)去關(guān)注“大數(shù)據(jù)cn”和“大數(shù)據(jù)時(shí)代學(xué)習(xí)中心”這些微信公眾號(hào),里面分享的一些資訊和知識(shí)點(diǎn)對(duì)我有很大的幫助,推薦大家去看看,期望共同進(jìn)步!