聊聊自學大數據flume中容易被人忽略的細節

2020-12-24 老劉情感影視

前言:老劉不敢保證說的有多好,但絕對是非常良心地講述自學大數據開發路上的一些經歷和感悟,保證會講述一些不同於別人技術博客的細節。

01自學flume的細節

老劉現在想寫點有自己特色的東西,講講自學大數據遇到的一些事情,保證講一些別人技術博客裡忽略的知識點。

很多自學編程的人都會有一個問題,特別是研二即將找工作的小夥伴,因為馬上就要找工作了,自學時間不多了,所以在自學的路上,常常會忽略很多細小但很重要的知識點,很多夥伴都是直接背一些機構的資料。

自己沒有靜下心來好好研究各個知識點,也沒有考慮這些機構寫的知識點的對錯,完全照搬資料上的知識點,沒有形成自己的理解,這是非常危險的!

從今天開始,老劉就來給大家講講自學大數據開發路上的那些容易被人忽略的細節,讓大家對知識點形成自己的理解。

1、什麼是flume?

在解釋什麼是flume這類知識點上,很多機構的資料或者網上的技術博客講的都不好,很多培訓機構的資料是這樣形容的「Flume是一個高可用,高可靠,分布式的海量日誌採集、聚合和傳輸的系統」。

一般都會覺得這句話沒啥問題,但是好好想想,這句話是不是相當於這個場景,男女相親,男方說我有車有房,但是沒有說是什麼車,什麼房,自行車也是車,租的房也是房啊!所以在說有車有房的時候,一定要拿出確鑿的證據。

所以呢,當面試的時候,直接說flume是一個高可用,高可靠,分布式的海量日誌採集、聚合和傳輸的系統是非常沒有說服力的,非常典型的照搬資料,沒有自己的理解。

它是如何做到高可用,高可靠,分布式也需要講一講,這樣才覺得可靠!這就是老劉說的和別人不一樣的地方,真的良心分享!

老劉覺得可以這樣說在一個完整的離線大數據處理系統中,除了hdfs+mapreduce+hive組成分析系統的核心之外,還需要數據採集、結果數據導出、任務調度等不可或缺的輔助系統,而這些輔助工具在hadoop生態體系中都有便捷的開源框架。

其中,flume就是一個日誌採集、聚合和傳輸系統的開源框架,它的高可用、高可靠、分布式這些特點,一般都是通過部署多個伺服器,然後在每個伺服器上部署flume agent模式形成的,並且flume通過事務機制保證了數據傳輸的完整性和準確性,flume事務在後面講。

flume的概念就講這麼多,這樣說的目的主要是不想讓大家照搬機構資料的內容,自己多想想,要有自己的理解

2、flume架構

看到這個架構圖,老劉直接先說說flume是怎麼工作的?

外部數據源以特定格式向flume發送events事件,當source接收到events時,它將其存儲到一個或多個channel,channel會一直保存events直到它被sink消費。sink的主要功能是從channel中讀取events,並將其存入外部存儲系統或轉發到下一個source,成功後再從channe移除events。

接著講講各個組件agent、source、channe、sink。

agent

它是一個JVM進程,它以事件的形式將數據從源頭送至目的。

source

它是一個採集組件,用來獲取數據。

channel

它是一個傳輸通道組件,用來緩存數據,用於從將source的數據傳遞到sink。

sink

它是一個下沉組件,它將數據發送給最終的存儲系統或者下一個agent。

3、flume事務

flume事務是非常非常重要的,之前就說過通過flume事務,實現了傳輸數據的完整性和準確性。

先看看這張圖:

flume它有兩個事務,分別是put事務、take事務。

put事務的步驟分為兩步:

doput,它先將此數據寫入到臨時緩衝區putlist裡面;

docommit,它會去檢查channel裡面有沒有空位置,如果有空位置就會傳入數據;如果channel裡面沒有空位置,那就會把數據回滾到putlist裡面。

take事務也分為兩步:

dotake,它會將數據讀取到臨時緩衝區takelist,並把數據傳到hdfs上;

docommit,它會去判斷數據是否上傳成功,若成功那麼就會清除臨時緩衝區takelist裡的數據;若不成功,比如hdfs發生崩潰啥的,那就會回滾數據到channel裡面。

通過講述兩個事務的步驟,是不是就知道了為什麼flume會保證傳輸數據的完整和準確。

老劉總結一下就是,數據在傳輸到下一個節點時,假設接收節點出現異常,比如網絡異常之類的,那就會回滾這一批數據,因此就會導致數據重發。

那在同一個節點內,source寫入數據到channel,數據在一個批次內出現異常,那就會不寫入到channel中,已經接收到的部分數據會被直接拋棄,靠上一個節點重發數據。

通過這兩個事務,flume就提高了數據傳輸的完整性、準確性。

4、flume實戰

這部分是flume最重要的,作為一個日誌採集框架,flume的應用比它的概念還要重要,一定要知道flume要怎麼用!老劉最開始壓根就沒看這部分,光看知識點了,現在才發現實戰的重要性!

但是flume實戰案例數不勝數,我們難道要記住每一個案例嗎?

當然不是,這個flume案例我們可以根據官網裡的配置文件進行配置,如下圖:

看左下角藍色方框裡的內容,就可以查詢到相關配置文件。在這裡老劉有句話說,如果想學習一個新的框架,咱們的學習資料就是官網,通過官網學習,不僅能提升技術,還能提高英語,且不美滋滋!

現在開始講案例,就講講採集文件到HDFS,需求就是監控一個文件如果有新增的內容就把數據採集到HDFS上。

根據官網資料,flume配置文件開發需要在flume安裝目錄下創建一個文件夾,後期存放flume開發的配置文件。

根據需求的描述,source的配置應該選擇為exec;為了保證數據不丟失,channel的配置應該選擇file;sink的配置應該選擇為hdfs。

這樣雖然已滿足需求,但是我們做數據開發,肯定會存在非常多的小文件,一定要做相關的優化。例如,文件小,文件多怎麼解決?文件目錄多怎麼解決?

所以我們還要選擇一些參數來控制參數和目錄。

# Name the components on this agenta1.sources = r1a1.sinks = k1a1.channels = c1#配置source#指定source的類型為exec,通過unix命令來傳輸結果數據a1.sources.r1.type = exec#監控這個文件,有新的數據產生就不斷採集a1.sources.r1.command = tail -F /opt/bigdata/flumeData/tail.log#指定source的數據流入到channel中a1.sources.r1.channels = c1#配置channel#選擇file,就是保證數據不丟失,即使出現火災或者洪災a1.channels.c1.type = file#設置檢查點目錄--該目錄是記錄下event在數據目錄下的位置a1.channels.c1.checkpointDir=/kkb/data/flume_checkpoint#數據存儲所在的目錄a1.channels.c1.dataDirs=/kkb/data/flume_data#配置sinka1.sinks.k1.channel = c1#指定sink類型為hdfsa1.sinks.k1.type = hdfs#指定數據收集到hdfs目錄a1.sinks.k1.hdfs.path = hdfs://node01:9000/tailFile/%Y-%m-%d/%H%M#指定生成文件名的前綴a1.sinks.k1.hdfs.filePrefix = events-#是否啟用時間上的」捨棄」 -->控制目錄 a1.sinks.k1.hdfs.round = true#時間上進行「捨棄」的值# 如 12:10 -- 12:19 => 12:10# 如 12:20 -- 12:29 => 12:20a1.sinks.k1.hdfs.roundValue = 10#時間上進行「捨棄」的單位a1.sinks.k1.hdfs.roundUnit = minute# 控制文件個數#60s或者50位元組或者10條數據,誰先滿足,就開始滾動生成新文件a1.sinks.k1.hdfs.rollInterval = 60a1.sinks.k1.hdfs.rollSize = 50a1.sinks.k1.hdfs.rollCount = 10#每個批次寫入的數據量a1.sinks.k1.hdfs.batchSize = 100#開始本地時間戳--開啟後就可以使用%Y-%m-%d去解析時間a1.sinks.k1.hdfs.useLocalTimeStamp = true#生成的文件類型,默認是Sequencefile,可用DataStream,則為普通文本a1.sinks.k1.hdfs.fileType = DataStream02 flume細節的總結

老劉這次講了flume的四個容易被忽略的細節,就是想提醒自學的小夥伴們要注意細節,絕對不能完全照搬資料上說的內容,對每個知識點一定要有自己的理解。

希望能夠對大數據開發感興趣的同學有幫助,希望能夠得到同學們的指導。

如果覺得寫的不錯,給老劉點個讚!

相關焦點

  • Flume系列 (二)Flume的實際操作--增量寫入Hive--自定義攔截器完成數據過濾--數據傳入kafka消費
    寫在前面: 我是「nicedays」,一枚喜愛做特效,聽音樂,分享技術的大數據開發猿
  • flume部署安裝以及案例運行
    基本認識:大數據階段數據的收集來源, flume的收集數據一般是日誌,比如:網站日誌flume是一個分布式的,可靠的,可用的flume可以做離線也可以做實時分析collecting --》source --》數據採集來源aggregating --》channel --》數據臨時緩存(只要數據被move
  • 很多繪畫初學者容易忽略的細節
    審美,才是繪畫學習中的授人予魚        2. 繪畫新手容易犯得10個錯誤        3. 零基礎學畫畫應該從哪開始?        ..       戳這裡 → 愛蜜乾貨文章目錄        雖然,很多問題三言兩語講不完,但是我們可以一點一點的消化呀!
  • 魔獸世界懷舊服5大最容易被玩家忽略的細節!最後一個千萬不能碰
    不過面懷舊服很多玩家還沒有做好準備,還有一些細節內容甚至老玩家都忽略了。兔子提前為大家科普懷舊服最容易被玩家忽略的5大細節!獵人想發家致富可要認真看第三個內容,最後一個細節大家千萬不要碰很多玩家表示最後真可怕。
  • 這五個容易忽略的細節沒做好,娃很難受
    事實上,無論寶寶是用紙尿褲還是尿布,只要照顧不周,忽略了一些細節,都會引起紅屁股。穿紙尿褲的寶寶,只要護理得當,也不會紅屁屁。但是有些寶寶皮膚格外嬌嫩敏感,受到一點點刺激就會紅起來,需要父母加倍精心護理。
  • 仲春、晚春釣魚,容易忽略的3個細節,更值得研究!
    像釣魚人口口相傳的或釣魚節目紀錄片中所展示的大魚,基本是都是春季斬獲的,這都說明春季相對其他季節相比,有明顯的優勢。而關鍵的問題在於幾個重要因素的作用。首先是水溫的影響。仲春、晚春水溫處於冬季、夏季之間,溫度適宜,對於北方常見的鯽魚、鯉魚而言,是再適合不過的,魚的活性增強,四處遊弋、覓食。
  • 『老爸老媽的浪漫史』中有哪些容易忽略的細節?
    雖然完結已久,每隔一段時間,我還是會點開一集HIMYM,還是會跟著大笑,也會發現更多有趣的細節。今天的內容來自知乎問題:《老爸老媽的浪漫史》中有哪些容易忽略的細節?小白免給大家精選了幾條答案,並獲得了轉載許可。
  • 男女交往中,總是容易忽略另一半的星座,腦迴路一般人讀不懂!
    更多時候其實這是因為自身的性格原因,導致有些時候沒能夠照顧到對方,而在感情中忽略了對方,引起了另一半的不滿。那麼在星座中,有哪些星座的人,是這樣的呢? 所以金牛座在日常的工作中,總是專注於工作,心中很少有其他的事情。除非是生活中遇到了非常大的事情,讓金牛感覺非常的棘手。
  • 金牛座:最容易被人忽略的4大缺點,第三個太真實
    每一個人都有缺點,其中的一部分會被我們自己發現並加以改變。誠然,有的人缺點很多卻不自知,即使周圍人都知道自己的缺點,也敵不過自我感覺良好。12個星座中,每一個都有各自的優點和缺點,讓我們一起來看看金牛座人最容易被忽略的幾個缺點!
  • 皮克斯《頭腦特工隊》,這幾個很酷的彩蛋和容易被忽略的細節
    這是一部值得一遍又一遍看的電影,當你這樣做的時候,你會開始注意到電影中的一些很酷的小細節,和一些有趣的彩蛋。當然,在初次看電影的時候,你想必不會出注意這些,這也是為何,讓我們一起來看看,這部電影中,究竟隱藏了哪些有趣的細節和彩蛋吧。
  • 精靈寶可夢:新無印第23集,容易被忽略的細節,快龍表現不錯
    導讀:上一篇文章,咱大致介紹了《寶可夢新無印》動畫中,寶可夢迷最關心的兩個問題。但是,除了找出偷寶可夢食物的罪魁禍首,以及誰完成進化的問題之外。還有些容易被忽略,卻也很重要的細節問題。本文,咱們就一一解讀。
  • 《明星大偵探》中讓人忽略的小細節,與周杰倫有關,簡直細思極恐
    《明星大偵探》中讓人忽略的小細節,與周杰倫有關,簡直細思極恐不知道大家最近有沒有看《明星大偵探》第四季,小編最近一直都有在追這個綜藝節目,節目中很多的嘉賓都是小編通過這個節目逐漸粉上的,小編喜歡上了活潑可愛的鬼鬼、美麗大方的王鷗、狗頭偵探撒貝寧、還有聰明的,讓人隨時都想懟一下的魏大勳
  • 自學鋼琴要小心入「坑」!
    每一個決定要自學的人不過,怎麼說呢,想自學,總比不學要優秀的多。 那自學的時候,肯定會遇到很多困難,還會踩很多坑,那就一起來看看,你學鋼琴,踩過多少坑吧? 自學最容易踩的就是手型的坑。你剛開始可能覺得沒什麼大用,但是當你因為你的壞習慣,開始拖拍、搶拍、節奏不準的時候,就開始意識到,原來自己的拍子不準!最直接的方式就是找一些準確的視頻,聽正確的版本,聯繫準確的節拍,才能改正錯誤。隨著鋼琴越來越廣泛的普及,越來越多的孩子、大人都有更多的機會接觸到這門技藝,其中有不少成人都選擇自學鋼琴。其實對成年人來說,自學鋼琴也不是不可以,只是要注意別走進這幾個學習誤區。
  • 為什麼不建議自學吉他?3個特點決定自學吉他的上限
    吉他可以自學嗎?答案肯定是可以的,其他樂器也一樣可以。自學吉他和找一個好的老師學吉他有什麼區別?區別大嗎?我個人覺得,非常大。說說我個人感覺自學和找老師學的區別吧本人學吉他十年了,開始和我老師學過一小段時間,後面都是自學。我相信有非常多自學的朋友都應該有一個共同的特點,那就是基本功差,樂理差,專業音樂知識匱乏。
  • 化眼妝時容易被忽略的細節,很多女生不在意,難怪眼妝不好看
    隨著時代的進步,化妝已經成為了大多數人掌握的技能,不僅僅是女生懂化妝,不少男生對化妝也是有所了解的。說到化妝,相信大家都知道眼妝的重要性,如果眼妝化不好,那可是會影響到整體妝容效果的。有很多女生都覺得眼妝很難化,經過一段時間了解之後,綿綿發現了一些化眼妝時容易被忽略的細節。
  • 《熊出沒》中最容易被人忽略的四位美女,最後一位再也不會出現了
    熊出沒是一部非常多小朋友喜愛的動畫片,在國內眾多的家庭電視中無時無刻在重複播放熊出沒,因為家裡面的小孩似乎看了十幾遍熊出沒的重複鏡頭,他們都絲毫沒有感到厭倦,反而是越看越精神,究竟是什麼在不斷得吸引小孩子,網友:「或許是裡面的美女可愛角色。」
  • 入門速成,自學鋼琴的4個「坑」
    不過,怎麼說呢,想自學,總比不學要優秀的多。 那自學的時候,肯定會遇到很多困難,還會踩很多坑,那就一起來看看,你學鋼琴,踩過多少坑吧? 自學最容易踩的就是手型的坑。,但是方法是前提很多自學鋼琴人,都不知道樂理是什麼,我學鋼琴,直接彈就是了,為什麼還要學習這種理論呢?
  • 軍事題材的作品很容易讓熱血沸騰,也容易忽略細節
    不要忽略細節 ——簡評電視劇《DA師》重新觀看經典電視劇《DA師》,儘管是近20年前的作品,以今天的眼光,仍然感覺很震憾。而同樣作為曾經的軍人,我為劇中幾個細節處理不當而惋惜。其一,《中國人民解放軍內務條令》明文規定:「軍人不得到地方的酒吧、網吧……等場所消費娛樂。」「軍人不得酗酒……」,而吳義文、趙梓明、龍凱峰等作為軍隊的師、團職領導幹部,卻身著軍裝,赫然出現的韓百川的酒樓裡,為了一個師長職位明爭暗鬥,酗酒滋事。
  • 《三十而已》容易被忽略的細節分析,國產劇做到這份上不得了
    ;鍾曉芹(毛曉彤 飾)和陳嶼(楊玏 飾)的「合租式」婚姻讓人窒息。接下來我們來分析一下截止到目前這部劇裡容易被忽略的細節。01 片頭解讀不同於以往國產劇把高能劇情剪輯成片頭,《三十而已》用的是純CG動畫。
  • 一部容易被忽略的優秀動作電影——《領袖水準》
    今天聊聊電影《領袖水準》。