聊聊自學大數據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的四個容易被忽略的細節,就是想提醒自學的小夥伴們要注意細節,絕對不能完全照搬資料上說的內容,對每個知識點一定要有自己的理解。

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

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

相關焦點

  • 中臺有數,保障有譜——大數據技術支撐蘇寧818
    大促保障的痛點大促是考驗電商後臺系統能力的試金場,面對著成千上萬的消費者搶購流量,系統壓力瞬間增大,為了避免系統被流量衝垮,電商系統經歷了從滿足日常業務的系統設計模式到滿足高並發的系統架構模式的轉變,系統架構越來越複雜。大促過程中如何保障系統穩定、快速獲取流量峰值和熱點、快速獲取和匯總相關業務數據便成了大促過程中新的痛點問題。
  • 小花仙中容易被忽略的3個王子,紫蘇上榜,西蒙很厲害
    在小花仙中,出現的角色最多的就是花仙精靈王,這其中既有鎮守花之法典的50位強大的花仙精靈王,還有在花之法典之外的精靈王,如曼達,靡,還有勿忘我精靈王穆回等精靈王,可你知道在小花仙中都有哪些王子嗎?而且這裡面還有幾個王子很容易被忽略,下面火箭筒和大家一起來聊聊他們吧。
  • 仲春、晚春釣魚,容易忽略的3個細節,更值得研究!
    像釣魚人口口相傳的或釣魚節目紀錄片中所展示的大魚,基本是都是春季斬獲的,這都說明春季相對其他季節相比,有明顯的優勢。而關鍵的問題在於幾個重要因素的作用。首先是水溫的影響。仲春、晚春水溫處於冬季、夏季之間,溫度適宜,對於北方常見的鯽魚、鯉魚而言,是再適合不過的,魚的活性增強,四處遊弋、覓食。
  • 百度發布「龍抬頭」搜索大數據:理髮熱度激增300%,男性是自學理髮...
    百度發布的「龍抬頭」搜索大數據顯示:隨著龍抬頭的到來,「理髮」搜索熱度較節前增長了300%。但因為受疫情的影響,去理髮店理髮成為了一件困難的事,於是各種自學理髮的工具和教學視頻成為了大家的熱搜對象。搜索大數據顯示,近七天,「理髮工具」、「理髮教學視頻」等關鍵詞的搜索熱度上漲了200%。受疫情影響,全國多地持續關停人員密集場所,多地居民聚集區也實行封閉式管理。居家隔離式生活讓網友遇到了新難題:「疫情期間理髮店什麼時候開門」「有上門理髮服務App嗎?」「理髮會被傳染新冠肺炎嗎?」
  • 拳擊可以自學?不存在的!
    世上聰明的人有很多,聰明的人的一大表現就是他們的自學能力,一個自學能力強的人,吸收新的東西很快,學習也很高效,不過,不是所有的東西都能自學的。拳擊,是一項運動,也是一門技術,那拳擊究竟能不能自學成才?究竟有沒有自學拳擊的「土壤」?「自學拳擊」,算得上熱門話題,似乎還充滿爭議。
  • 精靈寶可夢:新無印第23集,容易被忽略的細節,快龍很明智
    導讀:在之前的文章,咱大致介紹了《寶可夢新無印》動畫中,寶可夢迷最關心的兩個問題。但是,除了找出偷寶可夢食物的罪魁禍首,以及誰完成進化的問題之外。還有些容易被忽略,卻很重要的細節問題,那就是小智的寶可夢們終於聚齊了。本文,咱們就一一解讀。
  • 皮克斯《頭腦特工隊》,這幾個很酷的彩蛋和容易被忽略的細節
    這是一部值得一遍又一遍看的電影,當你這樣做的時候,你會開始注意到電影中的一些很酷的小細節,和一些有趣的彩蛋。當然,在初次看電影的時候,你想必不會出注意這些,這也是為何,讓我們一起來看看,這部電影中,究竟隱藏了哪些有趣的細節和彩蛋吧。
  • 精靈寶可夢:新無印第23集,容易被忽略的細節,快龍表現不錯
    導讀:上一篇文章,咱大致介紹了《寶可夢新無印》動畫中,寶可夢迷最關心的兩個問題。但是,除了找出偷寶可夢食物的罪魁禍首,以及誰完成進化的問題之外。還有些容易被忽略,卻也很重要的細節問題。本文,咱們就一一解讀。
  • 補腎的人,絕大部分都忽略了1個重要的細節
    其中「藏精」主要體現在人體先天之精藏於腎,腎主骨、生髓、充腦從而促進人的生長、發育,成年以後的生殖問題也與腎有直接關係;腎主水,與人體的水液代謝關係密切;腎主納氣,這一功能的發揮能夠防止呼吸表淺。而人們常說的「元氣」,也是由腎中精氣所化生,元氣飽滿人就精氣神兒十足,元氣大傷就表示已經傷到「根」了。人是否長壽,也與腎臟關係密切,正如《醫學正傳》所言:「腎氣盛則壽延, 腎氣衰則壽夭」。
  • 數據可視化系列:那些被你忽略的坐標軸設計細節
    在數據可視化中,最常用的坐標西分為笛卡爾坐標系和極坐標系,本文介紹的坐標軸設計主要也是圍繞直角坐標系展開,enjoy~什麼是坐標軸在說坐標軸之前先來介紹下什麼是坐標系。坐標系是能夠使每個數組在維度空間內找到映射關係的定位系統,更偏向數學/物理概念。
  • 《咒術回戰》第9話:新OP,五條悟便裝,還有幾個容易忽略的細節
    第9話用開頭幾分鐘快速交代了少年順平被校園欺凌的背景,欺凌他的三名同學因為在電影院中大聲喧譁被突然出現的真人無情殺害。 事件發生後,虎杖悠仁和七海建人組隊前往電影院調查案件,並在樓頂天台遭遇了兩個身份不明的咒靈,在與咒靈戰鬥的過程中,原社畜七海發出了「勞動就是狗屎」的名言,並以一句「枕邊脫落的頭髮變多了,喜歡吃的夾心麵包從便利店消失了,這些小小的絕望堆砌起來,才會讓人長大」引發了無數打工人的共鳴。
  • 哪些人不適合自學CPA?
    在報名CPA後很多人都會糾結自己是自學還是選擇培訓?CPA的考試難度相信大家都是有所了解的,並且CPA備考需要長期堅持,下面學姐和大家一起看看cpa自學過的概率大嗎?自學CPA需要哪些書籍? cpa自學過的概率大嗎?
  • 王俊凱微電影正式上線,扮演機器人大秀演技,幾個細節一定不能忽略
    原以為扮演機器人只要抓住面無表情和平平談談的語氣這兩點就好,卻沒想到王俊凱隨所出演的這個角色並沒有想像中那麼簡單。王俊凱不僅將編號2020機器人前後心理的轉變給表現出來,而且他有很多細節將這個機器人塑造得更加完美。王俊凱扮演機器人大秀演技,這幾個細節一定不能忽略。很多人對王俊凱的演技存在一定的疑慮,這一次王俊凱所飾演的機器人讓不少人改變了對他的看法。
  • 《三十而已》容易被忽略的細節分析,國產劇做到這份上不得了
    童瑤飾演的顧佳率先出圈;江疏影飾演的王漫妮讓人心疼;鍾曉芹(毛曉彤 飾)和陳嶼(楊玏 飾)的「合租式」婚姻讓人窒息。三種女性,對應三種人生。除此之外,本劇在細節方面下了很多心思。接下來我們來分析一下截止到目前這部劇裡容易被忽略的細節。
  • 是不是忽略了這3個細節
    日語,屬於扶餘語系,母語使用人數有1億2500萬人,使用人數佔世界人口總數的1.6%,關於日語的起源是一個爭論不休的問題,但有一點不得不承認,那就是在三國時期,漢字傳入日本,並且在唐代時日本人發明了通行於女性之間的假名,官文為文言文,所以現代日語受古代漢語的影響非常大,以《例解國語辭典》為例,
  • 三國殺中最容易被忽略的技能:第一個你絕對被忽略過,老手從不說
    #三國殺移動版#還有老夫忽略過的技能這不就尷尬了麼,這就是大部分新手經常忽略的地方。有很多近在咫尺的武將,當你喝了酒想狠狠給他致命一擊的時候。咦,為什麼殺出不來?這時候真的很難受對不對?那兒我們首先來看看有哪些武將在距離上有先天的優勢吧。NO.1 西涼大軍自帶-1馬馬術:鎖定技,你計算與其他角色的距離-1。
  • 零基礎的人,日語適合自學嗎
    日語適合自學嗎日語當時是可以自學的。但是作為一個過來的人的角度簡單地說幾句:自學自然是可以的,畢竟現在信息如此發達,有很多免費的視頻,或者錄播什麼的。可是自學的話你需要明確的知道幾點。1、自學的人口語交流基本為零,也比較容易走彎路,碰到困難的時候沒有人幫你解答,糾正你所犯的錯誤。2、語言「領悟」能力差點的,不喜歡思考的人!自學真的不適合你,真的。如何知道你適不適合自學呢?五十音看看多久能記住,就像我們的a,o,e。英語的a,b,c。
  • 再看《逃出絕命鎮》容易被忽略了的細節,你注意到了嗎?
    《逃出絕命鎮》是2017年上映的一部小成本電影,而且贏得了票房口碑的「雙豐收」,可以說這部新晉導演喬丹·皮爾的處女作也讓主創團隊一鳴驚人,大放異彩。影片中不難發現美式恐怖片中的傳統元素,不過最凸顯的元素還是種族主義。
  • NBA複賽遙遙無期,我們來聊聊籃球和大數據
    但不喜歡看球的程式設計師不是一個好分析師,所以今天要和大家聊聊籃球和大數據。NBA可以說是世界籃球精英的匯集地,每一支球隊都有他的歷史與傳奇。而位於矽谷的金州勇士隊是過去幾年NBA聯盟中最成功的球隊之一,雖然本賽季因各種原因墊底聯盟,但各種跡象表明這也許是短暫的,甚至有可能是一種技術退守的「障眼法」。
  • 3d遊戲建模可以自學嗎?學軟體操作都是次要的,自學想入行只怕是有...
    ,就算你自學了段時間也可以來查漏補缺,紮實基礎。遊戲建模學習資料包 其二,培訓班的老師會即時指導你,幫你指出錯誤進行修改,很大一部分人在自學的時候遇見問題翻遍全網都找不到解決辦法