這篇文章主要介紹“Apache的Flume和FileChannel有什么用”,在日常操作中,相信很多人在Apache的Flume和FileChannel有什么用問題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”Apache的Flume和FileChannel有什么用”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!
創(chuàng)新互聯(lián)專注于企業(yè)成都營(yíng)銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、錦州網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為錦州等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。Flume使用簡(jiǎn)單可擴(kuò)展的數(shù)據(jù)模型,支持在線分析應(yīng)用程序。
FileChannel是支持并行加密寫入多個(gè)磁盤的持久化Flume channel.
當(dāng)使用Flume 時(shí),每個(gè)工作流都擁有Source, Channel, and Sink,典型例子是一個(gè)webserver通過RPC將事件(events)寫入Source(例如:Avro Source),sources又將events寫入MemoryChannel,同時(shí)HDFS Sink從MemoryChannel消費(fèi)events,并寫入HDFS
MemoryChannel提供高吞吐的性能,同時(shí)在斷電和程序崩潰之后會(huì)造成數(shù)據(jù)丟失。因此需要開發(fā)一個(gè)持久化的Channel。File Channel的目標(biāo)是提供一個(gè)可靠的高吞吐Channel。File Channel保證當(dāng)事務(wù)被提交后,不會(huì)因?yàn)橐幌盗谐绦虮罎⒒蛘叩綦姸斐蓴?shù)據(jù)丟失。
值得注意的是,F(xiàn)ileChannel本身不會(huì)對(duì)數(shù)據(jù)進(jìn)行任何復(fù)制。 因此,它只能與底層磁盤一樣可靠。 由于其耐用性而使用FileChannel的用戶在購(gòu)買和配置硬件時(shí)應(yīng)考慮到這一點(diǎn)。 底層磁盤應(yīng)為RAID,SAN或類似磁盤。
許多系統(tǒng)以少量數(shù)據(jù)丟失風(fēng)險(xiǎn)換取更高的吞吐量(例如fsync,每隔幾秒從內(nèi)存到磁盤)。 Flume團(tuán)隊(duì)決定采用不同的方法實(shí)現(xiàn)FileChannel。 Flume是一個(gè)事務(wù)性系統(tǒng),多個(gè)事件(events)可以是單個(gè)事務(wù)中實(shí)現(xiàn)或者put或者take的操作。 批量大小可用于控制吞吐量。 使用大的批處理容量,F(xiàn)lume可以通過流處理數(shù)據(jù),在高吞吐量的情況下而不會(huì)丟失數(shù)據(jù)。 批量處理的大小完全可以由客戶端控制。 這對(duì)于RDBMS用戶比較熟悉。
Flume事務(wù)或者包含Puts 操作,或者Takes操作,不同時(shí)支持兩個(gè)操作,同時(shí)commit和rollback 也是如此。每個(gè)事物transanction都是了Put 和Take方法。Source 調(diào)用Put 方法將事件寫入Channel,Sinks執(zhí)行Takes 方法從channel中取數(shù)據(jù)。
FileChannel除了基于內(nèi)存隊(duì)列之外,還基于預(yù)寫日志W(wǎng)AL。每個(gè)事務(wù)都根據(jù)事務(wù)類型(Take或Put)寫入WAL,并相應(yīng)地修改隊(duì)列。每次提交事務(wù)時(shí),都會(huì)在相應(yīng)的文件上調(diào)用fsync,以確保數(shù)據(jù)確實(shí)寫入磁盤上,并將指向該事件的指針放在隊(duì)列中。該隊(duì)列就像任何其他隊(duì)列一樣:它管理尚未被Sink消費(fèi)的內(nèi)容。在獲取期間,將隊(duì)列中指針刪除。然后直接從WAL讀取事件。由于目前可用的RAM量很大,因此從操作系統(tǒng)文件緩存中進(jìn)行讀取非常常見。
程序崩潰后,可以重放WAL以將隊(duì)列置于崩潰之前的狀態(tài),因此已提交的事務(wù)不會(huì)丟失。重放WAL可能非常耗時(shí),因此隊(duì)列本身會(huì)定期寫入磁盤。將隊(duì)列寫入磁盤稱為檢查點(diǎn)。崩潰后,隊(duì)列從磁盤加載,然后只有隊(duì)列保存到磁盤后才提交事務(wù),這大大減少了必須讀取的WAL數(shù)量。
例如,channel中有兩個(gè)如下圖所示的events。
WAL包含三個(gè)重要項(xiàng):事務(wù)ID,序列號(hào)和事件數(shù)據(jù)。 每個(gè)事務(wù)都有一個(gè)唯一的事務(wù)ID,每個(gè)事件都有一個(gè)唯一的序列號(hào)。 事務(wù)id僅用于將事件分組到事務(wù)中,而在重放日志時(shí)使用序列號(hào)。 在上面的示例中,事務(wù)id為1,序列號(hào)為1,2和3。
當(dāng)隊(duì)列保存到磁盤(檢查點(diǎn))時(shí),序列號(hào)也會(huì)增加并保存。 在重新啟動(dòng)時(shí),首先加載來自磁盤的隊(duì)列,然后重放序列號(hào)大于隊(duì)列的所有WAL條目。 在檢查點(diǎn)操作期間,通道被鎖定,因此任何Put或Take操作都不能改變它的狀態(tài)。 允許在檢查點(diǎn)期間修改隊(duì)列將導(dǎo)致存儲(chǔ)在磁盤上的隊(duì)列的快照不一致。
在上面的示例隊(duì)列中,在提交事務(wù)1之后發(fā)生檢查點(diǎn),導(dǎo)致隊(duì)列中的事件a,事件b被保存到磁盤,同時(shí)序列號(hào)為4。
然后,事件a在事務(wù)2中被taken。
如果發(fā)生崩潰,則從磁盤讀取隊(duì)列檢查點(diǎn)。 請(qǐng)注意,由于檢查點(diǎn)發(fā)生在事務(wù)2之前,因此隊(duì)列中當(dāng)前存在事件a和b。 然后讀取WAL并應(yīng)用序列號(hào)大于4的任何已提交事務(wù),從而導(dǎo)致從隊(duì)列中刪除“a”(該操作的event是[2,5,Take "a"])。
上述設(shè)計(jì)不包括兩個(gè)項(xiàng)目。 在檢查點(diǎn)發(fā)生時(shí)正在進(jìn)行的Takes和Puts將丟失。 假設(shè)在獲取“a”之后發(fā)生了檢查點(diǎn):
如果此時(shí)發(fā)生崩潰,則在上述設(shè)計(jì)下,事件“b”將在隊(duì)列上并且在重放時(shí)將重放序列號(hào)大于5的任何WAL條目。 將重播事務(wù)2的回滾[2,6,Rollback],但不會(huì)重放事務(wù)2的Taken[2,4,Take "a"]。 因此,“a”不會(huì)被放置在隊(duì)列中,從而導(dǎo)致數(shù)據(jù)丟失。 Puts也會(huì)采用類似的方案。 因此,當(dāng)發(fā)生隊(duì)列檢查點(diǎn)時(shí),也會(huì)寫出仍在進(jìn)行中的事務(wù),以便可以適當(dāng)?shù)亟鉀Q上述場(chǎng)景。
FileChannel存儲(chǔ)在Flume項(xiàng)目的flume-file-channel模塊中,包名是org.apache.flume.channel.file。 上面描述的隊(duì)列的名稱為FlumeEventQueue,WAL名稱為L(zhǎng)og。 隊(duì)列本身是一個(gè)循環(huán)數(shù)組,由內(nèi)存映射文件支持,而WAL是一組使用LogFile類及其子類編寫和讀取的文件。
到此,關(guān)于“Apache的Flume和FileChannel有什么用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。